<?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>66383</bug_id>
          
          <creation_ts>2011-08-17 09:20:08 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add a basic engine to control the content of the viewport</short_desc>
          <delta_ts>2011-08-19 07:56:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</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, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452286</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-17 09:20:08 -0700</bug_when>
    <thetext>Currently the content can move freely in the viewport, that should be fixed.

The content should
-stay in the viewport boundaries
-respect the zoom boundaries

This is the base to build kinetic scrolling, the animations, etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452290</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-17 09:26:50 -0700</bug_when>
    <thetext>Please make it possible to change the visible viewport (useful when showing virtual keyboard etc) and add a proper bounce back (from zoom as well).

QWebInteractionEngine :-) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452371</commentid>
    <comment_count>2</comment_count>
      <attachid>104195</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-17 11:05:59 -0700</bug_when>
    <thetext>Created attachment 104195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452376</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 11:08:36 -0700</bug_when>
    <thetext>Attachment 104195 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:149:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>452377</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-17 11:09:11 -0700</bug_when>
    <thetext>Don&apos;t worry about the style bot...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452393</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-17 11:22:44 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Please make it possible to change the visible viewport (useful when showing virtual keyboard etc) and add a proper bounce back (from zoom as well).

Changing the visible viewport-&gt;we should add it when we need it.

Proper bounce back-&gt;follow up patch. I wanted something simple and improve little by little.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452420</commentid>
    <comment_count>6</comment_count>
      <attachid>104195</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-17 11:36:50 -0700</bug_when>
    <thetext>Comment on attachment 104195
Patch

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

Just a few initial comments

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Add ViewportMotionEngine to handle the content of the viewport. The class make
&gt; +        sure the QTouchWebPage stays in the viewport and in the boundaries.

With the description is sounds like like it deals with the interaction and not just the motion.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42
&gt;&gt; +    void _q_commitScaleChange();
&gt; 
&gt; _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]

We should fix the style bot to ignore _q_ :-)

&gt; Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:67
&gt; +    ViewportMotionEngine::Constraints newConstraints;

Nice name... though it doesnt really apply to the devicePixelRatio. Btw do we need that on the ui side at all?

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:40
&gt; +// Updating content value causes the notify signals to be sent.

Send from where? Can that be made more clear?

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:44
&gt; +// The guard make sure the signal contentChangedInViewport() is sent if necessary.

I am not sure that I like that signal name

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:52
&gt; +        , originalPosition(viewportMotionEngine-&gt;m_content-&gt;pos())

original? Isnt it more like previousPosition. Original sounds like initial.

currentPosition?

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:201
&gt; +void ViewportMotionEngine::updateContentIfNecessary()

That name is a bit confusing... it sounds like relayouting/repaining the contents. updateContentPropertiesIfNecessary?  Why not if *Needed*

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:233
&gt; +void ViewportMotionEngine::animateContentPositionToBoundaries()

How does this work in combination with scale? ie. bounceback? Could they be dealt with similarity? maybe one code path

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:71
&gt; +    void contentChangedInViewport();

It is not really the content that changed, but some interaction was done with the content. It is also more the item containing the content that was manipulated.

Ah I see further down that I might be wrong and this responds to both changes in the content size but also user manipulation. Finding a good name for this is hard.

So basically here we have contentSizeChanged and contentRepresentationChanged.

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:97
&gt; +    enum UserInteractionFlag {

why not just &quot;UserInteractionFlag { NoUserInteraction, UserPositionInteraction, UserScaleInteraction;  ...

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:99
&gt; +        UserHasMovedContent = 1,

HasPositionedContent?

&gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:108
&gt; +inline bool operator==(const ViewportMotionEngine::Constraints&amp; lhs, const ViewportMotionEngine::Constraints&amp; rhs)

a, b ? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452612</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-17 14:45:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Add ViewportMotionEngine to handle the content of the viewport. The class make
&gt; &gt; +        sure the QTouchWebPage stays in the viewport and in the boundaries.
&gt; 
&gt; With the description is sounds like like it deals with the interaction and not just the motion.

Fair. Let&apos;s go for &quot;ViewportInteractionEngine&quot; unless someone come up with a better name during the night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452950</commentid>
    <comment_count>8</comment_count>
      <attachid>104322</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 04:38:13 -0700</bug_when>
    <thetext>Created attachment 104322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452951</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 04:40:44 -0700</bug_when>
    <thetext>Attachment 104322 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:149:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>452956</commentid>
    <comment_count>10</comment_count>
      <attachid>104322</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-18 04:45:29 -0700</bug_when>
    <thetext>Comment on attachment 104322
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Add ViewportMotionEngine to handle the content of the viewport. The class make

Wrong name

&gt; Source/WebKit2/UIProcess/API/qt/qtouchwebview_p.h:46
&gt; +    ViewportInteractionEngine interactionEngine;

Isn&apos;t this very Qt specific? Should it be prefixed with Qt ?

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.h:109
&gt; +    return (a.initialScale == b.initialScale &amp;&amp; a.minimumScale == b.minimumScale &amp;&amp; a.maximumScale == b.maximumScale
&gt; +            &amp;&amp; a.isUserScalable == b.isUserScalable);

I guess the ()&apos;s are not needed. I would put each &amp;&amp; on a separate line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452957</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 04:46:38 -0700</bug_when>
    <thetext>Second attempt.



&gt; Please make it possible to change the visible viewport (useful when showing virtual keyboard etc) and add a proper bounce back (from zoom as well).

&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:233
&gt; &gt; +void ViewportMotionEngine::animateContentPositionToBoundaries()
&gt; 
&gt; How does this work in combination with scale? ie. bounceback? Could they be dealt with similarity? maybe one code path

Yep I should do that but that will be for a follow up.


&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:44
&gt; &gt; +// The guard make sure the signal contentChangedInViewport() is sent if necessary.
&gt; 
&gt; I am not sure that I like that signal name

The trick here is this class is written entirely without references to WebKit, it is manipulating the QSGItem directly.

So the content is never &quot;pixel values&quot; in this context.

&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.cpp:201
&gt; &gt; +void ViewportMotionEngine::updateContentIfNecessary()
&gt; 
&gt; That name is a bit confusing... it sounds like relayouting/repaining the contents. updateContentPropertiesIfNecessary?  Why not if *Needed*

Ditto. (fixed the IfNeeded though).



&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:97
&gt; &gt; +    enum UserInteractionFlag {
&gt; 
&gt; why not just &quot;UserInteractionFlag { NoUserInteraction, UserPositionInteraction, UserScaleInteraction;  ...
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportMotionEngine.h:99
&gt; &gt; +        UserHasMovedContent = 1,
&gt; 
&gt; HasPositionedContent?

I think the current enums are a lot easier to read. E.g.:
    if (!(m_userInteractionFlags &amp; UserHasMovedContent)) {
VS
    if (!(m_userInteractionFlags &amp; UserPositionInteraction)) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452962</commentid>
    <comment_count>12</comment_count>
      <attachid>104325</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 04:50:48 -0700</bug_when>
    <thetext>Created attachment 104325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452965</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 04:58:49 -0700</bug_when>
    <thetext>Attachment 104325 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:149:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>452976</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-08-18 05:44:51 -0700</bug_when>
    <thetext>Random comments:

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

&gt; Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:37
&gt; +    setTransformOrigin(TopLeft);

A comment explaining the purpose could help future readers.

&gt; Source/WebKit2/UIProcess/qt/QtPanGestureRecognizer.cpp:78
&gt; +        m_viewportInteractionEngine-&gt;panGestureRequestScroll(offsetSinceLastEvent.x(), offsetSinceLastEvent.y());

If the viewport interaction will be the one responsible of translating &quot;forces&quot; into scroll offset, then I&apos;d prefer having its input called RequestUpdate like with the pinch recognizer.

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:31
&gt; +static inline QRectF visibleRectInContentCoordinate(const QSGItem* item, const QSGItem* viewport)
&gt; +{
&gt; +    const QRectF viewportInItemCoordinate = item-&gt;mapRectFromItem(viewport, viewport-&gt;boundingRect());
&gt; +    const QRectF visibleArea = item-&gt;boundingRect().intersected(viewportInItemCoordinate);

item -&gt; content?

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:35
&gt; +static inline QRectF contentRectInViewportCoordinate(const QSGItem* item, const QSGItem* viewport)

ditto?

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:40
&gt; +// Updating content value causes the notify signals to be sent by the content item itself.

&quot;values&quot; or &quot;a content value&quot;.

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:112
&gt; +    if (m_content-&gt;scale() != previousScale)
&gt; +        emit commitScaleChange();

This may cause nasty side effects until we have suspend working, but I guess we can live with it.

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:207
&gt; +    emit commitScaleChange();

Shouldn&apos;t you check that you aren&apos;t currently between pinch start and pinch end here?
Just explain me if I&apos;m missing something.

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.h:63
&gt; +    void pinchGestureRequestUpdate(const QPointF&amp;, qreal);

Would be nice not to strip the argument names in the header here, they aren&apos;t obvious from the method name and argument types. Readability nitpicks.

&gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.h:69
&gt; +    void contentChangedInViewport();

Saying that the content changed is ambiguous, this sounds like the page layout changed.
contentTransformChanged wouldn&apos;t include the size changed, and contentGeometryChanged wouldn&apos;t include the scale change.
Could also be contentViewChanged or something along this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452977</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-18 05:46:56 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.h:69
&gt; &gt; +    void contentChangedInViewport();
&gt; 
&gt; Saying that the content changed is ambiguous, this sounds like the page layout changed.
&gt; contentTransformChanged wouldn&apos;t include the size changed, and contentGeometryChanged wouldn&apos;t include the scale change.
&gt; Could also be contentViewChanged or something along this.

I totally agree with this being confusing/ambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452982</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 06:03:58 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:112
&gt; &gt; +    if (m_content-&gt;scale() != previousScale)
&gt; &gt; +        emit commitScaleChange();
&gt; 
&gt; This may cause nasty side effects until we have suspend working, but I guess we can live with it.

I am not aware of this. What is the problem?


&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:207
&gt; &gt; +    emit commitScaleChange();
&gt; 
&gt; Shouldn&apos;t you check that you aren&apos;t currently between pinch start and pinch end here?
&gt; Just explain me if I&apos;m missing something.

The trick is ViewportInteractionEngine::contentScaleChanged() is never called by us, it is called in response to the signals from QTouchWebPage.

The two slots contentGeometryChanged() and contentScaleChanged() are there to maintain consistency of the viewport in the case &quot;someone&quot;(TM) set the values for us.

One example is the page resize, which is out of the control of the viewport.

So since the events already happened, we also emit the signals to keep the state consistency of the client.

&gt; &gt; Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.h:69
&gt; &gt; +    void contentChangedInViewport();
&gt; 
&gt; Saying that the content changed is ambiguous, this sounds like the page layout changed.
&gt; contentTransformChanged wouldn&apos;t include the size changed, and contentGeometryChanged wouldn&apos;t include the scale change.
&gt; Could also be contentViewChanged or something along this.

So my argument was the class is handling SGItem, not something with actual content.

But we can use a better name if someone find one. As you said, contentTransformChanged() and contentGeometryChanged() don&apos;t cut it, and I don&apos;t really the value of contentViewChanged() VS contentChangedInViewport().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452986</commentid>
    <comment_count>17</comment_count>
      <attachid>104331</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 06:08:21 -0700</bug_when>
    <thetext>Created attachment 104331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452987</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-18 06:09:10 -0700</bug_when>
    <thetext>
&gt; But we can use a better name if someone find one. As you said, contentTransformChanged() and contentGeometryChanged() don&apos;t cut it, and I don&apos;t really the value of contentViewChanged() VS contentChangedInViewport().

contentTransformAndGeometryChanged?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452989</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 06:11:22 -0700</bug_when>
    <thetext>Attachment 104331 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:152:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>453003</commentid>
    <comment_count>20</comment_count>
      <attachid>104332</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 06:52:16 -0700</bug_when>
    <thetext>Created attachment 104332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453006</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 06:55:50 -0700</bug_when>
    <thetext>Attachment 104332 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:152:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>453032</commentid>
    <comment_count>22</comment_count>
      <attachid>104340</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-18 07:37:00 -0700</bug_when>
    <thetext>Created attachment 104340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453036</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 07:40:19 -0700</bug_when>
    <thetext>Attachment 104340 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/UIProcess/API/qt/qtouchwebview_p.h:38:  _q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebview.cpp:51:  QTouchWebViewPrivate::_q_viewportRectUpdated is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/qt/ViewportInteractionEngine.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp:152:  QTouchWebPagePrivate::_q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h:42:  _q_commitScaleChange is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 26 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>453763</commentid>
    <comment_count>24</comment_count>
      <attachid>104340</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-19 05:39:03 -0700</bug_when>
    <thetext>Comment on attachment 104340
Patch

r=me. Let&apos;s move this forward and worry about perfect signal names later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453815</commentid>
    <comment_count>25</comment_count>
      <attachid>104340</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-19 07:37:45 -0700</bug_when>
    <thetext>Comment on attachment 104340
Patch

Thanks for the reviews Andreas, Jocelyn and Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453829</commentid>
    <comment_count>26</comment_count>
      <attachid>104340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 07:56:40 -0700</bug_when>
    <thetext>Comment on attachment 104340
Patch

Clearing flags on attachment: 104340

Committed r93407: &lt;http://trac.webkit.org/changeset/93407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453830</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 07:56:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104195</attachid>
            <date>2011-08-17 11:05:59 -0700</date>
            <delta_ts>2011-08-18 04:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110817201235.patch</filename>
            <type>text/plain</type>
            <size>47174</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li40YTIzNTAxZWEyNDAyMjVhYjhiYzA3N2ZhZDhmOGI5
YzU5Y2QzZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTcgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0TW90aW9uRW5naW5lIHRvIGhhbmRsZSB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQuIFRo
ZSBjbGFzcyBtYWtlCisgICAgICAgIHN1cmUgdGhlIFFUb3VjaFdlYlBhZ2Ugc3RheXMgaW4gdGhl
IHZpZXdwb3J0IGFuZCBpbiB0aGUgYm91bmRhcmllcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6UVRvdWNoV2ViUGFnZSk6IFNldCB0aGUgdHJhbnNm
b3JtIG9yaWdpbiB0byB0aGUgdG9wIGxlZnQgc28KKyAgICAgICAgd2UgY2FuIGFzdW1lIHRoZSBw
b3NpdGlvbiAwLCAwIGlzIGFsd2F5cyB0aGUgdG9wIGxlZnQgb2YgdGhlIHBhZ2UuCisgICAgICAg
IChRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6X3FfY29tbWl0U2NhbGVDaGFuZ2UpOiBNYWtlIGNvbW1p
dFNjYWxlQ2hhbmdlIGEgc2xvdAorICAgICAgICBpbiBvcmRlciB0byBjb21wbGV0ZWx5IGRlY291
cGxlIHRoZSBWaWV3cG9ydE1vdGlvbkVuZ2luZSBhbmQgdGhlIFdlYktpdCBjbGFzc2VzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjpRVG91
Y2hXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6bG9hZERp
ZENvbW1pdCk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6X3Ffdmlld3BvcnRSZWN0
VXBkYXRlZCk6IE1ha2UgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpIGZvcgorICAgICAgICBkZWNv
dXBsaW5nLgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29u
c3RyYWludHMpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNldFZpZXdwb3J0QXJn
dW1lbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaDogQ2hhbmdlIHRoZSBnZXN0dXJl
IHJlY29nbml6ZXIgdG8gdGFsayBkaXJlY3RseQorICAgICAgICB0byB0aGUgVmlld3BvcnRNb3Rp
b25FbmdpbmUgaW5zdGVhZCBvZiBpbnRlcmFjdGluZyB0aHJvdWdoIFRvdWNoVmlld0ludGVyZmFj
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlF0UGFuR2VzdHVyZVJlY29nbml6ZXI6OlF0UGFuR2VzdHVyZVJlY29n
bml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25p
emUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdlc3R1cmVSZWNv
Z25pemVyKToKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpyZWNv
Z25pemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
UXRXZWJQYWdlUHJveHk6OmxvYWREaWRDb21taXQpOiBBZGQgdGhlIGxvYWRDb21taXRlZCBjYWxs
YmFjayBpbiBvcmRlcgorICAgICAgICB0byByZXNldCB0aGUgdmlld3BvcnQgc3RhdGUgd2hlbiB0
aGUgcGFnZSBjaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6VG91Y2hWaWV3SW50ZXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRDb21taXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvVmlld0ludGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3cG9ydE1v
dGlvbkVuZ2luZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp2aXNpYmxlUmVjdEluQ29u
dGVudENvb3JkaW5hdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb250ZW50UmVjdEluVmlld3BvcnRD
b29yZGluYXRlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRVcGRhdGVHdWFyZDo6Vmlld3Bv
cnRVcGRhdGVHdWFyZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6On5W
aWV3cG9ydFVwZGF0ZUd1YXJkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25Fbmdp
bmU6OlZpZXdwb3J0TW90aW9uRW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rp
b25FbmdpbmU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25FbmdpbmU6
OnNldENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25FbmdpbmU6
OnBhbkdlc3R1cmVTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25Fbmdp
bmU6OnBhbkdlc3R1cmVSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRN
b3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydE1vdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmll
d3BvcnRNb3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3cG9ydE1vdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdwb3J0TW90aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVFbmRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0TW90aW9uRW5naW5lOjpjb250ZW50R2VvbWV0cnlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25FbmdpbmU6OmNvbnRlbnRTY2Fs
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydE1vdGlvbkVuZ2luZTo6dXBkYXRl
Q29udGVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25Fbmdp
bmU6OnVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6Vmll
d3BvcnRNb3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld3BvcnRNb3Rpb25FbmdpbmU6OmFuaW1hdGVDb250ZW50UG9zaXRp
b25Ub0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydE1vdGlvbkVuZ2luZTo6
YW5pbWF0ZUNvbnRlbnRTY2FsZVRvQm91bmRhcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdw
b3J0TW90aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9W
aWV3cG9ydE1vdGlvbkVuZ2luZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRN
b3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzOjpDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHku
Y3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAgKiBX
ZWJLaXQyLnBybzoKKwogMjAxMS0wOC0xNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VGcm9tUGFnZSBkb2VzIG5vdCBoYXZlIGVub3VnaCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggZGRl
NDVhZTQ5NDQ2MDhkNzE3ODcxM2EwY2MxNjk2NWE3YWVkNDFmMy4uYWRjZTgzNjNhMGRhMDY5NjQ5
YWFjN2U4YTdmYTk1MzA2NGNjYzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMTMxLDYgKzEzMSwxMSBAQCB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRCZWdpbigpCiAgICAgZW1pdCBxLT5sb2Fk
U3RhcnRlZCgpOwogfQogCit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21t
aXQoKQoreworICAgIC8vIE5vdCB1c2VkIGZvciBRRGVza3RvcFdlYlZpZXcuCit9CisKIHZvaWQg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN1Y2NlZWQoKQogewogICAgIGVtaXQgcS0+
bG9hZFN1Y2NlZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IGMyZDYwY2Y4YTQ4MTcxOWZjYWZmZmIzOWQwZmZh
MDVjMDg0YTdjYzEuLjhhYjYyNTYwMmE3ZGM4MmFhOTkzZjQwNzFlMzlkNDhkZTJmYjY1NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmll
d19wLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUN1cnNvcihjb25zdCBRQ3Vyc29yJik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRCZWdpbigp
OworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGxv
YWREaWRTdWNjZWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJF
cnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCmlu
ZGV4IDE5NGMxOWMzMDYwNDUxMDE4ZjQ0M2FjZDk4NWU3MTlhZTEyMTlmNGUuLmQ5MTQwN2MwMjAy
MDZjMzFjMGIxZDlhMzFjMjE3MWMxNzM1OWU2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcApAQCAtMzQsNiArMzQsNyBAQCBRVG91
Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKFFTR0l0ZW0qIHBhcmVudCkKICAgICAsIGQobmV3IFFU
b3VjaFdlYlBhZ2VQcml2YXRlKHRoaXMpKQogewogICAgIHNldEZsYWcoSXRlbUhhc0NvbnRlbnRz
KTsKKyAgICBzZXRUcmFuc2Zvcm1PcmlnaW4oVG9wTGVmdCk7CiB9CiAKIFFUb3VjaFdlYlBhZ2U6
On5RVG91Y2hXZWJQYWdlKCkKQEAgLTE0NSw2ICsxNDYsMTEgQEAgUVRvdWNoV2ViUGFnZVByaXZh
dGU6OlFUb3VjaFdlYlBhZ2VQcml2YXRlKFFUb3VjaFdlYlBhZ2UqIHZpZXcpCiB7CiB9CiAKK3Zv
aWQgUVRvdWNoV2ViUGFnZVByaXZhdGU6Ol9xX2NvbW1pdFNjYWxlQ2hhbmdlKCkKK3sKKyAgICBj
b21taXRTY2FsZUNoYW5nZSgpOworfQorCiB2b2lkIFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpjb21t
aXRTY2FsZUNoYW5nZSgpCiB7CiAgICAgcGFnZS0+c2V0Q29udGVudHNTY2FsZShxLT5zY2FsZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
cGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgK
aW5kZXggNjA4Yzc1MzIxM2Y0YTg1MDAwZDkzYjViNWU1NjQ2NjE4MjRhNWI1Zi4uZWZhMDNkNDM0
MzRmYzQ5OGE0MWNhYzJmZGRkOGRhYzNhNTlmMjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgKQEAgLTc4LDYgKzc4LDggQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29u
c3QgUVJlY3RGJik7CiAKIHByaXZhdGU6CisgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV9j
b21taXRTY2FsZUNoYW5nZSgpKTsKKwogICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRlKiBkOwogICAg
IGZyaWVuZCBjbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgV2Vi
S2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaAppbmRleCA2NGRkZDZiODdmNGUzM2YxZGRiOGU4NTg1
YzFiMWRkYzJhNDBiNWYyLi5lZDE3YjBjM2YyZDcwYjhmMmNhMDQ0MjE2MzhjNTgxMjdjYjQ4ODc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZV9wLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZShRVG91Y2hX
ZWJQYWdlUHJveHkqKTsKIAogICAgIHZvaWQgc2V0Vmlld3BvcnRSZWN0KGNvbnN0IFFSZWN0RiYp
OworICAgIHZvaWQgX3FfY29tbWl0U2NhbGVDaGFuZ2UoKTsKICAgICB2b2lkIGNvbW1pdFNjYWxl
Q2hhbmdlKCk7CiAKICAgICBRVG91Y2hXZWJQYWdlKiBjb25zdCBxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAKaW5kZXggOGNmZjdjZmY5
ZTcxMzNiYjU4OWQxNjRmMmUwMzdiYTFkYWNiNDllMC4uZWNkNGJmNDNkMWM2MzI3ZjNlZTE1ZDhm
NDY3N2VkNDI4Zjg3N2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuY3BwCkBAIC0zMywyNyArMzMsMjkgQEAgUVRvdWNoV2ViVmlld1By
aXZhdGU6OlFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpCiAgICAgOiBxKHEp
CiAgICAgLCBwYWdlVmlldyhuZXcgUVRvdWNoV2ViUGFnZShxKSkKICAgICAsIHZpZXdJbnRlcmZh
Y2UocSwgcGFnZVZpZXcuZGF0YSgpKQotICAgICwgcGFnZSgmdmlld0ludGVyZmFjZSwgZGVmYXVs
dFdLQ29udGV4dCgpKQorICAgICwgbW90aW9uRW5naW5lKHEsIHBhZ2VWaWV3LmRhdGEoKSkKKyAg
ICAsIHBhZ2UoJnZpZXdJbnRlcmZhY2UsICZtb3Rpb25FbmdpbmUsIGRlZmF1bHRXS0NvbnRleHQo
KSkKIHsKICAgICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0g
cGFnZVZpZXcuZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7
CisKKyAgICBRT2JqZWN0Ojpjb25uZWN0KCZtb3Rpb25FbmdpbmUsIFNJR05BTChjb250ZW50Q2hh
bmdlZEluVmlld3BvcnQoKSksIHEsIFNMT1QoX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpKSk7Cisg
ICAgUU9iamVjdDo6Y29ubmVjdCgmbW90aW9uRW5naW5lLCBTSUdOQUwoY29tbWl0U2NhbGVDaGFu
Z2UoKSksIHBhZ2VWaWV3LmRhdGEoKSwgU0xPVChfcV9jb21taXRTY2FsZUNoYW5nZSgpKSk7CiB9
CiAKLXZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSkKK3ZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQogewot
ICAgIHBhZ2VWaWV3LT5zZXRYKHBhZ2VWaWV3LT54KCkgKyBkZWx0YVgpOwotICAgIHBhZ2VWaWV3
LT5zZXRZKHBhZ2VWaWV3LT55KCkgKyBkZWx0YVkpOwotICAgIHZpZXdwb3J0UmVjdFVwZGF0ZWQo
KTsKKyAgICBtb3Rpb25FbmdpbmUucmVzZXQoKTsKIH0KIAotdm9pZCBRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6dmlld3BvcnRSZWN0VXBkYXRlZCgpCit2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpf
cV92aWV3cG9ydFJlY3RVcGRhdGVkKCkKIHsKICAgICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29u
c3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcuZGF0YSgpLT5kOwogICAgIGNvbnN0IFFSZWN0
RiB2aWV3cG9ydFJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZSA9IHEtPm1hcFJlY3RUb0l0ZW0ocGFn
ZVZpZXcuZGF0YSgpLCBxLT5ib3VuZGluZ1JlY3QoKSk7CiAgICAgcGFnZVZpZXdQcml2YXRlLT5z
ZXRWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGUpOwogfQogCi12
b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFN0YXRlKCkKK3ZvaWQgUVRv
dWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKQogewogICAgIFFT
aXplIGF2YWlsYWJsZVNpemUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7CiAK
QEAgLTYyLDExICs2NCwxMyBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3
cG9ydFN0YXRlKCkKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyID0gV2Vi
Q29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyh2aWV3cG9ydEFyZ3VtZW50cywgd2tQcmVm
cy0+bGF5b3V0RmFsbGJhY2tXaWR0aCgpLCB3a1ByZWZzLT5kZXZpY2VXaWR0aCgpLCB3a1ByZWZz
LT5kZXZpY2VIZWlnaHQoKSwgd2tQcmVmcy0+ZGV2aWNlRFBJKCksIGF2YWlsYWJsZVNpemUpOwog
Ci0gICAgdmlld3BvcnQuaW5pdGlhbFNjYWxlID0gYXR0ci5pbml0aWFsU2NhbGU7Ci0gICAgdmll
d3BvcnQubWluaW11bVNjYWxlID0gYXR0ci5taW5pbXVtU2NhbGU7Ci0gICAgdmlld3BvcnQubWF4
aW11bVNjYWxlID0gYXR0ci5tYXhpbXVtU2NhbGU7Ci0gICAgdmlld3BvcnQucGl4ZWxSYXRpbyA9
IGF0dHIuZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICB2aWV3cG9ydC5pc1VzZXJTY2FsYWJsZSA9ICEh
YXR0ci51c2VyU2NhbGFibGU7CisgICAgVmlld3BvcnRNb3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRz
IG5ld0NvbnN0cmFpbnRzOworICAgIG5ld0NvbnN0cmFpbnRzLmluaXRpYWxTY2FsZSA9IGF0dHIu
aW5pdGlhbFNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLm1pbmltdW1TY2FsZSA9IGF0dHIubWlu
aW11bVNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLm1heGltdW1TY2FsZSA9IGF0dHIubWF4aW11
bVNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLnBpeGVsUmF0aW8gPSBhdHRyLmRldmljZVBpeGVs
UmF0aW87CisgICAgbmV3Q29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUgPSAhIWF0dHIudXNlclNj
YWxhYmxlOworICAgIG1vdGlvbkVuZ2luZS5zZXRDb25zdHJhaW50cyhuZXdDb25zdHJhaW50cyk7
CiAKICAgICAvLyBPdmVyd3JpdGUgbWluaW11bSBzY2FsZSB2YWx1ZSB3aXRoIGZpdC10by12aWV3
IHZhbHVlLCB1bmxlc3MgdGhlIHRoZSBjb250ZW50IGF1dGhvcgogICAgIC8vIGV4cGxpY2l0bHkg
c2F5cyBuby4gTkI6IFdlIGNhbiBvbmx5IGRvIHRoaXMgd2hlbiB3ZSBrbm93IHdlIGhhdmUgYSB2
YWxpZCBzaXplLCBpZS4KQEAgLTc5LDcgKzgzLDcgQEAgdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0
ZTo6dXBkYXRlVmlld3BvcnRTdGF0ZSgpCiB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpzZXRW
aWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncykK
IHsKICAgICB2aWV3cG9ydEFyZ3VtZW50cyA9IGFyZ3M7Ci0gICAgdXBkYXRlVmlld3BvcnRTdGF0
ZSgpOworICAgIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKIH0KIAogUVRvdWNoV2ViVmll
dzo6UVRvdWNoV2ViVmlldyhRU0dJdGVtKiBwYXJlbnQpCkBAIC0xMDMsOCArMTA3LDggQEAgdm9p
ZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRy
eSwgY29uc3QgUVJlY3RGJiBvbGQKIHsKICAgICBRU0dJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3
R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKICAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9s
ZEdlb21ldHJ5LnNpemUoKSkgewotICAgICAgICBkLT51cGRhdGVWaWV3cG9ydFN0YXRlKCk7Ci0g
ICAgICAgIGQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICAgICAgZC0+dXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50cygpOworICAgICAgICBkLT5fcV92aWV3cG9ydFJlY3RVcGRhdGVkKCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
dmlldy5oCmluZGV4IDQ1MTlkYzhkYjlkMzg1MTJhN2U3Y2I3MTNhMzUzNTBmMDU0ZDkyNzYuLjcw
NjAwMjU0MDEzMWU2MmRmZTI4ZjBmMzVlYzNmMWNmYWM0MDg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCkBAIC00Nyw2ICs0Nyw4IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0
RiYsIGNvbnN0IFFSZWN0RiYpOwogCiBwcml2YXRlOgorICAgIFFfUFJJVkFURV9TTE9UKGQsIHZv
aWQgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpKTsKKwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6
OlRvdWNoVmlld0ludGVyZmFjZTsKICAgICBRVG91Y2hXZWJWaWV3UHJpdmF0ZSAqZDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaApp
bmRleCBiYzFjN2Q0ZmE2MTJhMzZlNGYxODM5YWUyYWM2MDNhODJjNDVkZmFjLi43MDhkYTY5OWJi
ZDA2NWE0MmU5ZGEzZTRiN2RkNjA0N2JkMWQ4Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KICNpbmNsdWRlICJxdG91Y2h3ZWJwYWdlcHJveHkuaCIK
ICNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJWaWV3cG9ydE1vdGlv
bkVuZ2luZS5oIgogCiBjbGFzcyBRVG91Y2hXZWJQYWdlOwogY2xhc3MgUVRvdWNoV2ViVmlldzsK
QEAgLTMzLDMxICszNCwxNiBAQCBjbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZQogcHVibGljOgog
ICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpOwogCi0gICAgdm9pZCBz
Y3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpOwotICAgIHZvaWQgdmlld3BvcnRSZWN0
VXBkYXRlZCgpOwotICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTdGF0ZSgpOworICAgIHZvaWQgbG9h
ZERpZENvbW1pdCgpOworICAgIHZvaWQgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpOworICAgIHZv
aWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydEFy
Z3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncyk7CiAKLSAgICBz
dHJ1Y3QgVmlld3BvcnRTdGF0ZSB7Ci0gICAgICAgIFZpZXdwb3J0U3RhdGUoKQotICAgICAgICAg
ICAgOiBpbml0aWFsU2NhbGUoMS4wKQotICAgICAgICAgICAgLCBtaW5pbXVtU2NhbGUoMC4yNSkK
LSAgICAgICAgICAgICwgbWF4aW11bVNjYWxlKDEuOCkKLSAgICAgICAgICAgICwgcGl4ZWxSYXRp
bygxLjApCi0gICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxlKHRydWUpCi0gICAgICAgIHsgfQot
Ci0gICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsKLSAgICAgICAgcXJlYWwgbWluaW11bVNjYWxl
OwotICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7Ci0gICAgICAgIHFyZWFsIHBpeGVsUmF0aW87
Ci0gICAgICAgIGJvb2wgaXNVc2VyU2NhbGFibGU7Ci0gICAgfSB2aWV3cG9ydDsKLQogICAgIFFU
b3VjaFdlYlZpZXcqIGNvbnN0IHE7CiAgICAgUVNjb3BlZFBvaW50ZXI8UVRvdWNoV2ViUGFnZT4g
cGFnZVZpZXc7CiAgICAgV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2Ugdmlld0ludGVyZmFjZTsK
KyAgICBWaWV3cG9ydE1vdGlvbkVuZ2luZSBtb3Rpb25FbmdpbmU7CiAgICAgUVRvdWNoV2ViUGFn
ZVByb3h5IHBhZ2U7CiAKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFy
Z3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRl
eCAwYzNhMmJlN2ZlMmQxNjZmMGRkNDFmNmQ0OWRlODc5NWUxMDY5NTEwLi5lOTY1NGIzMDVkYTAz
Y2Y0YzliMTUwOGY5NTQ2MDZkYWNiNzIwMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuY3BwCkBAIC05NSw2ICs5NSw3IEBAIHZvaWQgcXRfd2tfZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYg
dXNlCiAgICAgUVVybCBxVXJsID0gdXJsU3RyOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50
SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShj
bGllbnRJbmZvKS0+ZGlkQ2hhbmdlVXJsKHFVcmwpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xp
ZW50SW5mbyktPmxvYWREaWRDb21taXQoKTsKIH0KIAogdm9pZCBxdF93a19kaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCA2NDNmOTJiNDBkYTViN2Nk
ZmFhNmMzZTQyMTE0YzBjZDI5NWE0NzcwLi4xNTkwYTE4OTJmNTZiODY0YTg4MGVlZTJlYzVlYWI4
Zjk5M2E3NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0
dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2Vz
dHVyZVJlY29nbml6ZXIuY3BwCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVF0R2VzdHVyZVJlY29nbml6ZXI6OlF0R2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3
SW50ZXJmYWNlKiB0b3VjaFZpZXdJbnRlcmZhY2UpCi0gICAgOiBtX3RvdWNoVmlld0ludGVyZmFj
ZSh0b3VjaFZpZXdJbnRlcmZhY2UpCitRdEdlc3R1cmVSZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNv
Z25pemVyKFZpZXdwb3J0TW90aW9uRW5naW5lKiBtb3Rpb25FbmdpbmUpCisgICAgOiBtX21vdGlv
bkVuZ2luZShtb3Rpb25FbmdpbmUpCiAgICAgLCBtX3N0YXRlKE5vR2VzdHVyZSkKIHsKLSAgICBB
U1NFUlQodG91Y2hWaWV3SW50ZXJmYWNlKTsKKyAgICBBU1NFUlQobW90aW9uRW5naW5lKTsKIH0K
IAogdm9pZCBRdEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaAppbmRleCAyZGM2MGUwMWQ2NGU3
Mjc0NTA0OGNhMjEzN2ViYTc4Nzk4ZWU0YWU0Li43ZWMwODQyYTFiOWVhZWVjM2MzMmQ3MmI0ZmVm
MGM5ZTYwZmY1ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRH
ZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdl
c3R1cmVSZWNvZ25pemVyLmgKQEAgLTI4LDE0ICsyOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOworY2xhc3MgVmlld3BvcnRNb3Rpb25Fbmdp
bmU7CiAKIGNsYXNzIFF0R2VzdHVyZVJlY29nbml6ZXIgewogcHJvdGVjdGVkOgotICAgIFF0R2Vz
dHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7CisgICAgUXRHZXN0dXJlUmVjb2du
aXplcihWaWV3cG9ydE1vdGlvbkVuZ2luZSopOwogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIFRv
dWNoVmlld0ludGVyZmFjZSogY29uc3QgbV90b3VjaFZpZXdJbnRlcmZhY2U7CisgICAgVmlld3Bv
cnRNb3Rpb25FbmdpbmUqIGNvbnN0IG1fbW90aW9uRW5naW5lOwogICAgIGVudW0gU3RhdGUgewog
ICAgICAgICBOb0dlc3R1cmUsCiAgICAgICAgIEdlc3R1cmVSZWNvZ25pdGlvblN0YXJ0ZWQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2du
aXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2du
aXplci5jcHAKaW5kZXggYmFkZjYwZDdmYTFmY2M3MGMzMzQ3YzA3NWNhMGNiODg4OTgwYTYzMy4u
OTYyNmZjNWM0ODViNzcwOTBiNDhmNzEwYjI5YmNlNWI0NGI2MzU0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcApA
QCAtMjMsMTUgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KICNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlF0UGFuR2VzdHVyZVJlY29nbml6
ZXIuaCIKIAotI2luY2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIlZpZXdw
b3J0TW90aW9uRW5naW5lLmgiCiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1RdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpRdFBhbkdlc3R1cmVSZWNvZ25pemVy
KFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDogUXRHZXN0dXJl
UmVjb2duaXplcih0b3VjaFZpZXdJbnRlcmZhY2UpCitRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpR
dFBhbkdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0TW90aW9uRW5naW5lKiBtb3Rpb25FbmdpbmUp
CisgICAgOiBRdEdlc3R1cmVSZWNvZ25pemVyKG1vdGlvbkVuZ2luZSkKIHsKICAgICByZXNldCgp
OwogfQpAQCAtNDUsNyArNDYsNyBAQCBib29sIFF0UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29n
bml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgLy8gSGF2aW5nIG11bHRpcGxlIHRv
dWNoIHBvaW50cyBjYW5jZWwgdGhlIHBhbm5pbmcgZ2VzdHVyZS4KICAgICBpZiAoZXZlbnQtPnRv
dWNoUG9pbnRzKCkuc2l6ZSgpID4gMSkgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJl
UmVjb2duaXplZCkKLSAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJl
Q2FuY2VsbGVkKCk7CisgICAgICAgICAgICBtX21vdGlvbkVuZ2luZS0+cGFuR2VzdHVyZUNhbmNl
bGxlZCgpOwogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtNjgsMTggKzY5LDE4IEBAIGJvb2wgUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXpl
KGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgICAgIG1fc3RhdGUgPSBHZXN0dXJlUmVjb2duaXplZDsKLSAgICAgICAgICAg
IG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJlU3RhcnRlZCgpOworICAgICAgICAgICAg
bV9tb3Rpb25FbmdpbmUtPnBhbkdlc3R1cmVTdGFydGVkKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCk7CiAgICAgICAgIC8vIE9mZnNl
dCBzZW50IHRvIHRoZSB2aWV3cyBtdXN0IGJlIGluIHBhZ2UgdmlldyBjb29yZGluYXRlIHNwYWNl
LgogICAgICAgICBRUG9pbnRGIG9mZnNldFNpbmNlTGFzdEV2ZW50KHRvdWNoUG9pbnQucG9zKCkg
LSB0b3VjaFBvaW50Lmxhc3RQb3MoKSk7Ci0gICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5w
YW5HZXN0dXJlUmVxdWVzdFNjcm9sbChvZmZzZXRTaW5jZUxhc3RFdmVudC54KCksIG9mZnNldFNp
bmNlTGFzdEV2ZW50LnkoKSk7CisgICAgICAgIG1fbW90aW9uRW5naW5lLT5wYW5HZXN0dXJlUmVx
dWVzdFNjcm9sbChvZmZzZXRTaW5jZUxhc3RFdmVudC54KCksIG9mZnNldFNpbmNlTGFzdEV2ZW50
LnkoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIFFFdmVudDo6VG91
Y2hFbmQ6CiAgICAgICAgIGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKSB7Ci0gICAg
ICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGFuR2VzdHVyZUVuZGVkKCk7CisgICAgICAg
ICAgICBtX21vdGlvbkVuZ2luZS0+cGFuR2VzdHVyZUVuZGVkKCk7CiAgICAgICAgICAgICByZXNl
dCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDgw
Nzk1OTM0N2MyNzIzZmYxMTlmODM0ODJmMTNkMzUwNzM5OGUxN2YuLmRjNmQxM2JkOGQ2MDc3OWY3
YTEwNzVlNjhiODRiM2ZkNTU5N2M2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjb25z
dCBxcmVhbCBwYW5uaW5nSW5pdGlhbFRyaWdnZXJEaXN0YW5jZVRocmVzaG9sZCA9IDUuOwogCiBj
bGFzcyBRdFBhbkdlc3R1cmVSZWNvZ25pemVyIDogcHJpdmF0ZSBRdEdlc3R1cmVSZWNvZ25pemVy
IHsKIHB1YmxpYzoKLSAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFj
ZSopOworICAgIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIoVmlld3BvcnRNb3Rpb25FbmdpbmUqKTsK
ICAgICBib29sIHJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCopOwogICAgIHZvaWQgcmVzZXQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0
dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBmOWQ1ZTcxZTQxOTEzMDg0NTRjMzA1NmY2Y2ZhYjAx
MTgzOGExYjg2Li41MGMzNmRjMmZiMDA2ZGU2MWZmYmFkNWY2ODgxNjRjYzRmZGQwOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlF0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIgogCi0jaW5jbHVkZSAiVG91Y2hWaWV3
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRNb3Rpb25FbmdpbmUuaCIKICNpbmNsdWRl
IDxRdENvcmUvUUxpbmVGPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDggKzQ5LDggQEAg
c3RhdGljIGlubGluZSBRUG9pbnRGIGNvbXB1dGVUb3VjaENlbnRlcihjb25zdCBRVG91Y2hFdmVu
dDo6VG91Y2hQb2ludCYgcG9pbnQxLAogICAgIHJldHVybiAocG9pbnQxLnBvcygpICsgcG9pbnQy
LnBvcygpKSAvIDIuMGY7CiB9CiAKLVF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQot
ICAgIDogUXRHZXN0dXJlUmVjb2duaXplcih0b3VjaFZpZXdJbnRlcmZhY2UpCitRdFBpbmNoR2Vz
dHVyZVJlY29nbml6ZXI6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydE1vdGlvbkVu
Z2luZSogbW90aW9uRW5naW5lKQorICAgIDogUXRHZXN0dXJlUmVjb2duaXplcihtb3Rpb25Fbmdp
bmUpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBRdFBpbmNoR2Vz
dHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAg
Y29uc3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyA9IGV2ZW50
LT50b3VjaFBvaW50cygpOwogICAgIGlmICh0b3VjaFBvaW50cy5zaXplKCkgPCAyKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKQotICAgICAgICAgICAgbV90b3Vj
aFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAgICAgICBtX21vdGlv
bkVuZ2luZS0+cGluY2hHZXN0dXJlRW5kZWQoKTsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBRdFBpbmNoR2VzdHVy
ZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgICAg
ICAgICAgICAgaWYgKHBpbmNoRGlzdGFuY2UgPCBwaW5jaEluaXRpYWxUcmlnZ2VyRGlzdGFuY2VU
aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gR2VzdHVyZVJlY29nbml6ZWQ7Ci0gICAgICAgICAgICAgICAgbV90b3Vj
aFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKTsKKyAgICAgICAgICAgICAgICBt
X21vdGlvbkVuZ2luZS0+cGluY2hHZXN0dXJlU3RhcnRlZCgpOwogCiAgICAgICAgICAgICAgICAg
Ly8gV2UgcmVzZXQgdGhlIGluaXRpYWwgcG9zaXRpb24gdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
IGluIG9yZGVyIHRvIGF2b2lkIHRoZSBqdW1wIGNhdXNlZAogICAgICAgICAgICAgICAgIC8vIGJ5
IHNraXBwaW5nIGFsbCB0aGUgZXZlbnRzIGJldHdlZW4gdGhlIGJlZ2lubmluZyBhbmQgd2hlbiB0
aGUgdGhyZXNob2xkIGlzIGhpdC4KQEAgLTExMCwxNCArMTEwLDE0IEBAIGJvb2wgUXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgY29uc3QgcXJlYWwgaW5pdGlhbFNwYW5EaXN0YW5jZSA9IFFMaW5lRihtX3BvaW50
MS5pbml0aWFsU2NyZWVuUG9zaXRpb24sIG1fcG9pbnQyLmluaXRpYWxTY3JlZW5Qb3NpdGlvbiku
bGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yID0gY3Vy
cmVudFNwYW5EaXN0YW5jZSAvIGluaXRpYWxTcGFuRGlzdGFuY2U7CiAgICAgICAgICAgICBjb25z
dCBRUG9pbnRGIHRvdWNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUgPSBjb21wdXRlVG91Y2hD
ZW50ZXIocG9pbnQxLCBwb2ludDIpOwotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2Ut
PnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0
ZSwgdG90YWxTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBtX21vdGlvbkVuZ2luZS0+cGluY2hH
ZXN0dXJlUmVxdWVzdFVwZGF0ZSh0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCB0b3Rh
bFNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5k
OgogICAgICAgICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkgewotICAgICAgICAg
ICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAgICAg
ICBtX21vdGlvbkVuZ2luZS0+cGluY2hHZXN0dXJlRW5kZWQoKTsKICAgICAgICAgICAgIHJlc2V0
KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oCmluZGV4
IGMzYzk3MTk5NDlhZDQ1ZDk4MWViYzZmNTNhNjcxOTMwMmY0YTBlZGEuLjc3NWY5MWI4M2FhMWFm
NjRmMGQzYWQ5MTE1MzkwMDg4ZTg0ZTY5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTM4LDggKzM4LDYg
QEAgUVRfRU5EX05BTUVTUEFDRQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVG91Y2hW
aWV3SW50ZXJmYWNlOwotCiBjbGFzcyBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIgOiBwcml2YXRl
IFF0R2VzdHVyZVJlY29nbml6ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBUb3VjaFBvaW50SW5m
b3JtYXRpb24gewpAQCAtNTIsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFFQb2ludEYgaW5p
dGlhbFBvc2l0aW9uOwogICAgIH07CiAKLSAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIoVG91
Y2hWaWV3SW50ZXJmYWNlKik7CisgICAgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0
TW90aW9uRW5naW5lKik7CiAgICAgYm9vbCByZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqKTsK
ICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkMGMyY2IzYzJlYTM0NTE2MWEzNWM2OWYxM2VjZDRjMmU1
MzQyNDguLmRkMjc4MWY0Njc5MTgzZjYyMzQxYjAwZmU5YzQ0MDU2MmIwMWIwYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtNDIwLDYg
KzQyMCwxMSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkQmVnaW4oKQogICAgIG1fdmll
d0ludGVyZmFjZS0+bG9hZERpZEJlZ2luKCk7CiB9CiAKK3ZvaWQgUXRXZWJQYWdlUHJveHk6Omxv
YWREaWRDb21taXQoKQoreworICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZENvbW1pdCgpOwor
fQorCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkU3VjY2VlZCgpCiB7CiAgICAgbV92aWV3
SW50ZXJmYWNlLT5sb2FkRGlkU3VjY2VlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBmYTZjMjkxYjU0YzVjMGU4Njc3NWRhMTk3ZjMxMWUz
ZGNkZTJiMTE1Li44ODVmNjdlMzIzM2NhMjZkODZiYTkzNGZkZDZlNWFhNWY0YmVkNDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMTM0LDYg
KzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcm
KTsKIAogICAgIHZvaWQgbG9hZERpZEJlZ2luKCk7CisgICAgdm9pZCBsb2FkRGlkQ29tbWl0KCk7
CiAgICAgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZvaWQgbG9hZERpZEZhaWwoY29uc3Qg
UVdlYkVycm9yJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKaW5k
ZXggMGQ1ZWNkZTU1OGUyZmI3ZjczMzBiOWZjOTAxMzMxYTBmNWIzMzE4YS4uN2E1ZTY2ZDU1YWIw
M2I2MmJhOThlNjk5MDc4NzcxMGNmN2QwMTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKQEAgLTMxLDY2ICszMSwxMSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIFRvdWNoVmlld0ludGVyZmFjZTo6VG91Y2hWaWV3SW50ZXJmYWNl
KFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpCiAg
ICAgOiBtX3ZpZXdwb3J0Vmlldyh2aWV3cG9ydFZpZXcpCiAgICAgLCBtX3BhZ2VWaWV3KHBhZ2VW
aWV3KQotICAgICwgbV9waW5jaFN0YXJ0U2NhbGUoMS5mKQogewogICAgIFFfQVNTRVJUKG1fdmll
d3BvcnRWaWV3KTsKICAgICBRX0FTU0VSVChtX3BhZ2VWaWV3KTsKIH0KIAotdm9pZCBUb3VjaFZp
ZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVTdGFydGVkKCkKLXsKLSAgICAvLyBGSVhNRTogc3VzcGVu
ZCB0aGUgV2ViIGVuZ2luZSAoc3RvcCBhbmltYXRlZCBHSUYsIGV0YykuCi0gICAgLy8gRklYTUU6
IGluaXRpYWxpemUgcGh5c2ljcyBmb3IgcGFubmluZyAoc3RvcCBhbmltYXRpb24sIGV0YykuCi19
Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbChxcmVh
bCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKLXsKLSAgICAvLyBUcmFuc2xhdGUgdGhlIGRlbHRhIGZy
b20gcGFnZSB0byB2aWV3cG9ydCBjb29yZGluYXRlcy4KLSAgICBRUG9pbnRGIGl0ZW1Qb3NpdGlv
bkluSXRlbUNvb3JkcyA9IG1fcGFnZVZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVu
dEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOwotICAgIFFQb2ludEYgZGVzdEluVmlld3BvcnRD
b29yZHMgPSBtX3ZpZXdwb3J0Vmlldy0+bWFwRnJvbUl0ZW0obV9wYWdlVmlldywgaXRlbVBvc2l0
aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOwotICAgIFFQb2ludEYg
b2Zmc2V0SW5WaWV3cG9ydENvb3JkcyA9IGRlc3RJblZpZXdwb3J0Q29vcmRzIC0gbV92aWV3cG9y
dFZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdlVmlldy0+
cG9zKCkpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT5zY3JvbGwob2Zmc2V0SW5WaWV3cG9ydENv
b3Jkcy54KCksIG9mZnNldEluVmlld3BvcnRDb29yZHMueSgpKTsKLX0KLQotdm9pZCBUb3VjaFZp
ZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHRyaWdnZXIg
cGh5c2ljcyBlbmdpbmUgZm9yIGFuaW1hdGlvbiAodGhlIFdlYiBlbmdpbmUgc2hvdWxkIGJlIHJl
c3VtZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4pCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNl
OjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKLXsKLSAgICAvLyBGSVhNRTogcmVzZXQgcGh5c2ljcy4K
LSAgICAvLyBGSVhNRTogcmVzdW1lIHRoZSBXZWIgZW5naW5lLgotfQotCi12b2lkIFRvdWNoVmll
d0ludGVyZmFjZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHN1c3Bl
bmQgdGhlIGVuZ2luZS4KLSAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fcGFnZVZpZXctPnNjYWxl
KCk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBk
YXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUsIHFyZWFs
IHRvdGFsU2NhbGVGYWN0b3IpCi17Ci0gICAgLy8gRklYTUU6IGl0IGlzIGEgbW9yZSBjb21wbGlj
YXRlZCB0aGFuIHRoYXQ6Ci0gICAgLy8gLXRoZSBzY2FsZSBzaG91bGQgYmUgZG9uZSBjZW50ZXJl
ZCBvbiB0aGUgcGluY2ggY2VudGVyLgotICAgIC8vIC1jaGFuZ2VzIG9mIHRoZSBjZW50ZXIgcG9z
aXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZlbiBpZiB0aGUgem9vbSBmYWN0b3IKLSAgICAv
LyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQg
YmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzIGVuZ2luZS4KLSAgICBjb25zdCBxcmVhbCBz
Y2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90YWxTY2FsZUZhY3RvcjsKLSAgICBRUG9pbnRG
IG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX3BhZ2VWaWV3LT5tYXBUb0l0ZW0obV9wYWdlVmll
dy0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlKTsKLSAgICBt
X3BhZ2VWaWV3LT5zZXRTY2FsZShzY2FsZSk7Ci0gICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9u
UGFyZW50ID0gbV9wYWdlVmlldy0+bWFwVG9JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwg
cGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7Ci0gICAgbV9wYWdlVmlldy0+c2V0UG9z
KG1fcGFnZVZpZXctPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENl
bnRlck9uUGFyZW50KSk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1
cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IGNvbW1pdCBzY2FsZSB3aXRoIHRoZSBzY2FsZSB2
YWx1ZSBpbiB0aGUgdmFsaWQgcmFuZ2UgaW4gb3JkZXIgdG8gZ2V0IG5ldyB0aWxlcy4KLSAgICAv
LyBGSVhNRTogYW5pbWF0ZSB0aGUgYmFjayB6b29tIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICAv
LyBGSVhNRTogcmVzdW1lIHRoZSBlbmdpbmUgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4KLSAgICBtX3Bh
Z2VWaWV3LT5kLT5jb21taXRTY2FsZUNoYW5nZSgpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT52
aWV3cG9ydFJlY3RVcGRhdGVkKCk7Ci19Ci0KIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRG
aW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludCYsIGNvbnN0IFFSZWN0JikKIHsKIH0KQEAgLTEx
MSwxNCArNTYsOCBAQCBRU2l6ZSBUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVhU2l6ZSgp
CiAKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmIG5ld1NpemUpCiB7Ci0gICAgLy8gRklYTUU6IHRoZSB2aWV3cG9ydCBzaG91bGQgdGFrZSBj
YXJlIG9mOgotICAgIC8vIC1yZXNpemUgdGhlIHBhZ2UKLSAgICAvLyAtY2hhbmdlIHRoZSB6b29t
IGxldmVsIGlmIG5lZWRlZAotICAgIC8vIC1tb3ZlIHRoZSBwYWdlIGJhY2sgaW4gdmlld3BvcnQg
Ym91bmRhcmllcyBpZiBuZWVkZWQKLSAgICAvLyAtdXBkYXRlIHRoZSB2aWV3cG9ydCByZWN0CiAg
ICAgbV9wYWdlVmlldy0+c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKICAgICBtX3BhZ2VWaWV3
LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV92aWV3cG9ydFZpZXctPmQtPnZp
ZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KIAogYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6OmlzQWN0
aXZlKCkKQEAgLTE3OCw2ICsxMTcsMTEgQEAgdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWRE
aWRCZWdpbigpCiAgICAgZW1pdCBtX3BhZ2VWaWV3LT5sb2FkU3RhcnRlZCgpOwogfQogCit2b2lk
IFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZENvbW1pdCgpCit7CisgICAgbV92aWV3cG9ydFZp
ZXctPmQtPmxvYWREaWRDb21taXQoKTsKK30KKwogdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6Omxv
YWREaWRTdWNjZWVkKCkKIHsKICAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdWNjZWVkZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaApp
bmRleCAzMWZjMjBkNjhiYjNiYjk4YTkxODM1YTkyNDhlMmQ5ZDdhYWI1ZWI4Li45NzI5ZDY3YzE0
MzM1ODQyYmI2MzA4NTllZjI5NGJlNjYwZDYzMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCkBAIC00MCwxNSArNDAsNiBAQCBjbGFz
cyBUb3VjaFZpZXdJbnRlcmZhY2UgOiBwdWJsaWMgVmlld0ludGVyZmFjZQogcHVibGljOgogICAg
IFRvdWNoVmlld0ludGVyZmFjZShRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydFZpZXcsIFFUb3VjaFdl
YlBhZ2UqIHBhZ2VWaWV3KTsKIAotICAgIHZvaWQgcGFuR2VzdHVyZVN0YXJ0ZWQoKTsKLSAgICB2
b2lkIHBhbkdlc3R1cmVSZXF1ZXN0U2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdGFZKTsK
LSAgICB2b2lkIHBhbkdlc3R1cmVFbmRlZCgpOwotICAgIHZvaWQgcGFuR2VzdHVyZUNhbmNlbGxl
ZCgpOwotCi0gICAgdm9pZCBwaW5jaEdlc3R1cmVTdGFydGVkKCk7Ci0gICAgdm9pZCBwaW5jaEdl
c3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmLCBxcmVhbCk7Ci0gICAgdm9pZCBwaW5j
aEdlc3R1cmVFbmRlZCgpOwotCiAgICAgU0dBZ2VudCogc2NlbmVHcmFwaEFnZW50KCkgY29uc3Q7
CiAKIHByaXZhdGU6CkBAIC03Myw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
QmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25z
dCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGlu
dCk7CkBAIC04Niw4ICs3OCw2IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIFFUb3VjaFdlYlZp
ZXcqIGNvbnN0IG1fdmlld3BvcnRWaWV3OwogICAgIFFUb3VjaFdlYlBhZ2UqIGNvbnN0IG1fcGFn
ZVZpZXc7Ci0KLSAgICBxcmVhbCBtX3BpbmNoU3RhcnRTY2FsZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IGQ4NWYxZTU3ZDg0Yzk0
YTJkOTQ2NjA3MjQ5ZDc3OTQ2OWUxYTc3OGMuLjcwYTZmNjM2OGRmNGRkZmQ2MmRiNWMyYmZlODEx
NDA3MDUyMmE3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZh
Y2UuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRC
ZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRE
aWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
TG9hZFByb2dyZXNzKGludCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1ZpZXdwb3J0TW90aW9uRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9WaWV3cG9ydE1vdGlvbkVuZ2luZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyYWIxOTFmY2U0ODI5
NWM2OTQzMDRkNTE2ZjllYTBmNDhkNTcwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydE1vdGlvbkVuZ2luZS5jcHAKQEAgLTAsMCArMSwyODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQmVuamFtaW4gUG91bGFpbiA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJWaWV3cG9ydE1vdGlvbkVuZ2luZS5oIgorCisjaW5j
bHVkZSA8UVBvaW50Rj4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUVJlY3RGIHZpc2libGVSZWN0SW5Db250
ZW50Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBpdGVtLCBjb25zdCBRU0dJdGVtKiB2aWV3cG9y
dCkKK3sKKyAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRJbkl0ZW1Db29yZGluYXRlID0gaXRlbS0+
bWFwUmVjdEZyb21JdGVtKHZpZXdwb3J0LCB2aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCkpOworICAg
IGNvbnN0IFFSZWN0RiB2aXNpYmxlQXJlYSA9IGl0ZW0tPmJvdW5kaW5nUmVjdCgpLmludGVyc2Vj
dGVkKHZpZXdwb3J0SW5JdGVtQ29vcmRpbmF0ZSk7CisgICAgcmV0dXJuIHZpc2libGVBcmVhOwor
fQorCitzdGF0aWMgaW5saW5lIFFSZWN0RiBjb250ZW50UmVjdEluVmlld3BvcnRDb29yZGluYXRl
KGNvbnN0IFFTR0l0ZW0qIGl0ZW0sIGNvbnN0IFFTR0l0ZW0qIHZpZXdwb3J0KQoreworICAgIHJl
dHVybiB2aWV3cG9ydC0+bWFwUmVjdEZyb21JdGVtKGl0ZW0sIGl0ZW0tPmJvdW5kaW5nUmVjdCgp
KTsKK30KKworLy8gVXBkYXRpbmcgY29udGVudCB2YWx1ZSBjYXVzZXMgdGhlIG5vdGlmeSBzaWdu
YWxzIHRvIGJlIHNlbnQuCisvLyBTaW5jZSB3ZSBtYW5hZ2UgdGhvc2UgZGlmZmVyZW50bHksIHdl
IGRvIG5vdCB3YW50IHRvIHJlc3BvbmQKKy8vIHRvIHRoZW0gd2hlbiB3ZSBhcmUgdGhlIG9uZSBj
aGFuZ2luZyB0aGUgY29udGVudC4KKy8vCisvLyBUaGUgZ3VhcmQgbWFrZSBzdXJlIHRoZSBzaWdu
YWwgY29udGVudENoYW5nZWRJblZpZXdwb3J0KCkgaXMgc2VudCBpZiBuZWNlc3NhcnkuCisvLwor
Ly8gVGhlIHB1YmxpYyBtZXRob2RzIHNob3VsZCBjcmVhdGUgdGhlIGd1YXJkIGlmIHRoZXkgbWln
aHQgdXBkYXRlIGNvbnRlbnQuCitjbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkIHsKK3B1YmxpYzoK
KyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkKFZpZXdwb3J0TW90aW9uRW5naW5lKiB2aWV3cG9ydE1v
dGlvbkVuZ2luZSkKKyAgICAgICAgOiB2aWV3cG9ydE1vdGlvbkVuZ2luZSh2aWV3cG9ydE1vdGlv
bkVuZ2luZSkKKyAgICAgICAgLCB3YXNVcGRhdGluZ0NvbnRlbnQodmlld3BvcnRNb3Rpb25Fbmdp
bmUtPm1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAgICAgICwgb3JpZ2luYWxQb3NpdGlvbih2aWV3
cG9ydE1vdGlvbkVuZ2luZS0+bV9jb250ZW50LT5wb3MoKSkKKyAgICAgICAgLCBvcmlnaW5hbFNp
emUodmlld3BvcnRNb3Rpb25FbmdpbmUtPm1fY29udGVudC0+d2lkdGgoKSwgdmlld3BvcnRNb3Rp
b25FbmdpbmUtPm1fY29udGVudC0+aGVpZ2h0KCkpCisgICAgICAgICwgb3JpZ2luYWxTY2FsZSh2
aWV3cG9ydE1vdGlvbkVuZ2luZS0+bV9jb250ZW50LT5zY2FsZSgpKQorICAgIHsKKyAgICAgICAg
dmlld3BvcnRNb3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB0cnVlOworICAgIH0K
KworICAgIH5WaWV3cG9ydFVwZGF0ZUd1YXJkKCkKKyAgICB7CisgICAgICAgIGlmICghd2FzVXBk
YXRpbmdDb250ZW50KSB7CisgICAgICAgICAgICBpZiAob3JpZ2luYWxQb3NpdGlvbiAhPSB2aWV3
cG9ydE1vdGlvbkVuZ2luZS0+bV9jb250ZW50LT5wb3MoKQorICAgICAgICAgICAgICAgICAgICB8
fCBvcmlnaW5hbFNpemUud2lkdGgoKSAhPSB2aWV3cG9ydE1vdGlvbkVuZ2luZS0+bV9jb250ZW50
LT53aWR0aCgpCisgICAgICAgICAgICAgICAgICAgIHx8IG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSAh
PSB2aWV3cG9ydE1vdGlvbkVuZ2luZS0+bV9jb250ZW50LT5oZWlnaHQoKQorICAgICAgICAgICAg
ICAgICAgICB8fCBvcmlnaW5hbFNjYWxlICE9IHZpZXdwb3J0TW90aW9uRW5naW5lLT5tX2NvbnRl
bnQtPnNjYWxlKCkpCisgICAgICAgICAgICAgICAgZW1pdCB2aWV3cG9ydE1vdGlvbkVuZ2luZS0+
Y29udGVudENoYW5nZWRJblZpZXdwb3J0KCk7CisgICAgICAgIH0KKyAgICAgICAgdmlld3BvcnRN
b3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB3YXNVcGRhdGluZ0NvbnRlbnQ7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFZpZXdwb3J0TW90aW9uRW5naW5lKiBjb25zdCB2aWV3cG9y
dE1vdGlvbkVuZ2luZTsKKyAgICBjb25zdCBib29sIHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICBj
b25zdCBRUG9pbnRGIG9yaWdpbmFsUG9zaXRpb247CisgICAgY29uc3QgUVNpemVGIG9yaWdpbmFs
U2l6ZTsKKyAgICBjb25zdCBxcmVhbCBvcmlnaW5hbFNjYWxlOworfTsKKworVmlld3BvcnRNb3Rp
b25FbmdpbmU6OlZpZXdwb3J0TW90aW9uRW5naW5lKGNvbnN0IFFTR0l0ZW0qIHZpZXdwb3J0LCBR
U0dJdGVtKiBjb250ZW50KQorICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKKyAgICAsIG1fY29u
dGVudChjb250ZW50KQorICAgICwgbV9pc1VwZGF0aW5nQ29udGVudChmYWxzZSkKKyAgICAsIG1f
cGluY2hTdGFydFNjYWxlKDEuZikKK3sKKyAgICByZXNldCgpOworICAgIGNvbm5lY3QobV9jb250
ZW50LCBTSUdOQUwoeENoYW5nZWQoKSksIHRoaXMsIFNMT1QoY29udGVudEdlb21ldHJ5Q2hhbmdl
ZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdO
QUwoeUNoYW5nZWQoKSksIHRoaXMsIFNMT1QoY29udGVudEdlb21ldHJ5Q2hhbmdlZCgpKSwgUXQ6
OkRpcmVjdENvbm5lY3Rpb24pOworICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwod2lkdGhD
aGFuZ2VkKCkpLCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJl
Y3RDb25uZWN0aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKGhlaWdodENoYW5n
ZWQoKSksIHRoaXMsIFNMT1QoY29udGVudEdlb21ldHJ5Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENv
bm5lY3Rpb24pOworICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwoc2NhbGVDaGFuZ2VkKCkp
LCB0aGlzLCBTTE9UKGNvbnRlbnRTY2FsZUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9u
KTsKK30KKwordm9pZCBWaWV3cG9ydE1vdGlvbkVuZ2luZTo6cmVzZXQoKQoreworICAgIFZpZXdw
b3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyA9
IFVzZXJIYXNOb3RJbnRlcmFjdGVkV2l0aENvbnRlbnQ7CisgICAgc2V0Q29uc3RyYWludHMoQ29u
c3RyYWludHMoKSk7Cit9CisKK3ZvaWQgVmlld3BvcnRNb3Rpb25FbmdpbmU6OnNldENvbnN0cmFp
bnRzKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAobV9jb25zdHJh
aW50cyA9PSBjb25zdHJhaW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgcXJlYWwg
b3JpZ2luYWxTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICB7CisgICAgICAgIFZpZXdw
b3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgICAgIG1fY29uc3RyYWludHMgPSBjb25z
dHJhaW50czsKKyAgICAgICAgdXBkYXRlQ29udGVudElmTmVjZXNzYXJ5KCk7CisgICAgfQorICAg
IGlmIChtX2NvbnRlbnQtPnNjYWxlKCkgIT0gb3JpZ2luYWxTY2FsZSkKKyAgICAgICAgZW1pdCBj
b21taXRTY2FsZUNoYW5nZSgpOworfQorCit2b2lkIFZpZXdwb3J0TW90aW9uRW5naW5lOjpwYW5H
ZXN0dXJlU3RhcnRlZCgpCit7CisgICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdpbmUg
KHN0b3AgYW5pbWF0ZWQgR0lGLCBldGMpLgorICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBoeXNp
Y3MgZm9yIHBhbm5pbmcgKHN0b3AgYW5pbWF0aW9uLCBldGMpLgorICAgIG1fdXNlckludGVyYWN0
aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVudDsKK30KKwordm9pZCBWaWV3cG9ydE1vdGlv
bkVuZ2luZTo6cGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0
YVkpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKworICAgIFFQb2lu
dEYgaXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRzID0gbV9jb250ZW50LT5tYXBGcm9tSXRlbShtX2Nv
bnRlbnQtPnBhcmVudEl0ZW0oKSwgbV9jb250ZW50LT5wb3MoKSk7CisgICAgUVBvaW50RiBkZXN0
SW5WaWV3cG9ydENvb3JkcyA9IG1fdmlld3BvcnQtPm1hcEZyb21JdGVtKG1fY29udGVudCwgaXRl
bVBvc2l0aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOworCisgICAg
bV9jb250ZW50LT5zZXRQb3MoZGVzdEluVmlld3BvcnRDb29yZHMpOworfQorCit2b2lkIFZpZXdw
b3J0TW90aW9uRW5naW5lOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKK3sKKyAgICBWaWV3cG9ydFVw
ZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgIC8vIEZJWE1FOiByZXNldCBwaHlzaWNzLgorICAg
IHBhbkdlc3R1cmVFbmRlZCgpOworfQorCit2b2lkIFZpZXdwb3J0TW90aW9uRW5naW5lOjpwYW5H
ZXN0dXJlRW5kZWQoKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7Cisg
ICAgYW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRvQm91bmRhcmllcygpOworfQorCit2b2lkIFZpZXdw
b3J0TW90aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKCkKK3sKKyAgICBtX3VzZXJJbnRl
cmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNTY2FsZWRDb250ZW50OworICAgIG1fdXNlckludGVyYWN0
aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVudDsKKyAgICBtX3BpbmNoU3RhcnRTY2FsZSA9
IG1fY29udGVudC0+c2NhbGUoKTsKK30KKwordm9pZCBWaWV3cG9ydE1vdGlvbkVuZ2luZTo6cGlu
Y2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVu
dENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCit7CisgICAgVmlld3BvcnRVcGRh
dGVHdWFyZCBndWFyZCh0aGlzKTsKKworICAgIC8vICBDaGFuZ2VzIG9mIHRoZSBjZW50ZXIgcG9z
aXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZlbiBpZiB0aGUgem9vbSBmYWN0b3IKKyAgICAv
LyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQg
YmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzIGVuZ2luZS4KKyAgICBjb25zdCBxcmVhbCBz
Y2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90YWxTY2FsZUZhY3RvcjsKKyAgICBRUG9pbnRG
IG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQt
PnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAgICBtX2Nv
bnRlbnQtPnNldFNjYWxlKHNjYWxlKTsKKyAgICBRUG9pbnRGIG5ld1BpbmNoQ2VudGVyT25QYXJl
bnQgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgcGluY2hD
ZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRl
bnQtPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFy
ZW50KSk7Cit9CisKK3ZvaWQgVmlld3BvcnRNb3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVk
KCkKK3sKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7Cisg
ICAgICAgIC8vIEZJWE1FOiByZXN1bWUgdGhlIGVuZ2luZSBhZnRlciB0aGUgYW5pbWF0aW9uLgor
ICAgICAgICBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3VuZGFyaWVzKCk7CisgICAgfQorICAgIGlm
IChtX3BpbmNoU3RhcnRTY2FsZSAhPSBtX2NvbnRlbnQtPnNjYWxlKCkpCisgICAgICAgIGVtaXQg
Y29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9pZCBWaWV3cG9ydE1vdGlvbkVuZ2luZTo6Y29u
dGVudEdlb21ldHJ5Q2hhbmdlZCgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZ0NvbnRlbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7Cisg
ICAgdXBkYXRlQ29udGVudElmTmVjZXNzYXJ5KCk7CisKKyAgICAvLyBXZSBtdXN0IG5vdGlmeSB0
aGUgY2hhbmdlIHNvIHRoZSBjbGllbnQgY2FuIHJlbHkgb24gdXMgZm9yIGFsbCBjaGFuZ2Ugb2Yg
R2VvbWV0cnkuCisgICAgZW1pdCBjb250ZW50Q2hhbmdlZEluVmlld3BvcnQoKTsKK30KKwordm9p
ZCBWaWV3cG9ydE1vdGlvbkVuZ2luZTo6Y29udGVudFNjYWxlQ2hhbmdlZCgpCit7CisgICAgaWYg
KG1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFZpZXdwb3J0VXBk
YXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgdXBkYXRlQ29udGVudElmTmVjZXNzYXJ5KCk7CisK
KyAgICAvLyBXZSBtdXN0IG5vdGlmeSB0aGUgY2hhbmdlIHNvIHRoZSBjbGllbnQgY2FuIHJlbHkg
b24gdXMgZm9yIGFsbCBjaGFuZ2Ugb2YgR2VvbWV0cnkuCisgICAgZW1pdCBjb250ZW50Q2hhbmdl
ZEluVmlld3BvcnQoKTsKKyAgICBlbWl0IGNvbW1pdFNjYWxlQ2hhbmdlKCk7Cit9CisKK3ZvaWQg
Vmlld3BvcnRNb3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRJZk5lY2Vzc2FyeSgpCit7CisgICAg
dXBkYXRlQ29udGVudFNjYWxlSWZOZWNlc3NhcnkoKTsKKyAgICB1cGRhdGVDb250ZW50UG9zaXRp
b25JZk5lY2Vzc2FyeSgpOworfQorCit2b2lkIFZpZXdwb3J0TW90aW9uRW5naW5lOjp1cGRhdGVD
b250ZW50U2NhbGVJZk5lY2Vzc2FyeSgpCit7CisgICAgY29uc3QgcXJlYWwgY3VycmVudENvbnRl
bnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICBxcmVhbCBjb250ZW50U2NhbGUgPSBt
X2NvbnRlbnQtPnNjYWxlKCk7CisgICAgaWYgKCEobV91c2VySW50ZXJhY3Rpb25GbGFncyAmIFVz
ZXJIYXNTY2FsZWRDb250ZW50KSkKKyAgICAgICAgY29udGVudFNjYWxlID0gbV9jb25zdHJhaW50
cy5pbml0aWFsU2NhbGU7CisKKyAgICBjb250ZW50U2NhbGUgPSBxQm91bmQobV9jb25zdHJhaW50
cy5taW5pbXVtU2NhbGUsIGNvbnRlbnRTY2FsZSwgbV9jb25zdHJhaW50cy5tYXhpbXVtU2NhbGUp
OworCisgICAgaWYgKGNvbnRlbnRTY2FsZSAhPSBjdXJyZW50Q29udGVudFNjYWxlKSB7CisgICAg
ICAgIGNvbnN0IFFQb2ludEYgY2VudGVyT2ZJbnRlcmVzdCA9IHZpc2libGVSZWN0SW5Db250ZW50
Q29vcmRpbmF0ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLmNlbnRlcigpOworICAgICAgICBzY2Fs
ZUNvbnRlbnQoY2VudGVyT2ZJbnRlcmVzdCwgY29udGVudFNjYWxlKTsKKyAgICB9Cit9CisKK3Zv
aWQgVmlld3BvcnRNb3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVjZXNzYXJ5
KCkKK3sKKyAgICBpZiAoIShtX3VzZXJJbnRlcmFjdGlvbkZsYWdzICYgVXNlckhhc01vdmVkQ29u
dGVudCkpIHsKKyAgICAgICAgbV9jb250ZW50LT5zZXRYKChtX3ZpZXdwb3J0LT53aWR0aCgpIC0g
Y29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLndp
ZHRoKCkpIC8gMik7CisgICAgICAgIG1fY29udGVudC0+c2V0WSgwKTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogaWYgdGhlIGl0ZW0gY2FuIGJlIGZ1bGx5IGluIHRoZSB2aWV3cG9ydCBhbmQgaXMg
b3ZlciBhIHNpZGUsIHB1c2ggaXQgYmFjayBpbiB2aWV3CisgICAgLy8gRklYTUU6IGlmIHRoZSBp
dGVtIGNhbm5vdCBiZSBmdWxseSBpbiB2aWV3cG9ydCwgYW5kIGlzIG5vdCBjb3ZlcmluZyB0aGUg
dmlld3BvcnQsIHB1c2ggaXQgYmFjayBpbiB2aWV3Cit9CisKK3ZvaWQgVmlld3BvcnRNb3Rpb25F
bmdpbmU6OmFuaW1hdGVDb250ZW50UG9zaXRpb25Ub0JvdW5kYXJpZXMoKQoreworICAgIGNvbnN0
IFFSZWN0RiBjb250ZW50R2VvbWV0cnkgPSBtX3ZpZXdwb3J0LT5tYXBSZWN0RnJvbUl0ZW0obV9j
b250ZW50LCBtX2NvbnRlbnQtPmJvdW5kaW5nUmVjdCgpKTsKKyAgICBRUG9pbnRGIG5ld1BvcyA9
IGNvbnRlbnRHZW9tZXRyeS50b3BMZWZ0KCk7CisKKyAgICAvLyBIb3Jpem9udGFsIGNvcnJlY3Rp
b24uCisgICAgaWYgKGNvbnRlbnRHZW9tZXRyeS53aWR0aCgpIDwgbV92aWV3cG9ydC0+d2lkdGgo
KSkKKyAgICAgICAgbmV3UG9zLnNldFgoKG1fdmlld3BvcnQtPndpZHRoKCkgLSBjb250ZW50R2Vv
bWV0cnkud2lkdGgoKSkgLyAyKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbmV3UG9zLnNldFgocU1p
bigwLiwgbmV3UG9zLngoKSkpOworICAgICAgICBjb25zdCBxcmVhbCByaWdodFNpZGVHYXAgPSBt
X3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKS5yaWdodCgpIC0gY29udGVudEdlb21ldHJ5LnJpZ2h0
KCk7CisgICAgICAgIGlmIChyaWdodFNpZGVHYXAgPiAwLikKKyAgICAgICAgICAgIG5ld1Bvcy5z
ZXRYKG5ld1Bvcy54KCkgKyByaWdodFNpZGVHYXApOworICAgIH0KKworICAgIC8vIFZlcnRpY2Fs
IGNvcnJlY3Rpb24uCisgICAgaWYgKGNvbnRlbnRHZW9tZXRyeS5oZWlnaHQoKSA8IG1fdmlld3Bv
cnQtPmhlaWdodCgpKQorICAgICAgICBuZXdQb3Muc2V0WSgwKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbmV3UG9zLnNldFkocU1pbigwLiwgbmV3UG9zLnkoKSkpOworICAgICAgICBjb25zdCBxcmVh
bCBib3R0b21TaWRlR2FwID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCkuYm90dG9tKCkgLSBj
b250ZW50R2VvbWV0cnkuYm90dG9tKCk7CisgICAgICAgIGlmIChib3R0b21TaWRlR2FwID4gMC4p
CisgICAgICAgICAgICBuZXdQb3Muc2V0WShuZXdQb3MueSgpICsgYm90dG9tU2lkZUdhcCk7Cisg
ICAgfQorCisgICAgaWYgKG5ld1BvcyAhPSBtX2NvbnRlbnQtPnBvcygpKQorICAgICAgICAvLyBG
SVhNRTogRG8geW91IGtub3cgd2hhdCBBTklNQVRFIG1lYW5zPworICAgICAgICBtX2NvbnRlbnQt
PnNldFBvcyhuZXdQb3MpOworfQorCit2b2lkIFZpZXdwb3J0TW90aW9uRW5naW5lOjphbmltYXRl
Q29udGVudFNjYWxlVG9Cb3VuZGFyaWVzKCkKK3sKKyAgICBjb25zdCBxcmVhbCBjdXJyZW50U2Nh
bGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgY29uc3QgcXJlYWwgYm91bmRlZFNjYWxlID0g
cUJvdW5kKG1fY29uc3RyYWludHMubWluaW11bVNjYWxlLCBjdXJyZW50U2NhbGUsIG1fY29uc3Ry
YWludHMubWF4aW11bVNjYWxlKTsKKyAgICBpZiAoY3VycmVudFNjYWxlICE9IGJvdW5kZWRTY2Fs
ZSkgeworICAgICAgICAvLyBGSVhNRTogRG8geW91IGtub3cgd2hhdCBBTklNQVRFIG1lYW5zPwor
ICAgICAgICBjb25zdCBRUG9pbnRGIGNlbnRlck9mSW50ZXJlc3QgPSB2aXNpYmxlUmVjdEluQ29u
dGVudENvb3JkaW5hdGUobV9jb250ZW50LCBtX3ZpZXdwb3J0KS5jZW50ZXIoKTsKKyAgICAgICAg
c2NhbGVDb250ZW50KGNlbnRlck9mSW50ZXJlc3QsIGJvdW5kZWRTY2FsZSk7CisgICAgfQorfQor
Cit2b2lkIFZpZXdwb3J0TW90aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYg
Y2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpCit7CisgICAgUVBvaW50RiBv
bGRQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5w
YXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVudC0+
c2V0U2NhbGUoc2NhbGUpOworICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9IG1f
Y29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRl
bnRDb29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0g
KG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Cit9CisK
KyNpbmNsdWRlICJtb2NfVmlld3BvcnRNb3Rpb25FbmdpbmUuY3BwIgorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRNb3Rpb25FbmdpbmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydE1vdGlvbkVuZ2luZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxN2FiNTQ4Mjk2YjU3ZDNjNTQyYjcxZTEzNjdjNzlmZWQ4NDNjN2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRNb3Rpb25FbmdpbmUu
aApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBCZW5qYW1pbiBQ
b3VsYWluIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBWaWV3cG9ydE1vdGlvbkVu
Z2luZV9oCisjZGVmaW5lIFZpZXdwb3J0TW90aW9uRW5naW5lX2gKKworI2luY2x1ZGUgInF3ZWJr
aXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKworUVRfQkVHSU5fTkFNRVNQ
QUNFCitjbGFzcyBRUG9pbnRGOworY2xhc3MgUVNHSXRlbTsKK1FUX0VORF9OQU1FU1BBQ0UKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFZpZXdwb3J0TW90aW9uRW5naW5lIDogcHVibGlj
IFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBWaWV3cG9ydE1vdGlvbkVu
Z2luZShjb25zdCBRU0dJdGVtKiwgUVNHSXRlbSopOworCisgICAgc3RydWN0IENvbnN0cmFpbnRz
IHsKKyAgICAgICAgQ29uc3RyYWludHMoKQorICAgICAgICAgICAgOiBpbml0aWFsU2NhbGUoMS4w
KQorICAgICAgICAgICAgLCBtaW5pbXVtU2NhbGUoMC4yNSkKKyAgICAgICAgICAgICwgbWF4aW11
bVNjYWxlKDEuOCkKKyAgICAgICAgICAgICwgcGl4ZWxSYXRpbygxLjApCisgICAgICAgICAgICAs
IGlzVXNlclNjYWxhYmxlKHRydWUpCisgICAgICAgIHsgfQorCisgICAgICAgIHFyZWFsIGluaXRp
YWxTY2FsZTsKKyAgICAgICAgcXJlYWwgbWluaW11bVNjYWxlOworICAgICAgICBxcmVhbCBtYXhp
bXVtU2NhbGU7CisgICAgICAgIHFyZWFsIHBpeGVsUmF0aW87CisgICAgICAgIGJvb2wgaXNVc2Vy
U2NhbGFibGU7CisgICAgfTsKKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHNldENvbnN0
cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJik7CisKKyAgICB2b2lkIHBhbkdlc3R1cmVTdGFydGVk
KCk7CisgICAgdm9pZCBwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSk7CisgICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7CisgICAgdm9pZCBwYW5H
ZXN0dXJlRW5kZWQoKTsKKworICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRlZCgpOworICAgIHZv
aWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiwgcXJlYWwpOworICAg
IHZvaWQgcGluY2hHZXN0dXJlRW5kZWQoKTsKKworUV9TSUdOQUxTOgorICAgIC8vIFRoaXMgYWdn
cmVnYXRlIGNoYW5nZXMgb2Ygc2NhbGUsIHNpemUgYW5kIHBvc2l0aW9uIGluIG9uZSBzaWduYWwg
dG8gYXZvaWQgZXh0cmEgd29yaworICAgIC8vIGZvciB0aGUgY2xpZW50IG9mIHRoZSBWaWV3cG9y
dE1vdGlvbkVuZ2luZS4KKyAgICB2b2lkIGNvbnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpOworCisg
ICAgdm9pZCBjb21taXRTY2FsZUNoYW5nZSgpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgLy8g
UmVzcG9uZCB0byBjaGFuZ2VzIG9mIGNvbnRlbnQgdGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywg
bGlrZSB0aGUgcGFnZSByZXNpemluZyBpdHNlbGYuCisgICAgdm9pZCBjb250ZW50R2VvbWV0cnlD
aGFuZ2VkKCk7CisgICAgdm9pZCBjb250ZW50U2NhbGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB1cGRhdGVDb250ZW50SWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRTY2FsZUlmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50UG9zaXRpb25JZk5l
Y2Vzc2FyeSgpOworCisgICAgdm9pZCBhbmltYXRlQ29udGVudFBvc2l0aW9uVG9Cb3VuZGFyaWVz
KCk7CisgICAgdm9pZCBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3VuZGFyaWVzKCk7CisKKyAgICB2
b2lkIHNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNvbnRlbnRDb29yZGluYXRl
LCBxcmVhbCBzY2FsZSk7CisKKyAgICBmcmllbmQgY2xhc3MgVmlld3BvcnRVcGRhdGVHdWFyZDsK
KworICAgIGNvbnN0IFFTR0l0ZW0qIGNvbnN0IG1fdmlld3BvcnQ7CisgICAgUVNHSXRlbSogY29u
c3QgbV9jb250ZW50OworCisgICAgQ29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBib29s
IG1faXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgZW51bSBVc2VySW50ZXJhY3Rpb25GbGFnIHsKKyAg
ICAgICAgVXNlckhhc05vdEludGVyYWN0ZWRXaXRoQ29udGVudCA9IDAsCisgICAgICAgIFVzZXJI
YXNNb3ZlZENvbnRlbnQgPSAxLAorICAgICAgICBVc2VySGFzU2NhbGVkQ29udGVudCA9IDIKKyAg
ICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhVc2VySW50ZXJhY3Rpb25GbGFncywgVXNlckludGVy
YWN0aW9uRmxhZyk7CisgICAgVXNlckludGVyYWN0aW9uRmxhZ3MgbV91c2VySW50ZXJhY3Rpb25G
bGFnczsKKworICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOworfTsKKworaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydE1vdGlvbkVuZ2luZTo6Q29uc3RyYWludHMmIGxocywg
Y29uc3QgVmlld3BvcnRNb3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzJiByaHMpCit7CisgICAgcmV0
dXJuIChsaHMuaW5pdGlhbFNjYWxlID09IHJocy5pbml0aWFsU2NhbGUgJiYgbGhzLm1pbmltdW1T
Y2FsZSA9PSByaHMubWluaW11bVNjYWxlICYmIGxocy5tYXhpbXVtU2NhbGUgPT0gcmhzLm1heGlt
dW1TY2FsZQorICAgICAgICAgICAgJiYgbGhzLnBpeGVsUmF0aW8gPT0gcmhzLnBpeGVsUmF0aW8g
JiYgbGhzLmlzVXNlclNjYWxhYmxlID09IHJocy5pc1VzZXJTY2FsYWJsZSk7Cit9CisKK30KKwor
I2VuZGlmIC8qIFZpZXdwb3J0TW90aW9uRW5naW5lX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggOTgyY2I0MGZjOWQ3
YWNjZTBhZDNkZmQ5YmVmY2YzMDY3MTkwNWNmYS4uM2IyYzc3YzZjYTQ2ODMzMTFlM2Q3YjUxOGIx
OWVmYTI1M2MyNDc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0
b3VjaHdlYnBhZ2Vwcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0
b3VjaHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotUVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkoVG91
Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBRV0tDb250ZXh0KiBjb250ZXh0LCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitRVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBh
Z2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFZpZXdwb3J0TW90aW9u
RW5naW5lKiBtb3Rpb25FbmdpbmUsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKICAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UsIGNvbnRl
eHQsIHBhZ2VHcm91cFJlZikKLSAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld0ludGVy
ZmFjZSkKLSAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3SW50ZXJmYWNlKQorICAg
ICwgbV9wYW5HZXN0dXJlUmVjb2duaXplcihtb3Rpb25FbmdpbmUpCisgICAgLCBtX3BpbmNoR2Vz
dHVyZVJlY29nbml6ZXIobW90aW9uRW5naW5lKQogewogICAgIGluaXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAppbmRleCA3OWVi
MGU2NmRlZGJjMjVjYTI2YWJhZGM5NzM0M2IwMjdlYmEyNTdmLi42NDk2MzYxNDU2ODk3MTI1YmIy
MmY0OTIwMjk3OTUzNWUyNjFlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCkBAIC0zMCwxMiArMzAsMTYgQEAKICNpbmNsdWRlICJU
b3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFZpZXdwb3J0TW90aW9uRW5naW5lOworfQorCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBjbGFzcyBRVG91Y2hXZWJQYWdlUHJveHkgOiBwdWJsaWMgUXRX
ZWJQYWdlUHJveHkKIHsKIHB1YmxpYzoKLSAgICBRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3
SW50ZXJmYWNlKiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUVRvdWNo
V2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSosIFZpZXdwb3J0TW90aW9uRW5naW5lKiwg
UVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoUUV2ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggNDRlYmI2OWNkYzJkZGQyNWFh
MTI1ODNhYmRiOTVkZjExMzhjNjI3NC4uMmE5MzFiMjk0Mzg4NzQ4ZDBhYWUyMDBhYjg4NWFiYzA1
OGM1NGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI1Miw2ICsyNTIsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvcXQvU0dBZ2VudC5oIFwKICAgICBVSVByb2Nlc3MvcXQvU0dUaWxlTm9k
ZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oIFwKKyAgICBVSVByb2Nlc3Mv
cXQvVmlld3BvcnRNb3Rpb25FbmdpbmUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21t
YW5kUXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oIFwKQEAgLTQ4Myw2ICs0ODQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQu
Y3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVRpbGVRdC5jcHAgXAogICAg
IFVJUHJvY2Vzcy9xdC9UZXh0Q2hlY2tlclF0LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1ZpZXdw
b3J0TW90aW9uRW5naW5lLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJv
eHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104322</attachid>
            <date>2011-08-18 04:38:13 -0700</date>
            <delta_ts>2011-08-18 04:50:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110818134449.patch</filename>
            <type>text/plain</type>
            <size>47902</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li4yNTg2YTAyOTBjMjJlZTE3NjE5MjY5OGY3ZTEwMTRi
MzAzNDZlYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTggIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0TW90aW9uRW5naW5lIHRvIGhhbmRsZSB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQuIFRo
ZSBjbGFzcyBtYWtlCisgICAgICAgIHN1cmUgdGhlIFFUb3VjaFdlYlBhZ2Ugc3RheXMgaW4gdGhl
IHZpZXdwb3J0IGFuZCBpbiB0aGUgYm91bmRhcmllcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6UVRvdWNoV2ViUGFnZSk6IFNldCB0aGUgdHJhbnNm
b3JtIG9yaWdpbiB0byB0aGUgdG9wIGxlZnQgc28KKyAgICAgICAgd2UgY2FuIGFzdW1lIHRoZSBw
b3NpdGlvbiAwLCAwIGlzIGFsd2F5cyB0aGUgdG9wIGxlZnQgb2YgdGhlIHBhZ2UuCisgICAgICAg
IChRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6X3FfY29tbWl0U2NhbGVDaGFuZ2UpOiBNYWtlIGNvbW1p
dFNjYWxlQ2hhbmdlIGEgc2xvdAorICAgICAgICBpbiBvcmRlciB0byBjb21wbGV0ZWx5IGRlY291
cGxlIHRoZSBWaWV3cG9ydE1vdGlvbkVuZ2luZSBhbmQgdGhlIFdlYktpdCBjbGFzc2VzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjpRVG91
Y2hXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6bG9hZERp
ZENvbW1pdCk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6X3Ffdmlld3BvcnRSZWN0
VXBkYXRlZCk6IE1ha2UgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpIGEgc2xvdAorICAgICAgICBm
b3IgcmVkdWNpbmcgY291cGxpbmcuCisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBk
YXRlVmlld3BvcnRDb25zdHJhaW50cyk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6
c2V0Vmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAoUVRvdWNoV2ViVmlldzo6Z2VvbWV0cnlD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKHF0X3drX2RpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpRdEdlc3R1cmVSZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNvZ25p
emVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oOiBDaGFu
Z2UgdGhlIGdlc3R1cmUgcmVjb2duaXplciB0byB0YWxrIGRpcmVjdGx5CisgICAgICAgIHRvIHRo
ZSBWaWV3cG9ydE1vdGlvbkVuZ2luZSBpbnN0ZWFkIG9mIGludGVyYWN0aW5nIHRocm91Z2ggVG91
Y2hWaWV3SW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJlUmVjb2duaXplcjo6UXRQ
YW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0UGFuR2VzdHVyZVJlY29n
bml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25p
emVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpRdFBp
bmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpRdFBpbmNoR2VzdHVyZVJl
Y29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0
dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1pdCk6IEFkZCB0aGUgbG9h
ZENvbW1pdGVkIGNhbGxiYWNrIGluIG9yZGVyCisgICAgICAgIHRvIHJlc2V0IHRoZSB2aWV3cG9y
dCBzdGF0ZSB3aGVuIHRoZSBwYWdlIGNoYW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpUb3VjaFZpZXdJbnRl
cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmNvbnRlbnRTaXpl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZENv
bW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29u
dGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0
VXBkYXRlR3VhcmQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydFVwZGF0ZUd1YXJkOjp+Vmlld3BvcnRVcGRhdGVHdWFyZCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnN0cmFpbnRzKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZVN0
YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKToKKyAgICAgICAg
KFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVw
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRTY2FsZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50U2NhbGVJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnVw
ZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRvQm91bmRhcmllcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVDb250ZW50
U2NhbGVUb0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5Lmg6CisgICAgICAgICog
V2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zZmVyTG9hZGluZ1Jlc291
cmNlRnJvbVBhZ2UgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCmluZGV4IGRk
ZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmFkY2U4MzYzYTBkYTA2OTY0
OWFhYzdlOGE3ZmE5NTMwNjRjY2MxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTEzMSw2ICsxMzEsMTEgQEAgdm9p
ZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQogICAgIGVtaXQgcS0+bG9h
ZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29t
bWl0KCkKK3sKKyAgICAvLyBOb3QgdXNlZCBmb3IgUURlc2t0b3BXZWJWaWV3LgorfQorCiB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkKIHsKICAgICBlbWl0IHEt
PmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNmOGE0ODE3MTlmY2FmZmZiMzlkMGZm
YTA1YzA4NGE3Y2MxLi44YWI2MjU2MDJhN2RjODJhYTk5M2Y0MDcxZTM5ZDQ4ZGUyZmI2NTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmll
d19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXdfcC5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQmVnaW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBs
b2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBRV2Vi
RXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcApp
bmRleCAxOTRjMTljMzA2MDQ1MTAxOGY0NDNhY2Q5ODVlNzE5YWUxMjE5ZjRlLi5kOTE0MDdjMDIw
MjA2YzMxYzBiMWQ5YTMxYzIxNzFjMTczNTllNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgUVRv
dWNoV2ViUGFnZTo6UVRvdWNoV2ViUGFnZShRU0dJdGVtKiBwYXJlbnQpCiAgICAgLCBkKG5ldyBR
VG91Y2hXZWJQYWdlUHJpdmF0ZSh0aGlzKSkKIHsKICAgICBzZXRGbGFnKEl0ZW1IYXNDb250ZW50
cyk7CisgICAgc2V0VHJhbnNmb3JtT3JpZ2luKFRvcExlZnQpOwogfQogCiBRVG91Y2hXZWJQYWdl
Ojp+UVRvdWNoV2ViUGFnZSgpCkBAIC0xNDUsNiArMTQ2LDExIEBAIFFUb3VjaFdlYlBhZ2VQcml2
YXRlOjpRVG91Y2hXZWJQYWdlUHJpdmF0ZShRVG91Y2hXZWJQYWdlKiB2aWV3KQogewogfQogCit2
b2lkIFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNoYW5nZSgpCit7CisgICAg
Y29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwogdm9pZCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6Y29t
bWl0U2NhbGVDaGFuZ2UoKQogewogICAgIHBhZ2UtPnNldENvbnRlbnRzU2NhbGUocS0+c2NhbGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdl
YnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5o
CmluZGV4IDYwOGM3NTMyMTNmNGE4NTAwMGQ5M2I1YjVlNTY0NjYxODI0YTViNWYuLmVmYTAzZDQz
NDM0ZmM0OThhNDFjYWMyZmRkZDhkYWMzYTU5ZjIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCkBAIC03OCw2ICs3OCw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYsIGNv
bnN0IFFSZWN0RiYpOwogCiBwcml2YXRlOgorICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ff
Y29tbWl0U2NhbGVDaGFuZ2UoKSk7CisKICAgICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogZDsKICAg
ICBmcmllbmQgY2xhc3MgUVRvdWNoV2ViVmlld1ByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdl
YktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKaW5kZXggNjRkZGQ2Yjg3ZjRlMzNmMWRkYjhlODU4
NWMxYjFkZGMyYTQwYjVmMi4uZWQxN2IwYzNmMmQ3MGI4ZjJjYTA0NDIxNjM4YzU4MTI3Y2I0ODg3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJw
YWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2VfcC5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2UoUVRvdWNo
V2ViUGFnZVByb3h5Kik7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0UmVjdChjb25zdCBRUmVjdEYm
KTsKKyAgICB2b2lkIF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCk7CiAgICAgdm9pZCBjb21taXRTY2Fs
ZUNoYW5nZSgpOwogCiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3QgcTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4IDhjZmY3Y2Zm
OWU3MTMzYmI1ODlkMTY0ZjJlMDM3YmExZGFjYjQ5ZTAuLjljYTVkZjc2ODBhYTlhYjljMmE0NmIw
YzI2MDA2M2NiZTg4ZjI5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcApAQCAtMzMsMjcgKzMzLDI5IEBAIFFUb3VjaFdlYlZpZXdQ
cml2YXRlOjpRVG91Y2hXZWJWaWV3UHJpdmF0ZShRVG91Y2hXZWJWaWV3KiBxKQogICAgIDogcShx
KQogICAgICwgcGFnZVZpZXcobmV3IFFUb3VjaFdlYlBhZ2UocSkpCiAgICAgLCB2aWV3SW50ZXJm
YWNlKHEsIHBhZ2VWaWV3LmRhdGEoKSkKLSAgICAsIHBhZ2UoJnZpZXdJbnRlcmZhY2UsIGRlZmF1
bHRXS0NvbnRleHQoKSkKKyAgICAsIGludGVyYWN0aW9uRW5naW5lKHEsIHBhZ2VWaWV3LmRhdGEo
KSkKKyAgICAsIHBhZ2UoJnZpZXdJbnRlcmZhY2UsICZpbnRlcmFjdGlvbkVuZ2luZSwgZGVmYXVs
dFdLQ29udGV4dCgpKQogewogICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRlKiBjb25zdCBwYWdlVmll
d1ByaXZhdGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7CiAgICAgcGFnZVZpZXdQcml2YXRlLT5zZXRQ
YWdlKCZwYWdlKTsKKworICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVyYWN0aW9uRW5naW5lLCBT
SUdOQUwoY29udGVudENoYW5nZWRJblZpZXdwb3J0KCkpLCBxLCBTTE9UKF9xX3ZpZXdwb3J0UmVj
dFVwZGF0ZWQoKSkpOworICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVyYWN0aW9uRW5naW5lLCBT
SUdOQUwoY29tbWl0U2NhbGVDaGFuZ2UoKSksIHBhZ2VWaWV3LmRhdGEoKSwgU0xPVChfcV9jb21t
aXRTY2FsZUNoYW5nZSgpKSk7CiB9CiAKLXZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9s
bChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKK3ZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6
OmxvYWREaWRDb21taXQoKQogewotICAgIHBhZ2VWaWV3LT5zZXRYKHBhZ2VWaWV3LT54KCkgKyBk
ZWx0YVgpOwotICAgIHBhZ2VWaWV3LT5zZXRZKHBhZ2VWaWV3LT55KCkgKyBkZWx0YVkpOwotICAg
IHZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS5yZXNldCgpOwog
fQogCi12b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp2aWV3cG9ydFJlY3RVcGRhdGVkKCkKK3Zv
aWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKQogewogICAg
IFFUb3VjaFdlYlBhZ2VQcml2YXRlKiBjb25zdCBwYWdlVmlld1ByaXZhdGUgPSBwYWdlVmlldy5k
YXRhKCktPmQ7CiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVjdEluUGFnZVZpZXdDb29yZGlu
YXRlID0gcS0+bWFwUmVjdFRvSXRlbShwYWdlVmlldy5kYXRhKCksIHEtPmJvdW5kaW5nUmVjdCgp
KTsKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3RJblBh
Z2VWaWV3Q29vcmRpbmF0ZSk7CiB9CiAKLXZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0
ZVZpZXdwb3J0U3RhdGUoKQordm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50cygpCiB7CiAgICAgUVNpemUgYXZhaWxhYmxlU2l6ZSA9IHEtPmJvdW5kaW5n
UmVjdCgpLnNpemUoKS50b1NpemUoKTsKIApAQCAtNjIsMTEgKzY0LDEyIEBAIHZvaWQgUVRvdWNo
V2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3RhdGUoKQogCiAgICAgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHIgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
KHZpZXdwb3J0QXJndW1lbnRzLCB3a1ByZWZzLT5sYXlvdXRGYWxsYmFja1dpZHRoKCksIHdrUHJl
ZnMtPmRldmljZVdpZHRoKCksIHdrUHJlZnMtPmRldmljZUhlaWdodCgpLCB3a1ByZWZzLT5kZXZp
Y2VEUEkoKSwgYXZhaWxhYmxlU2l6ZSk7CiAKLSAgICB2aWV3cG9ydC5pbml0aWFsU2NhbGUgPSBh
dHRyLmluaXRpYWxTY2FsZTsKLSAgICB2aWV3cG9ydC5taW5pbXVtU2NhbGUgPSBhdHRyLm1pbmlt
dW1TY2FsZTsKLSAgICB2aWV3cG9ydC5tYXhpbXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsK
LSAgICB2aWV3cG9ydC5waXhlbFJhdGlvID0gYXR0ci5kZXZpY2VQaXhlbFJhdGlvOwotICAgIHZp
ZXdwb3J0LmlzVXNlclNjYWxhYmxlID0gISFhdHRyLnVzZXJTY2FsYWJsZTsKKyAgICBWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBuZXdDb25zdHJhaW50czsKKyAgICBuZXdD
b25zdHJhaW50cy5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKKyAgICBuZXdDb25z
dHJhaW50cy5taW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKKyAgICBuZXdDb25zdHJh
aW50cy5tYXhpbXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKKyAgICBuZXdDb25zdHJhaW50
cy5pc1VzZXJTY2FsYWJsZSA9ICEhYXR0ci51c2VyU2NhbGFibGU7CisgICAgaW50ZXJhY3Rpb25F
bmdpbmUuc2V0Q29uc3RyYWludHMobmV3Q29uc3RyYWludHMpOwogCiAgICAgLy8gT3ZlcndyaXRl
IG1pbmltdW0gc2NhbGUgdmFsdWUgd2l0aCBmaXQtdG8tdmlldyB2YWx1ZSwgdW5sZXNzIHRoZSB0
aGUgY29udGVudCBhdXRob3IKICAgICAvLyBleHBsaWNpdGx5IHNheXMgbm8uIE5COiBXZSBjYW4g
b25seSBkbyB0aGlzIHdoZW4gd2Uga25vdyB3ZSBoYXZlIGEgdmFsaWQgc2l6ZSwgaWUuCkBAIC03
OSw3ICs4Miw3IEBAIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3Rh
dGUoKQogdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdmlld3BvcnRBcmd1
bWVudHMgPSBhcmdzOwotICAgIHVwZGF0ZVZpZXdwb3J0U3RhdGUoKTsKKyAgICB1cGRhdGVWaWV3
cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKIFFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcoUVNH
SXRlbSogcGFyZW50KQpAQCAtMTAzLDggKzEwNiw4IEBAIHZvaWQgUVRvdWNoV2ViVmlldzo6Z2Vv
bWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYgb2xk
CiB7CiAgICAgUVNHSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRy
eSk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpIHsK
LSAgICAgICAgZC0+dXBkYXRlVmlld3BvcnRTdGF0ZSgpOwotICAgICAgICBkLT52aWV3cG9ydFJl
Y3RVcGRhdGVkKCk7CisgICAgICAgIGQtPnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKKyAg
ICAgICAgZC0+X3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaAppbmRleCA0NTE5ZGM4
ZGI5ZDM4NTEyYTdlN2NiNzEzYTM1MzUwZjA1NGQ5Mjc2Li43MDYwMDI1NDAxMzFlNjJkZmUyOGYw
ZjM1ZWMzZjFjZmFjNDA4NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuaApAQCAtNDcsNiArNDcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsK
IAogcHJpdmF0ZToKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3ZpZXdwb3J0UmVjdFVw
ZGF0ZWQoKSk7CisKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U7
CiAgICAgUVRvdWNoV2ViVmlld1ByaXZhdGUgKmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKaW5kZXggYmMxYzdkNGZhNjEyYTM2
ZTRmMTgzOWFlMmFjNjAzYTgyYzQ1ZGZhYy4uNzIwMWQ5ZjA1MDYxMzY5MTIxYWY2NzdjNmQ0MTgx
ZGE2NDU1ZWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnZpZXdfcC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8UVNjb3BlZFBvaW50
ZXI+CiAjaW5jbHVkZSAicXRvdWNod2VicGFnZXByb3h5LmgiCiAjaW5jbHVkZSAiVG91Y2hWaWV3
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogCiBj
bGFzcyBRVG91Y2hXZWJQYWdlOwogY2xhc3MgUVRvdWNoV2ViVmlldzsKQEAgLTMzLDMxICszNCwx
NiBAQCBjbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZQogcHVibGljOgogICAgIFFUb3VjaFdlYlZp
ZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpOwogCi0gICAgdm9pZCBzY3JvbGwocXJlYWwgZGVs
dGFYLCBxcmVhbCBkZWx0YVkpOwotICAgIHZvaWQgdmlld3BvcnRSZWN0VXBkYXRlZCgpOwotICAg
IHZvaWQgdXBkYXRlVmlld3BvcnRTdGF0ZSgpOworICAgIHZvaWQgbG9hZERpZENvbW1pdCgpOwor
ICAgIHZvaWQgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpOworICAgIHZvaWQgdXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50cygpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncyk7CiAKLSAgICBzdHJ1Y3QgVmlld3BvcnRT
dGF0ZSB7Ci0gICAgICAgIFZpZXdwb3J0U3RhdGUoKQotICAgICAgICAgICAgOiBpbml0aWFsU2Nh
bGUoMS4wKQotICAgICAgICAgICAgLCBtaW5pbXVtU2NhbGUoMC4yNSkKLSAgICAgICAgICAgICwg
bWF4aW11bVNjYWxlKDEuOCkKLSAgICAgICAgICAgICwgcGl4ZWxSYXRpbygxLjApCi0gICAgICAg
ICAgICAsIGlzVXNlclNjYWxhYmxlKHRydWUpCi0gICAgICAgIHsgfQotCi0gICAgICAgIHFyZWFs
IGluaXRpYWxTY2FsZTsKLSAgICAgICAgcXJlYWwgbWluaW11bVNjYWxlOwotICAgICAgICBxcmVh
bCBtYXhpbXVtU2NhbGU7Ci0gICAgICAgIHFyZWFsIHBpeGVsUmF0aW87Ci0gICAgICAgIGJvb2wg
aXNVc2VyU2NhbGFibGU7Ci0gICAgfSB2aWV3cG9ydDsKLQogICAgIFFUb3VjaFdlYlZpZXcqIGNv
bnN0IHE7CiAgICAgUVNjb3BlZFBvaW50ZXI8UVRvdWNoV2ViUGFnZT4gcGFnZVZpZXc7CiAgICAg
V2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2Ugdmlld0ludGVyZmFjZTsKKyAgICBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lIGludGVyYWN0aW9uRW5naW5lOwogICAgIFFUb3VjaFdlYlBhZ2VQcm94
eSBwYWdlOwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVu
dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggMGMz
YTJiZTdmZTJkMTY2ZjBkZDQxZjZkNDlkZTg3OTVlMTA2OTUxMC4uZTk2NTRiMzA1ZGEwM2NmNGM5
YjE1MDhmOTU0NjA2ZGFjYjcyMDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIHF0X3drX2RpZENvbW1pdExvYWRG
b3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZQog
ICAgIFFVcmwgcVVybCA9IHVybFN0cjsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8p
LT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50
SW5mbyktPmRpZENoYW5nZVVybChxVXJsKTsKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudElu
Zm8pLT5sb2FkRGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgcXRfd2tfZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggNjQzZjkyYjQwZGE1YjdjZGZhYTZj
M2U0MjExNGMwY2QyOTVhNDc3MC4uMWY3Mzc1YTYwM2FlNjJhM2ExNTA0OGUzYjZhZWZiMjZlYzNh
NWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJl
Y29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVS
ZWNvZ25pemVyLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1RdEdlc3R1cmVSZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVy
ZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDogbV90b3VjaFZpZXdJbnRlcmZhY2UodG91
Y2hWaWV3SW50ZXJmYWNlKQorUXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0dXJlUmVjb2duaXpl
cihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQor
ICAgIDogbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKHZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUpCiAgICAgLCBtX3N0YXRlKE5vR2VzdHVyZSkKIHsKLSAgICBBU1NFUlQodG91Y2hWaWV3SW50
ZXJmYWNlKTsKKyAgICBBU1NFUlQodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSk7CiB9CiAKIHZv
aWQgUXRHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMmRjNjBlMDFkNjRlNzI3NDUw
NDhjYTIxMzdlYmE3ODc5OGVlNGFlNC4uYjU1MDY4ZGFlYzYxOTA4YzMxMDdkNmMxMmU0OTAxNmFl
NjY2ODc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVy
ZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJl
UmVjb2duaXplci5oCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFRvdWNoVmlld0ludGVyZmFjZTsKK2NsYXNzIFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU7CiAKIGNsYXNzIFF0R2VzdHVyZVJlY29nbml6ZXIgewogcHJvdGVjdGVkOgotICAgIFF0R2Vz
dHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7CisgICAgUXRHZXN0dXJlUmVjb2du
aXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgdm9pZCByZXNldCgpOwogCi0g
ICAgVG91Y2hWaWV3SW50ZXJmYWNlKiBjb25zdCBtX3RvdWNoVmlld0ludGVyZmFjZTsKKyAgICBW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBjb25zdCBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU7CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIE5vR2VzdHVyZSwKICAgICAgICAgR2VzdHVy
ZVJlY29nbml0aW9uU3RhcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBiYWRmNjBkN2ZhMWZjYzcwYzMz
NDdjMDc1Y2EwY2I4ODg5ODBhNjMzLi5jNzIyMGEwODY0MmVkZDljY2RiMDM3MzhmM2NlMDIwYTc1
YWZjZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0
dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFu
R2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0yMywxNSArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVk
ZSAiUXRQYW5HZXN0dXJlUmVjb2duaXplci5oIgogCi0jaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUg
PFFUb3VjaEV2ZW50PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUXRQYW5HZXN0dXJlUmVjb2du
aXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcihUb3VjaFZpZXdJbnRlcmZhY2UqIHRvdWNoVmll
d0ludGVyZmFjZSkKLSAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIodG91Y2hWaWV3SW50ZXJmYWNl
KQorUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcihWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkKKyAgICA6IFF0R2VzdHVyZVJl
Y29nbml6ZXIoaW50ZXJhY3Rpb25FbmdpbmUpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTQ1LDcg
KzQ2LDcgQEAgYm9vbCBRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRv
dWNoRXZlbnQqIGV2ZW50KQogICAgIC8vIEhhdmluZyBtdWx0aXBsZSB0b3VjaCBwb2ludHMgY2Fu
Y2VsIHRoZSBwYW5uaW5nIGdlc3R1cmUuCiAgICAgaWYgKGV2ZW50LT50b3VjaFBvaW50cygpLnNp
emUoKSA+IDEpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gR2VzdHVyZVJlY29nbml6ZWQpCi0g
ICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGFuR2VzdHVyZUNhbmNlbGxlZCgpOwor
ICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5wYW5HZXN0dXJlQ2FuY2Vs
bGVkKCk7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC02OCwxOCArNjksMTggQEAgYm9vbCBRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUo
Y29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pemVkOwotICAgICAgICAgICAg
bV90b3VjaFZpZXdJbnRlcmZhY2UtPnBhbkdlc3R1cmVTdGFydGVkKCk7CisgICAgICAgICAgICBt
X3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBhbkdlc3R1cmVTdGFydGVkKCk7CiAgICAgICAg
IH0KIAogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCk7CiAgICAg
ICAgIC8vIE9mZnNldCBzZW50IHRvIHRoZSB2aWV3cyBtdXN0IGJlIGluIHBhZ2UgdmlldyBjb29y
ZGluYXRlIHNwYWNlLgogICAgICAgICBRUG9pbnRGIG9mZnNldFNpbmNlTGFzdEV2ZW50KHRvdWNo
UG9pbnQucG9zKCkgLSB0b3VjaFBvaW50Lmxhc3RQb3MoKSk7Ci0gICAgICAgIG1fdG91Y2hWaWV3
SW50ZXJmYWNlLT5wYW5HZXN0dXJlUmVxdWVzdFNjcm9sbChvZmZzZXRTaW5jZUxhc3RFdmVudC54
KCksIG9mZnNldFNpbmNlTGFzdEV2ZW50LnkoKSk7CisgICAgICAgIG1fdmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS0+cGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwob2Zmc2V0U2luY2VMYXN0RXZlbnQu
eCgpLCBvZmZzZXRTaW5jZUxhc3RFdmVudC55KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgogICAgICAgICBpZiAobV9zdGF0ZSA9PSBH
ZXN0dXJlUmVjb2duaXplZCkgewotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBh
bkdlc3R1cmVFbmRlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5l
LT5wYW5HZXN0dXJlRW5kZWQoKTsKICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggODA3OTU5MzQ3YzI3MjNmZjExOWY4
MzQ4MmYxM2QzNTA3Mzk4ZTE3Zi4uNzRiYjc5ZmEyYTZlNTQxMDY0MGVlMzY1ZWM0YmQ4MDU0Yjg2
NGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVy
ZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0
dXJlUmVjb2duaXplci5oCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IHFyZWFsIHBhbm5pbmdJbml0
aWFsVHJpZ2dlckRpc3RhbmNlVGhyZXNob2xkID0gNS47CiAKIGNsYXNzIFF0UGFuR2VzdHVyZVJl
Y29nbml6ZXIgOiBwcml2YXRlIFF0R2VzdHVyZVJlY29nbml6ZXIgewogcHVibGljOgotICAgIFF0
UGFuR2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7CisgICAgUXRQYW5HZXN0
dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgYm9vbCByZWNv
Z25pemUoY29uc3QgUVRvdWNoRXZlbnQqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXpl
ci5jcHAKaW5kZXggZjlkNWU3MWU0MTkxMzA4NDU0YzMwNTZmNmNmYWIwMTE4MzhhMWI4Ni4uM2Fm
ZTc5MzkxM2Y1NzJhYjE1OWUyOTkzMjZmZGRhZDdmN2IzMzBjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJRdFBpbmNo
R2VzdHVyZVJlY29nbml6ZXIuaCIKIAotI2luY2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgor
I2luY2x1ZGUgIlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKICNpbmNsdWRlIDxRdENvcmUv
UUxpbmVGPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDggKzQ5LDggQEAgc3RhdGljIGlu
bGluZSBRUG9pbnRGIGNvbXB1dGVUb3VjaENlbnRlcihjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQ
b2ludCYgcG9pbnQxLAogICAgIHJldHVybiAocG9pbnQxLnBvcygpICsgcG9pbnQyLnBvcygpKSAv
IDIuMGY7CiB9CiAKLVF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdlc3R1cmVSZWNv
Z25pemVyKFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDogUXRH
ZXN0dXJlUmVjb2duaXplcih0b3VjaFZpZXdJbnRlcmZhY2UpCitRdFBpbmNoR2VzdHVyZVJlY29n
bml6ZXI6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KiBpbnRlcmFjdGlvbkVuZ2luZSkKKyAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIoaW50ZXJhY3Rp
b25FbmdpbmUpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBRdFBp
bmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQp
CiAgICAgY29uc3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyA9
IGV2ZW50LT50b3VjaFBvaW50cygpOwogICAgIGlmICh0b3VjaFBvaW50cy5zaXplKCkgPCAyKSB7
CiAgICAgICAgIGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKQotICAgICAgICAgICAg
bV90b3VjaFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAgICAgICBt
X3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CiAgICAgICAg
IHJlc2V0KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05Niw3ICs5Niw3IEBA
IGJvb2wgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZl
bnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIGlmIChwaW5jaERpc3RhbmNlIDwgcGluY2hJbml0
aWFsVHJpZ2dlckRpc3RhbmNlVGhyZXNob2xkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pemVkOwotICAg
ICAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5waW5jaEdlc3R1cmVTdGFydGVkKCk7
CisgICAgICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5waW5jaEdlc3R1
cmVTdGFydGVkKCk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSByZXNldCB0aGUgaW5pdGlhbCBw
b3NpdGlvbiB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24gaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGp1
bXAgY2F1c2VkCiAgICAgICAgICAgICAgICAgLy8gYnkgc2tpcHBpbmcgYWxsIHRoZSBldmVudHMg
YmV0d2VlbiB0aGUgYmVnaW5uaW5nIGFuZCB3aGVuIHRoZSB0aHJlc2hvbGQgaXMgaGl0LgpAQCAt
MTEwLDE0ICsxMTAsMTQgQEAgYm9vbCBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6
ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBjb25zdCBxcmVhbCBpbml0
aWFsU3BhbkRpc3RhbmNlID0gUUxpbmVGKG1fcG9pbnQxLmluaXRpYWxTY3JlZW5Qb3NpdGlvbiwg
bV9wb2ludDIuaW5pdGlhbFNjcmVlblBvc2l0aW9uKS5sZW5ndGgoKTsKICAgICAgICAgICAgIGNv
bnN0IHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IgPSBjdXJyZW50U3BhbkRpc3RhbmNlIC8gaW5pdGlh
bFNwYW5EaXN0YW5jZTsKICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgdG91Y2hDZW50ZXJJblBh
Z2VWaWV3Q29vcmRpbmF0ZSA9IGNvbXB1dGVUb3VjaENlbnRlcihwb2ludDEsIHBvaW50Mik7Ci0g
ICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0
ZSh0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCB0b3RhbFNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGluY2hHZXN0dXJlUmVxdWVz
dFVwZGF0ZSh0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCB0b3RhbFNjYWxlRmFjdG9y
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgogICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkgewotICAgICAgICAgICAgbV90b3VjaFZp
ZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CiAgICAgICAgICAgICByZXNl
dCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaAppbmRl
eCBjM2M5NzE5OTQ5YWQ0NWQ5ODFlYmM2ZjUzYTY3MTkzMDJmNGEwZWRhLi5mYWM3MGU4ZjdkYTgx
NmI3NzhkNzE5ZjUxMTAxYWMwMDY3ZWFjM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oCkBAIC0zOCw4ICszOCw2
IEBAIFFUX0VORF9OQU1FU1BBQ0UKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFRvdWNo
Vmlld0ludGVyZmFjZTsKLQogY2xhc3MgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyIDogcHJpdmF0
ZSBRdEdlc3R1cmVSZWNvZ25pemVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVG91Y2hQb2ludElu
Zm9ybWF0aW9uIHsKQEAgLTUyLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBRUG9pbnRGIGlu
aXRpYWxQb3NpdGlvbjsKICAgICB9OwogCi0gICAgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyKFRv
dWNoVmlld0ludGVyZmFjZSopOworICAgIFF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgYm9vbCByZWNvZ25pemUoY29uc3QgUVRvdWNoRXZl
bnQqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkMGMyY2IzYzJlYTM0NTE2MWEzNWM2OWYxM2Vj
ZDRjMmU1MzQyNDguLmRkMjc4MWY0Njc5MTgzZjYyMzQxYjAwZmU5YzQ0MDU2MmIwMWIwYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAt
NDIwLDYgKzQyMCwxMSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkQmVnaW4oKQogICAg
IG1fdmlld0ludGVyZmFjZS0+bG9hZERpZEJlZ2luKCk7CiB9CiAKK3ZvaWQgUXRXZWJQYWdlUHJv
eHk6OmxvYWREaWRDb21taXQoKQoreworICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZENvbW1p
dCgpOworfQorCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkU3VjY2VlZCgpCiB7CiAgICAg
bV92aWV3SW50ZXJmYWNlLT5sb2FkRGlkU3VjY2VlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBmYTZjMjkxYjU0YzVjMGU4Njc3NWRhMTk3
ZjMxMWUzZGNkZTJiMTE1Li44ODVmNjdlMzIzM2NhMjZkODZiYTkzNGZkZDZlNWFhNWY0YmVkNDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAt
MTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFFT
dHJpbmcmKTsKIAogICAgIHZvaWQgbG9hZERpZEJlZ2luKCk7CisgICAgdm9pZCBsb2FkRGlkQ29t
bWl0KCk7CiAgICAgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZvaWQgbG9hZERpZEZhaWwo
Y29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5j
cHAKaW5kZXggMGQ1ZWNkZTU1OGUyZmI3ZjczMzBiOWZjOTAxMzMxYTBmNWIzMzE4YS4uMWIzNGEz
NDBjMjZmNjU4YzQxZjg3NWU4NjBmMWY2OGNjNDBkYTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKQEAgLTMxLDY2ICszMSwx
MSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFRvdWNoVmlld0ludGVyZmFjZTo6VG91Y2hWaWV3SW50
ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZp
ZXcpCiAgICAgOiBtX3ZpZXdwb3J0Vmlldyh2aWV3cG9ydFZpZXcpCiAgICAgLCBtX3BhZ2VWaWV3
KHBhZ2VWaWV3KQotICAgICwgbV9waW5jaFN0YXJ0U2NhbGUoMS5mKQogewogICAgIFFfQVNTRVJU
KG1fdmlld3BvcnRWaWV3KTsKICAgICBRX0FTU0VSVChtX3BhZ2VWaWV3KTsKIH0KIAotdm9pZCBU
b3VjaFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVTdGFydGVkKCkKLXsKLSAgICAvLyBGSVhNRTog
c3VzcGVuZCB0aGUgV2ViIGVuZ2luZSAoc3RvcCBhbmltYXRlZCBHSUYsIGV0YykuCi0gICAgLy8g
RklYTUU6IGluaXRpYWxpemUgcGh5c2ljcyBmb3IgcGFubmluZyAoc3RvcCBhbmltYXRpb24sIGV0
YykuCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9s
bChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKLXsKLSAgICAvLyBUcmFuc2xhdGUgdGhlIGRl
bHRhIGZyb20gcGFnZSB0byB2aWV3cG9ydCBjb29yZGluYXRlcy4KLSAgICBRUG9pbnRGIGl0ZW1Q
b3NpdGlvbkluSXRlbUNvb3JkcyA9IG1fcGFnZVZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXct
PnBhcmVudEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOwotICAgIFFQb2ludEYgZGVzdEluVmll
d3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0Vmlldy0+bWFwRnJvbUl0ZW0obV9wYWdlVmlldywgaXRl
bVBvc2l0aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOwotICAgIFFQ
b2ludEYgb2Zmc2V0SW5WaWV3cG9ydENvb3JkcyA9IGRlc3RJblZpZXdwb3J0Q29vcmRzIC0gbV92
aWV3cG9ydFZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdl
Vmlldy0+cG9zKCkpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT5zY3JvbGwob2Zmc2V0SW5WaWV3
cG9ydENvb3Jkcy54KCksIG9mZnNldEluVmlld3BvcnRDb29yZHMueSgpKTsKLX0KLQotdm9pZCBU
b3VjaFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHRy
aWdnZXIgcGh5c2ljcyBlbmdpbmUgZm9yIGFuaW1hdGlvbiAodGhlIFdlYiBlbmdpbmUgc2hvdWxk
IGJlIHJlc3VtZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4pCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50
ZXJmYWNlOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKLXsKLSAgICAvLyBGSVhNRTogcmVzZXQgcGh5
c2ljcy4KLSAgICAvLyBGSVhNRTogcmVzdW1lIHRoZSBXZWIgZW5naW5lLgotfQotCi12b2lkIFRv
dWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgLy8gRklYTUU6
IHN1c3BlbmQgdGhlIGVuZ2luZS4KLSAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fcGFnZVZpZXct
PnNjYWxlKCk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1
ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUs
IHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCi17Ci0gICAgLy8gRklYTUU6IGl0IGlzIGEgbW9yZSBj
b21wbGljYXRlZCB0aGFuIHRoYXQ6Ci0gICAgLy8gLXRoZSBzY2FsZSBzaG91bGQgYmUgZG9uZSBj
ZW50ZXJlZCBvbiB0aGUgcGluY2ggY2VudGVyLgotICAgIC8vIC1jaGFuZ2VzIG9mIHRoZSBjZW50
ZXIgcG9zaXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZlbiBpZiB0aGUgem9vbSBmYWN0b3IK
LSAgICAvLyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBz
aG91bGQgYmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzIGVuZ2luZS4KLSAgICBjb25zdCBx
cmVhbCBzY2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90YWxTY2FsZUZhY3RvcjsKLSAgICBR
UG9pbnRGIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX3BhZ2VWaWV3LT5tYXBUb0l0ZW0obV9w
YWdlVmlldy0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlKTsK
LSAgICBtX3BhZ2VWaWV3LT5zZXRTY2FsZShzY2FsZSk7Ci0gICAgUVBvaW50RiBuZXdQaW5jaENl
bnRlck9uUGFyZW50ID0gbV9wYWdlVmlldy0+bWFwVG9JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0
ZW0oKSwgcGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7Ci0gICAgbV9wYWdlVmlldy0+
c2V0UG9zKG1fcGFnZVZpZXctPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQ
aW5jaENlbnRlck9uUGFyZW50KSk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5j
aEdlc3R1cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IGNvbW1pdCBzY2FsZSB3aXRoIHRoZSBz
Y2FsZSB2YWx1ZSBpbiB0aGUgdmFsaWQgcmFuZ2UgaW4gb3JkZXIgdG8gZ2V0IG5ldyB0aWxlcy4K
LSAgICAvLyBGSVhNRTogYW5pbWF0ZSB0aGUgYmFjayB6b29tIGluIHRoZSB2YWxpZCByYW5nZS4K
LSAgICAvLyBGSVhNRTogcmVzdW1lIHRoZSBlbmdpbmUgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4KLSAg
ICBtX3BhZ2VWaWV3LT5kLT5jb21taXRTY2FsZUNoYW5nZSgpOwotICAgIG1fdmlld3BvcnRWaWV3
LT5kLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7Ci19Ci0KIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNl
OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludCYsIGNvbnN0IFFSZWN0JikKIHsKIH0K
QEAgLTExMSwxNCArNTYsOSBAQCBRU2l6ZSBUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVh
U2l6ZSgpCiAKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29u
c3QgUVNpemUmIG5ld1NpemUpCiB7Ci0gICAgLy8gRklYTUU6IHRoZSB2aWV3cG9ydCBzaG91bGQg
dGFrZSBjYXJlIG9mOgotICAgIC8vIC1yZXNpemUgdGhlIHBhZ2UKLSAgICAvLyAtY2hhbmdlIHRo
ZSB6b29tIGxldmVsIGlmIG5lZWRlZAotICAgIC8vIC1tb3ZlIHRoZSBwYWdlIGJhY2sgaW4gdmll
d3BvcnQgYm91bmRhcmllcyBpZiBuZWVkZWQKLSAgICAvLyAtdXBkYXRlIHRoZSB2aWV3cG9ydCBy
ZWN0CiAgICAgbV9wYWdlVmlldy0+c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKICAgICBtX3Bh
Z2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV92aWV3cG9ydFZpZXct
PmQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+dXBkYXRl
Vmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCiBib29sIFRvdWNoVmlld0ludGVyZmFjZTo6aXNB
Y3RpdmUoKQpAQCAtMTc4LDYgKzExOCwxMSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6bG9h
ZERpZEJlZ2luKCkKICAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdGFydGVkKCk7CiB9CiAKK3Zv
aWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICBtX3ZpZXdwb3J0
Vmlldy0+ZC0+bG9hZERpZENvbW1pdCgpOworfQorCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6
bG9hZERpZFN1Y2NlZWQoKQogewogICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZFN1Y2NlZWRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVy
ZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5o
CmluZGV4IDMxZmMyMGQ2OGJiM2JiOThhOTE4MzVhOTI0OGUyZDlkN2FhYjVlYjguLjk3MjlkNjdj
MTQzMzU4NDJiYjYzMDg1OWVmMjk0YmU2NjBkNjMzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAgLTQwLDE1ICs0MCw2IEBAIGNs
YXNzIFRvdWNoVmlld0ludGVyZmFjZSA6IHB1YmxpYyBWaWV3SW50ZXJmYWNlCiBwdWJsaWM6CiAg
ICAgVG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNo
V2ViUGFnZSogcGFnZVZpZXcpOwogCi0gICAgdm9pZCBwYW5HZXN0dXJlU3RhcnRlZCgpOwotICAg
IHZvaWQgcGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkp
OwotICAgIHZvaWQgcGFuR2VzdHVyZUVuZGVkKCk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2Vs
bGVkKCk7Ci0KLSAgICB2b2lkIHBpbmNoR2VzdHVyZVN0YXJ0ZWQoKTsKLSAgICB2b2lkIHBpbmNo
R2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYsIHFyZWFsKTsKLSAgICB2b2lkIHBp
bmNoR2VzdHVyZUVuZGVkKCk7Ci0KICAgICBTR0FnZW50KiBzY2VuZUdyYXBoQWdlbnQoKSBjb25z
dDsKIAogcHJpdmF0ZToKQEAgLTczLDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUN1cnNvcihjb25zdCBRQ3Vyc29yJik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRE
aWRCZWdpbigpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCk7CiAgICAgdmlydHVh
bCB2b2lkIGxvYWREaWRTdWNjZWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNv
bnN0IFFXZWJFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3Mo
aW50KTsKQEAgLTg2LDggKzc4LDYgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgUVRvdWNoV2Vi
VmlldyogY29uc3QgbV92aWV3cG9ydFZpZXc7CiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3QgbV9w
YWdlVmlldzsKLQotICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKaW5kZXggZDg1ZjFlNTdkODRj
OTRhMmQ5NDY2MDcyNDlkNzc5NDY5ZTFhNzc4Yy4uNzBhNmY2MzY4ZGY0ZGRmZDYyZGI1YzJiZmU4
MTE0MDcwNTIyYTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Zp
ZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVy
ZmFjZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERp
ZEJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VMb2FkUHJvZ3Jlc3MoaW50KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM4
OTIxMTQ2NmMzYjI5MTZlMmI2N2UzOTM4ZGRmMzUxODkzZTVjNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNw
cApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBCZW5qYW1pbiBQ
b3VsYWluIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUuaCIKKworI2luY2x1ZGUgPFFQb2ludEY+CisjaW5jbHVkZSA8UXREZWNsYXJh
dGl2ZS9xc2dpdGVtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIFFS
ZWN0RiB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUoY29uc3QgUVNHSXRlbSogaXRlbSwg
Y29uc3QgUVNHSXRlbSogdmlld3BvcnQpCit7CisgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0SW5J
dGVtQ29vcmRpbmF0ZSA9IGl0ZW0tPm1hcFJlY3RGcm9tSXRlbSh2aWV3cG9ydCwgdmlld3BvcnQt
PmJvdW5kaW5nUmVjdCgpKTsKKyAgICBjb25zdCBRUmVjdEYgdmlzaWJsZUFyZWEgPSBpdGVtLT5i
b3VuZGluZ1JlY3QoKS5pbnRlcnNlY3RlZCh2aWV3cG9ydEluSXRlbUNvb3JkaW5hdGUpOworICAg
IHJldHVybiB2aXNpYmxlQXJlYTsKK30KKworc3RhdGljIGlubGluZSBRUmVjdEYgY29udGVudFJl
Y3RJblZpZXdwb3J0Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBpdGVtLCBjb25zdCBRU0dJdGVt
KiB2aWV3cG9ydCkKK3sKKyAgICByZXR1cm4gdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShpdGVt
LCBpdGVtLT5ib3VuZGluZ1JlY3QoKSk7Cit9CisKKy8vIFVwZGF0aW5nIGNvbnRlbnQgdmFsdWUg
Y2F1c2VzIHRoZSBub3RpZnkgc2lnbmFscyB0byBiZSBzZW50IGJ5IHRoZSBjb250ZW50IGl0ZW0g
aXRzZWxmLgorLy8gU2luY2Ugd2UgbWFuYWdlIHRob3NlIGRpZmZlcmVudGx5LCB3ZSBkbyBub3Qg
d2FudCB0byByZXNwb25kCisvLyB0byB0aGVtIHdoZW4gd2UgYXJlIHRoZSBvbmUgY2hhbmdpbmcg
dGhlIGNvbnRlbnQuCisvLworLy8gVGhlIGd1YXJkIG1ha2Ugc3VyZSB0aGUgc2lnbmFsIGNvbnRl
bnRDaGFuZ2VkSW5WaWV3cG9ydCgpIGlzIHNlbnQgaWYgbmVjZXNzYXJ5LgorLy8KKy8vIFRoZSBw
dWJsaWMgbWV0aG9kcyBzaG91bGQgY3JlYXRlIHRoZSBndWFyZCBpZiB0aGV5IG1pZ2h0IHVwZGF0
ZSBjb250ZW50LgorY2xhc3MgVmlld3BvcnRVcGRhdGVHdWFyZCB7CitwdWJsaWM6CisgICAgVmll
d3BvcnRVcGRhdGVHdWFyZChWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKQorICAgICAgICA6IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUodmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAgICAgLCB3YXNVcGRhdGluZ0NvbnRlbnQodmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCkKKyAgICAgICAgLCBwcmV2
aW91c1Bvc2l0aW9uKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+cG9zKCkp
CisgICAgICAgICwgcHJldmlvdXNTaXplKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29u
dGVudC0+d2lkdGgoKSwgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50LT5oZWln
aHQoKSkKKyAgICAgICAgLCBwcmV2aW91c1NjYWxlKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUt
Pm1fY29udGVudC0+c2NhbGUoKSkKKyAgICB7CisgICAgICAgIHZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB0cnVlOworICAgIH0KKworICAgIH5WaWV3cG9y
dFVwZGF0ZUd1YXJkKCkKKyAgICB7CisgICAgICAgIGlmICghd2FzVXBkYXRpbmdDb250ZW50KSB7
CisgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbiAhPSB2aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLT5tX2NvbnRlbnQtPnBvcygpCisgICAgICAgICAgICAgICAgICAgIHx8IHByZXZpb3Vz
U2l6ZS53aWR0aCgpICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+d2lk
dGgoKQorICAgICAgICAgICAgICAgICAgICB8fCBwcmV2aW91c1NpemUuaGVpZ2h0KCkgIT0gdmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50LT5oZWlnaHQoKQorICAgICAgICAgICAg
ICAgICAgICB8fCBwcmV2aW91c1NjYWxlICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1f
Y29udGVudC0+c2NhbGUoKSkKKyAgICAgICAgICAgICAgICBlbWl0IHZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUtPmNvbnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpOworICAgICAgICB9CisgICAgICAg
IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB3YXNVcGRh
dGluZ0NvbnRlbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUqIGNvbnN0IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7CisgICAgY29uc3QgYm9vbCB3
YXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgY29uc3QgUVBvaW50RiBwcmV2aW91c1Bvc2l0aW9uOwor
ICAgIGNvbnN0IFFTaXplRiBwcmV2aW91c1NpemU7CisgICAgY29uc3QgcXJlYWwgcHJldmlvdXNT
Y2FsZTsKK307CisKK1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUoY29uc3QgUVNHSXRlbSogdmlld3BvcnQsIFFTR0l0ZW0qIGNvbnRlbnQpCisgICAg
OiBtX3ZpZXdwb3J0KHZpZXdwb3J0KQorICAgICwgbV9jb250ZW50KGNvbnRlbnQpCisgICAgLCBt
X2lzVXBkYXRpbmdDb250ZW50KGZhbHNlKQorICAgICwgbV9waW5jaFN0YXJ0U2NhbGUoMS5mKQor
eworICAgIHJlc2V0KCk7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh4Q2hhbmdlZCgp
KSwgdGhpcywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVj
dGlvbik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh5Q2hhbmdlZCgpKSwgdGhpcywg
U0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cisg
ICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh3aWR0aENoYW5nZWQoKSksIHRoaXMsIFNMT1Qo
Y29udGVudEdlb21ldHJ5Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgIGNv
bm5lY3QobV9jb250ZW50LCBTSUdOQUwoaGVpZ2h0Q2hhbmdlZCgpKSwgdGhpcywgU0xPVChjb250
ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgY29ubmVj
dChtX2NvbnRlbnQsIFNJR05BTChzY2FsZUNoYW5nZWQoKSksIHRoaXMsIFNMT1QoY29udGVudFNj
YWxlQ2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworfQorCit2b2lkIFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0KCkKK3sKKyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1
YXJkKHRoaXMpOworICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgPSBVc2VySGFzTm90SW50ZXJh
Y3RlZFdpdGhDb250ZW50OworICAgIHNldENvbnN0cmFpbnRzKENvbnN0cmFpbnRzKCkpOworfQor
Cit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnN0cmFpbnRzKGNvbnN0IENv
bnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAobV9jb25zdHJhaW50cyA9PSBjb25z
dHJhaW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgcXJlYWwgcHJldmlvdXNTY2Fs
ZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBkYXRlR3Vh
cmQgZ3VhcmQodGhpcyk7CisgICAgICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKKyAg
ICAgICAgdXBkYXRlQ29udGVudElmTmVlZGVkKCk7CisgICAgfQorICAgIGlmIChtX2NvbnRlbnQt
PnNjYWxlKCkgIT0gcHJldmlvdXNTY2FsZSkKKyAgICAgICAgZW1pdCBjb21taXRTY2FsZUNoYW5n
ZSgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVTdGFy
dGVkKCkKK3sKKyAgICAvLyBGSVhNRTogc3VzcGVuZCB0aGUgV2ViIGVuZ2luZSAoc3RvcCBhbmlt
YXRlZCBHSUYsIGV0YykuCisgICAgLy8gRklYTUU6IGluaXRpYWxpemUgcGh5c2ljcyBmb3IgcGFu
bmluZyAoc3RvcCBhbmltYXRpb24sIGV0YykuCisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyB8
PSBVc2VySGFzTW92ZWRDb250ZW50OworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU6OnBhbkdlc3R1cmVSZXF1ZXN0U2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdGFZKQor
eworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisKKyAgICBRUG9pbnRGIGl0
ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyA9IG1fY29udGVudC0+bWFwRnJvbUl0ZW0obV9jb250ZW50
LT5wYXJlbnRJdGVtKCksIG1fY29udGVudC0+cG9zKCkpOworICAgIFFQb2ludEYgZGVzdEluVmll
d3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2NvbnRlbnQsIGl0ZW1Qb3Np
dGlvbkluSXRlbUNvb3JkcyArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkpKTsKKworICAgIG1fY29u
dGVudC0+c2V0UG9zKGRlc3RJblZpZXdwb3J0Q29vcmRzKTsKK30KKwordm9pZCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKK3sKKyAgICBWaWV3cG9ydFVw
ZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgIC8vIEZJWE1FOiByZXNldCBwaHlzaWNzLgorICAg
IHBhbkdlc3R1cmVFbmRlZCgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnBhbkdlc3R1cmVFbmRlZCgpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlz
KTsKKyAgICBhbmltYXRlQ29udGVudFBvc2l0aW9uVG9Cb3VuZGFyaWVzKCk7Cit9CisKK3ZvaWQg
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCit7CisgICAg
aWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNTY2FsZWRDb250ZW50OworICAgIG1f
dXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVudDsKKyAgICBtX3BpbmNo
U3RhcnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBp
bmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZhY3RvcikKK3sK
KyAgICBpZiAoIW1fY29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgICAgIHJldHVybjsK
KworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisKKyAgICAvLyAgQ2hhbmdl
cyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhl
IHpvb20gZmFjdG9yCisgICAgLy8gIGRvZXMgbm90IGNoYW5nZS4gQm90aCB0aGUgem9vbSBhbmQg
dGhlIHBhbm5pbmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcGh5c2ljcyBlbmdpbmUu
CisgICAgY29uc3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNoU3RhcnRTY2FsZSAqIHRvdGFsU2NhbGVG
YWN0b3I7CisgICAgUVBvaW50RiBvbGRQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5t
YXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Db250ZW50Q29v
cmRpbmF0ZSk7CisgICAgbV9jb250ZW50LT5zZXRTY2FsZShzY2FsZSk7CisgICAgUVBvaW50RiBu
ZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5w
YXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSk7CisgICAgbV9jb250
ZW50LT5zZXRQb3MobV9jb250ZW50LT5wb3MoKSAtIChuZXdQaW5jaENlbnRlck9uUGFyZW50IC0g
b2xkUGluY2hDZW50ZXJPblBhcmVudCkpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKCkKK3sKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBk
YXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiByZXN1bWUgdGhlIGVuZ2lu
ZSBhZnRlciB0aGUgYW5pbWF0aW9uLgorICAgICAgICBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3Vu
ZGFyaWVzKCk7CisgICAgfQorICAgIGlmIChtX3BpbmNoU3RhcnRTY2FsZSAhPSBtX2NvbnRlbnQt
PnNjYWxlKCkpCisgICAgICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9pZCBW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkKK3sKKyAg
ICBpZiAobV9pc1VwZGF0aW5nQ29udGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld3Bv
cnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsK
KworICAgIC8vIFdlIG11c3Qgbm90aWZ5IHRoZSBjaGFuZ2Ugc28gdGhlIGNsaWVudCBjYW4gcmVs
eSBvbiB1cyBmb3IgYWxsIGNoYW5nZSBvZiBHZW9tZXRyeS4KKyAgICBlbWl0IGNvbnRlbnRDaGFu
Z2VkSW5WaWV3cG9ydCgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNv
bnRlbnRTY2FsZUNoYW5nZWQoKQoreworICAgIGlmIChtX2lzVXBkYXRpbmdDb250ZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAg
IHVwZGF0ZUNvbnRlbnRJZk5lZWRlZCgpOworCisgICAgLy8gV2UgbXVzdCBub3RpZnkgdGhlIGNo
YW5nZSBzbyB0aGUgY2xpZW50IGNhbiByZWx5IG9uIHVzIGZvciBhbGwgY2hhbmdlIG9mIEdlb21l
dHJ5LgorICAgIGVtaXQgY29udGVudENoYW5nZWRJblZpZXdwb3J0KCk7CisgICAgZW1pdCBjb21t
aXRTY2FsZUNoYW5nZSgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnVw
ZGF0ZUNvbnRlbnRJZk5lZWRlZCgpCit7CisgICAgdXBkYXRlQ29udGVudFNjYWxlSWZOZWVkZWQo
KTsKKyAgICB1cGRhdGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCgpOworfQorCit2b2lkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCkKK3sKKyAg
ICBjb25zdCBxcmVhbCBjdXJyZW50Q29udGVudFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOwor
ICAgIHFyZWFsIGNvbnRlbnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICBpZiAoISht
X3VzZXJJbnRlcmFjdGlvbkZsYWdzICYgVXNlckhhc1NjYWxlZENvbnRlbnQpKQorICAgICAgICBj
b250ZW50U2NhbGUgPSBtX2NvbnN0cmFpbnRzLmluaXRpYWxTY2FsZTsKKworICAgIGNvbnRlbnRT
Y2FsZSA9IHFCb3VuZChtX2NvbnN0cmFpbnRzLm1pbmltdW1TY2FsZSwgY29udGVudFNjYWxlLCBt
X2NvbnN0cmFpbnRzLm1heGltdW1TY2FsZSk7CisKKyAgICBpZiAoY29udGVudFNjYWxlICE9IGN1
cnJlbnRDb250ZW50U2NhbGUpIHsKKyAgICAgICAgY29uc3QgUVBvaW50RiBjZW50ZXJPZkludGVy
ZXN0ID0gdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKG1fY29udGVudCwgbV92aWV3cG9y
dCkuY2VudGVyKCk7CisgICAgICAgIHNjYWxlQ29udGVudChjZW50ZXJPZkludGVyZXN0LCBjb250
ZW50U2NhbGUpOworICAgIH0KK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1
cGRhdGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKCEobV91c2VySW50ZXJh
Y3Rpb25GbGFncyAmIFVzZXJIYXNNb3ZlZENvbnRlbnQpKSB7CisgICAgICAgIG1fY29udGVudC0+
c2V0WCgobV92aWV3cG9ydC0+d2lkdGgoKSAtIGNvbnRlbnRSZWN0SW5WaWV3cG9ydENvb3JkaW5h
dGUobV9jb250ZW50LCBtX3ZpZXdwb3J0KS53aWR0aCgpKSAvIDIpOworICAgICAgICBtX2NvbnRl
bnQtPnNldFkoMCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IGlmIHRoZSBpdGVtIGNhbiBiZSBm
dWxseSBpbiB0aGUgdmlld3BvcnQgYW5kIGlzIG92ZXIgYSBzaWRlLCBwdXNoIGl0IGJhY2sgaW4g
dmlldworICAgIC8vIEZJWE1FOiBpZiB0aGUgaXRlbSBjYW5ub3QgYmUgZnVsbHkgaW4gdmlld3Bv
cnQsIGFuZCBpcyBub3QgY292ZXJpbmcgdGhlIHZpZXdwb3J0LCBwdXNoIGl0IGJhY2sgaW4gdmll
dworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVDb250ZW50UG9z
aXRpb25Ub0JvdW5kYXJpZXMoKQoreworICAgIGNvbnN0IFFSZWN0RiBjb250ZW50R2VvbWV0cnkg
PSBtX3ZpZXdwb3J0LT5tYXBSZWN0RnJvbUl0ZW0obV9jb250ZW50LCBtX2NvbnRlbnQtPmJvdW5k
aW5nUmVjdCgpKTsKKyAgICBRUG9pbnRGIG5ld1BvcyA9IGNvbnRlbnRHZW9tZXRyeS50b3BMZWZ0
KCk7CisKKyAgICAvLyBIb3Jpem9udGFsIGNvcnJlY3Rpb24uCisgICAgaWYgKGNvbnRlbnRHZW9t
ZXRyeS53aWR0aCgpIDwgbV92aWV3cG9ydC0+d2lkdGgoKSkKKyAgICAgICAgbmV3UG9zLnNldFgo
KG1fdmlld3BvcnQtPndpZHRoKCkgLSBjb250ZW50R2VvbWV0cnkud2lkdGgoKSkgLyAyKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgbmV3UG9zLnNldFgocU1pbigwLiwgbmV3UG9zLngoKSkpOworICAg
ICAgICBjb25zdCBxcmVhbCByaWdodFNpZGVHYXAgPSBtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3Qo
KS5yaWdodCgpIC0gY29udGVudEdlb21ldHJ5LnJpZ2h0KCk7CisgICAgICAgIGlmIChyaWdodFNp
ZGVHYXAgPiAwLikKKyAgICAgICAgICAgIG5ld1Bvcy5zZXRYKG5ld1Bvcy54KCkgKyByaWdodFNp
ZGVHYXApOworICAgIH0KKworICAgIC8vIFZlcnRpY2FsIGNvcnJlY3Rpb24uCisgICAgaWYgKGNv
bnRlbnRHZW9tZXRyeS5oZWlnaHQoKSA8IG1fdmlld3BvcnQtPmhlaWdodCgpKQorICAgICAgICBu
ZXdQb3Muc2V0WSgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbmV3UG9zLnNldFkocU1pbigwLiwg
bmV3UG9zLnkoKSkpOworICAgICAgICBjb25zdCBxcmVhbCBib3R0b21TaWRlR2FwID0gbV92aWV3
cG9ydC0+Ym91bmRpbmdSZWN0KCkuYm90dG9tKCkgLSBjb250ZW50R2VvbWV0cnkuYm90dG9tKCk7
CisgICAgICAgIGlmIChib3R0b21TaWRlR2FwID4gMC4pCisgICAgICAgICAgICBuZXdQb3Muc2V0
WShuZXdQb3MueSgpICsgYm90dG9tU2lkZUdhcCk7CisgICAgfQorCisgICAgaWYgKG5ld1BvcyAh
PSBtX2NvbnRlbnQtPnBvcygpKQorICAgICAgICAvLyBGSVhNRTogRG8geW91IGtub3cgd2hhdCBB
TklNQVRFIG1lYW5zPworICAgICAgICBtX2NvbnRlbnQtPnNldFBvcyhuZXdQb3MpOworfQorCit2
b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVDb250ZW50U2NhbGVUb0JvdW5k
YXJpZXMoKQoreworICAgIGNvbnN0IHFyZWFsIGN1cnJlbnRTY2FsZSA9IG1fY29udGVudC0+c2Nh
bGUoKTsKKyAgICBjb25zdCBxcmVhbCBib3VuZGVkU2NhbGUgPSBxQm91bmQobV9jb25zdHJhaW50
cy5taW5pbXVtU2NhbGUsIGN1cnJlbnRTY2FsZSwgbV9jb25zdHJhaW50cy5tYXhpbXVtU2NhbGUp
OworICAgIGlmIChjdXJyZW50U2NhbGUgIT0gYm91bmRlZFNjYWxlKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBEbyB5b3Uga25vdyB3aGF0IEFOSU1BVEUgbWVhbnM/CisgICAgICAgIGNvbnN0IFFQb2lu
dEYgY2VudGVyT2ZJbnRlcmVzdCA9IHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZShtX2Nv
bnRlbnQsIG1fdmlld3BvcnQpLmNlbnRlcigpOworICAgICAgICBzY2FsZUNvbnRlbnQoY2VudGVy
T2ZJbnRlcmVzdCwgYm91bmRlZFNjYWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6c2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ29udGVu
dENvb3JkaW5hdGUsIHFyZWFsIHNjYWxlKQoreworICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJP
blBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBj
ZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFNjYWxlKHNjYWxl
KTsKKyAgICBRUG9pbnRGIG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQtPm1hcFRv
SXRlbShtX2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgY2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSk7
CisgICAgbV9jb250ZW50LT5zZXRQb3MobV9jb250ZW50LT5wb3MoKSAtIChuZXdQaW5jaENlbnRl
ck9uUGFyZW50IC0gb2xkUGluY2hDZW50ZXJPblBhcmVudCkpOworfQorCisjaW5jbHVkZSAibW9j
X1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZDM2Y2JhM2FhM2Y1YjdkZjU3OGZlNWZiOGYzMWIyYWMzM2Y0ZjA2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBCZW5q
YW1pbiBQb3VsYWluIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lX2gKKyNkZWZpbmUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oCisK
KyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisK
K1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVBvaW50RjsKK2NsYXNzIFFTR0l0ZW07CitRVF9F
TkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoK
KyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKGNvbnN0IFFTR0l0ZW0qLCBRU0dJdGVtKik7
CisKKyAgICBzdHJ1Y3QgQ29uc3RyYWludHMgeworICAgICAgICBDb25zdHJhaW50cygpCisgICAg
ICAgICAgICA6IGluaXRpYWxTY2FsZSgxLjApCisgICAgICAgICAgICAsIG1pbmltdW1TY2FsZSgw
LjI1KQorICAgICAgICAgICAgLCBtYXhpbXVtU2NhbGUoMS44KQorICAgICAgICAgICAgLCBpc1Vz
ZXJTY2FsYWJsZSh0cnVlKQorICAgICAgICB7IH0KKworICAgICAgICBxcmVhbCBpbml0aWFsU2Nh
bGU7CisgICAgICAgIHFyZWFsIG1pbmltdW1TY2FsZTsKKyAgICAgICAgcXJlYWwgbWF4aW11bVNj
YWxlOworICAgICAgICBib29sIGlzVXNlclNjYWxhYmxlOworICAgIH07CisKKyAgICB2b2lkIHJl
c2V0KCk7CisgICAgdm9pZCBzZXRDb25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYpOworCisg
ICAgdm9pZCBwYW5HZXN0dXJlU3RhcnRlZCgpOworICAgIHZvaWQgcGFuR2VzdHVyZVJlcXVlc3RT
Y3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpOworICAgIHZvaWQgcGFuR2VzdHVyZUNh
bmNlbGxlZCgpOworICAgIHZvaWQgcGFuR2VzdHVyZUVuZGVkKCk7CisKKyAgICB2b2lkIHBpbmNo
R2VzdHVyZVN0YXJ0ZWQoKTsKKyAgICB2b2lkIHBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29u
c3QgUVBvaW50RiYsIHFyZWFsKTsKKyAgICB2b2lkIHBpbmNoR2VzdHVyZUVuZGVkKCk7CisKK1Ff
U0lHTkFMUzoKKyAgICAvLyBUaGlzIGFnZ3JlZ2F0ZSBjaGFuZ2VzIG9mIHNjYWxlLCBzaXplIGFu
ZCBwb3NpdGlvbiBpbiBvbmUgc2lnbmFsIHRvIGF2b2lkIGV4dHJhIHdvcmsKKyAgICAvLyBmb3Ig
dGhlIGNsaWVudCBvZiB0aGUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS4KKyAgICB2b2lkIGNv
bnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpOworCisgICAgdm9pZCBjb21taXRTY2FsZUNoYW5nZSgp
OworCitwcml2YXRlIFFfU0xPVFM6CisgICAgLy8gUmVzcG9uZCB0byBjaGFuZ2VzIG9mIGNvbnRl
bnQgdGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywgbGlrZSB0aGUgcGFnZSByZXNpemluZyBpdHNl
bGYuCisgICAgdm9pZCBjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCk7CisgICAgdm9pZCBjb250ZW50
U2NhbGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVDb250ZW50SWZOZWVk
ZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7CisgICAgdm9pZCB1
cGRhdGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCgpOworCisgICAgdm9pZCBhbmltYXRlQ29udGVu
dFBvc2l0aW9uVG9Cb3VuZGFyaWVzKCk7CisgICAgdm9pZCBhbmltYXRlQ29udGVudFNjYWxlVG9C
b3VuZGFyaWVzKCk7CisKKyAgICB2b2lkIHNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50
ZXJJbkNvbnRlbnRDb29yZGluYXRlLCBxcmVhbCBzY2FsZSk7CisKKyAgICBmcmllbmQgY2xhc3Mg
Vmlld3BvcnRVcGRhdGVHdWFyZDsKKworICAgIGNvbnN0IFFTR0l0ZW0qIGNvbnN0IG1fdmlld3Bv
cnQ7CisgICAgUVNHSXRlbSogY29uc3QgbV9jb250ZW50OworCisgICAgQ29uc3RyYWludHMgbV9j
b25zdHJhaW50czsKKyAgICBib29sIG1faXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgZW51bSBVc2Vy
SW50ZXJhY3Rpb25GbGFnIHsKKyAgICAgICAgVXNlckhhc05vdEludGVyYWN0ZWRXaXRoQ29udGVu
dCA9IDAsCisgICAgICAgIFVzZXJIYXNNb3ZlZENvbnRlbnQgPSAxLAorICAgICAgICBVc2VySGFz
U2NhbGVkQ29udGVudCA9IDIKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhVc2VySW50ZXJh
Y3Rpb25GbGFncywgVXNlckludGVyYWN0aW9uRmxhZyk7CisgICAgVXNlckludGVyYWN0aW9uRmxh
Z3MgbV91c2VySW50ZXJhY3Rpb25GbGFnczsKKworICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxl
OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjpDb25zdHJhaW50cyYgYSwgY29uc3QgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
Q29uc3RyYWludHMmIGIpCit7CisgICAgcmV0dXJuIChhLmluaXRpYWxTY2FsZSA9PSBiLmluaXRp
YWxTY2FsZSAmJiBhLm1pbmltdW1TY2FsZSA9PSBiLm1pbmltdW1TY2FsZSAmJiBhLm1heGltdW1T
Y2FsZSA9PSBiLm1heGltdW1TY2FsZQorICAgICAgICAgICAgJiYgYS5pc1VzZXJTY2FsYWJsZSA9
PSBiLmlzVXNlclNjYWxhYmxlKTsKK30KKworfQorCisjZW5kaWYgLyogVmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cXRvdWNod2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91
Y2h3ZWJwYWdlcHJveHkuY3BwCmluZGV4IDk4MmNiNDBmYzlkN2FjY2UwYWQzZGZkOWJlZmNmMzA2
NzE5MDVjZmEuLmEyMWNjYmYwN2JlMWU0NDE1ODY5YTc0NTNmNGE5ZTExNTlmMTFkM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3Bw
CkBAIC0yNywxMCArMjcsMTAgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVFUb3Vj
aFdlYlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSogdmll
d0ludGVyZmFjZSwgUVdLQ29udGV4dCogY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQorUVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50
ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLCBRV0tDb250ZXh0KiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCiAgICAgOiBRdFdlYlBhZ2VQcm94eSh2aWV3SW50ZXJmYWNlLCBjb250ZXh0
LCBwYWdlR3JvdXBSZWYpCi0gICAgLCBtX3Bhbkdlc3R1cmVSZWNvZ25pemVyKHZpZXdJbnRlcmZh
Y2UpCi0gICAgLCBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIodmlld0ludGVyZmFjZSkKKyAgICAs
IG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAs
IG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQogewog
ICAgIGluaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3
ZWJwYWdlcHJveHkuaAppbmRleCA3OWViMGU2NmRlZGJjMjVjYTI2YWJhZGM5NzM0M2IwMjdlYmEy
NTdmLi5kYTViMjcxMDI3NjM1NjU2YjQ1ZjVhYzE3M2RkMjNlNTNmNWZiOGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCkBAIC0zMCwx
MiArMzAsMTYgQEAKICNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU7Cit9CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIFFU
b3VjaFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBhZ2VQcm94eQogewogcHVibGljOgotICAg
IFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqLCBRV0tDb250ZXh0KiwgV0tQ
YWdlR3JvdXBSZWYgPSAwKTsKKyAgICBRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJm
YWNlKiwgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91
cFJlZiA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIucHJvCmluZGV4IDQ0ZWJiNjljZGMyZGRkMjVhYTEyNTgzYWJkYjk1ZGYxMTM4YzYyNzQu
LjVjYzIwNTBiZGFmMjQ2ZjZjZTI5MGQ0Y2UwOTYyZjI5Y2U0M2M0ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
CkBAIC0yNTIsNiArMjUyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1NHQWdl
bnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUuaCBcCiAgICAgVUlQcm9jZXNzL3F0
L1ZpZXdJbnRlcmZhY2UuaCBcCisgICAgVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2Vi
UG9wdXBNZW51UHJveHlRdC5oIFwKQEAgLTQ4Myw2ICs0ODQsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvVGlsZWREcmF3aW5nQXJlYVRpbGVRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UZXh0
Q2hlY2tlclF0LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29udGV4dE1lbnVQcm94eVF0LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJJ
bnNwZWN0b3JQcm94eVF0LmNwcCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104325</attachid>
            <date>2011-08-18 04:50:48 -0700</date>
            <delta_ts>2011-08-18 06:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110818135725.patch</filename>
            <type>text/plain</type>
            <size>48000</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li5lMjk1NTc2YjE1M2I2MmVjMGFjNmI3Mzc0MGY1N2Yw
MTYxZDcxYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTggIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUgdG8gaGFuZGxlIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3cG9y
dC4gVGhlIGNsYXNzIG1ha2UKKyAgICAgICAgc3VyZSB0aGUgUVRvdWNoV2ViUGFnZSBzdGF5cyBp
biB0aGUgdmlld3BvcnQgYW5kIGluIHRoZSBib3VuZGFyaWVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5jcHA6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKTogU2V0IHRoZSB0
cmFuc2Zvcm0gb3JpZ2luIHRvIHRoZSB0b3AgbGVmdCBzbworICAgICAgICB3ZSBjYW4gYXN1bWUg
dGhlIHBvc2l0aW9uIDAsIDAgaXMgYWx3YXlzIHRoZSB0b3AgbGVmdCBvZiB0aGUgcGFnZS4KKyAg
ICAgICAgKFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNoYW5nZSk6IE1ha2Ug
Y29tbWl0U2NhbGVDaGFuZ2UgYSBzbG90CisgICAgICAgIGluIG9yZGVyIHRvIGNvbXBsZXRlbHkg
ZGVjb3VwbGUgdGhlIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgYW5kIHRoZSBXZWJLaXQgY2xh
c3Nlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3Zp
ZXdwb3J0UmVjdFVwZGF0ZWQpOiBNYWtlIF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSBhIHNsb3QK
KyAgICAgICAgZm9yIHJlZHVjaW5nIGNvdXBsaW5nLgorICAgICAgICAoUVRvdWNoV2ViVmlld1By
aXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnNldFZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0
dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6
ZXIuaDogQ2hhbmdlIHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gdGFsayBkaXJlY3RseQorICAg
ICAgICB0byB0aGUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSBpbnN0ZWFkIG9mIGludGVyYWN0
aW5nIHRocm91Z2ggVG91Y2hWaWV3SW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJl
UmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0
UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpR
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1p
dCk6IEFkZCB0aGUgbG9hZENvbW1pdGVkIGNhbGxiYWNrIGluIG9yZGVyCisgICAgICAgIHRvIHJl
c2V0IHRoZSB2aWV3cG9ydCBzdGF0ZSB3aGVuIHRoZSBwYWdlIGNoYW5nZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91
Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNl
OjpUb3VjaFZpZXdJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZh
Y2U6OmNvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0lu
dGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6dmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Y29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3cG9ydFVwZGF0ZUd1YXJkOjp+Vmlld3BvcnRVcGRhdGVHdWFyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNl
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFy
dGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hH
ZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRTY2FsZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRh
dGVDb250ZW50U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRv
Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OmFuaW1hdGVDb250ZW50U2NhbGVUb0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNo
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwCmluZGV4IGRkZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmFk
Y2U4MzYzYTBkYTA2OTY0OWFhYzdlOGE3ZmE5NTMwNjRjY2MxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTEzMSw2
ICsxMzEsMTEgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQog
ICAgIGVtaXQgcS0+bG9hZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICAvLyBOb3QgdXNlZCBmb3IgUURlc2t0b3BXZWJW
aWV3LgorfQorCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkK
IHsKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNmOGE0ODE3
MTlmY2FmZmZiMzlkMGZmYTA1YzA4NGE3Y2MxLi44YWI2MjU2MDJhN2RjODJhYTk5M2Y0MDcxZTM5
ZDQ4ZGUyZmI2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFBy
b2dyZXNzKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJwYWdlLmNwcAppbmRleCAxOTRjMTljMzA2MDQ1MTAxOGY0NDNhY2Q5ODVlNzE5YWUxMjE5
ZjRlLi5kOTE0MDdjMDIwMjA2YzMxYzBiMWQ5YTMxYzIxNzFjMTczNTllNmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAgUVRvdWNoV2ViUGFnZTo6UVRvdWNoV2ViUGFnZShRU0dJdGVtKiBwYXJlbnQp
CiAgICAgLCBkKG5ldyBRVG91Y2hXZWJQYWdlUHJpdmF0ZSh0aGlzKSkKIHsKICAgICBzZXRGbGFn
KEl0ZW1IYXNDb250ZW50cyk7CisgICAgc2V0VHJhbnNmb3JtT3JpZ2luKFRvcExlZnQpOwogfQog
CiBRVG91Y2hXZWJQYWdlOjp+UVRvdWNoV2ViUGFnZSgpCkBAIC0xNDUsNiArMTQ2LDExIEBAIFFU
b3VjaFdlYlBhZ2VQcml2YXRlOjpRVG91Y2hXZWJQYWdlUHJpdmF0ZShRVG91Y2hXZWJQYWdlKiB2
aWV3KQogewogfQogCit2b2lkIFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNo
YW5nZSgpCit7CisgICAgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwogdm9pZCBRVG91Y2hXZWJQ
YWdlUHJpdmF0ZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogewogICAgIHBhZ2UtPnNldENvbnRlbnRz
U2NhbGUocS0+c2NhbGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2VicGFnZS5oCmluZGV4IDYwOGM3NTMyMTNmNGE4NTAwMGQ5M2I1YjVlNTY0NjYxODI0
YTViNWYuLmVmYTAzZDQzNDM0ZmM0OThhNDFjYWMyZmRkZDhkYWMzYTU5ZjIyNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCkBAIC03OCw2
ICs3OCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNv
bnN0IFFSZWN0RiYsIGNvbnN0IFFSZWN0RiYpOwogCiBwcml2YXRlOgorICAgIFFfUFJJVkFURV9T
TE9UKGQsIHZvaWQgX3FfY29tbWl0U2NhbGVDaGFuZ2UoKSk7CisKICAgICBRVG91Y2hXZWJQYWdl
UHJpdmF0ZSogZDsKICAgICBmcmllbmQgY2xhc3MgUVRvdWNoV2ViVmlld1ByaXZhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKaW5kZXggNjRkZGQ2Yjg3
ZjRlMzNmMWRkYjhlODU4NWMxYjFkZGMyYTQwYjVmMi4uZWQxN2IwYzNmMmQ3MGI4ZjJjYTA0NDIx
NjM4YzU4MTI3Y2I0ODg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJwYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnBhZ2VfcC5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFBhZ2UoUVRvdWNoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0UmVj
dChjb25zdCBRUmVjdEYmKTsKKyAgICB2b2lkIF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCk7CiAgICAg
dm9pZCBjb21taXRTY2FsZUNoYW5nZSgpOwogCiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3QgcTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3Bw
CmluZGV4IDhjZmY3Y2ZmOWU3MTMzYmI1ODlkMTY0ZjJlMDM3YmExZGFjYjQ5ZTAuLjljYTVkZjc2
ODBhYTlhYjljMmE0NmIwYzI2MDA2M2NiZTg4ZjI5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcApAQCAtMzMsMjcgKzMzLDI5IEBA
IFFUb3VjaFdlYlZpZXdQcml2YXRlOjpRVG91Y2hXZWJWaWV3UHJpdmF0ZShRVG91Y2hXZWJWaWV3
KiBxKQogICAgIDogcShxKQogICAgICwgcGFnZVZpZXcobmV3IFFUb3VjaFdlYlBhZ2UocSkpCiAg
ICAgLCB2aWV3SW50ZXJmYWNlKHEsIHBhZ2VWaWV3LmRhdGEoKSkKLSAgICAsIHBhZ2UoJnZpZXdJ
bnRlcmZhY2UsIGRlZmF1bHRXS0NvbnRleHQoKSkKKyAgICAsIGludGVyYWN0aW9uRW5naW5lKHEs
IHBhZ2VWaWV3LmRhdGEoKSkKKyAgICAsIHBhZ2UoJnZpZXdJbnRlcmZhY2UsICZpbnRlcmFjdGlv
bkVuZ2luZSwgZGVmYXVsdFdLQ29udGV4dCgpKQogewogICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRl
KiBjb25zdCBwYWdlVmlld1ByaXZhdGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7CiAgICAgcGFnZVZp
ZXdQcml2YXRlLT5zZXRQYWdlKCZwYWdlKTsKKworICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVy
YWN0aW9uRW5naW5lLCBTSUdOQUwoY29udGVudENoYW5nZWRJblZpZXdwb3J0KCkpLCBxLCBTTE9U
KF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSkpOworICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVy
YWN0aW9uRW5naW5lLCBTSUdOQUwoY29tbWl0U2NhbGVDaGFuZ2UoKSksIHBhZ2VWaWV3LmRhdGEo
KSwgU0xPVChfcV9jb21taXRTY2FsZUNoYW5nZSgpKSk7CiB9CiAKLXZvaWQgUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKK3ZvaWQgUVRvdWNo
V2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQogewotICAgIHBhZ2VWaWV3LT5zZXRYKHBh
Z2VWaWV3LT54KCkgKyBkZWx0YVgpOwotICAgIHBhZ2VWaWV3LT5zZXRZKHBhZ2VWaWV3LT55KCkg
KyBkZWx0YVkpOwotICAgIHZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICBpbnRlcmFjdGlvbkVu
Z2luZS5yZXNldCgpOwogfQogCi12b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp2aWV3cG9ydFJl
Y3RVcGRhdGVkKCkKK3ZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0UmVjdFVw
ZGF0ZWQoKQogewogICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRlKiBjb25zdCBwYWdlVmlld1ByaXZh
dGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7CiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVjdElu
UGFnZVZpZXdDb29yZGluYXRlID0gcS0+bWFwUmVjdFRvSXRlbShwYWdlVmlldy5kYXRhKCksIHEt
PmJvdW5kaW5nUmVjdCgpKTsKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFZpZXdwb3J0UmVjdCh2
aWV3cG9ydFJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7CiB9CiAKLXZvaWQgUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3RhdGUoKQordm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0
ZTo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpCiB7CiAgICAgUVNpemUgYXZhaWxhYmxlU2l6
ZSA9IHEtPmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKIApAQCAtNjIsMTEgKzY0LDEy
IEBAIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3RhdGUoKQogCiAg
ICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHIgPSBXZWJDb3JlOjpjb21wdXRlVmll
d3BvcnRBdHRyaWJ1dGVzKHZpZXdwb3J0QXJndW1lbnRzLCB3a1ByZWZzLT5sYXlvdXRGYWxsYmFj
a1dpZHRoKCksIHdrUHJlZnMtPmRldmljZVdpZHRoKCksIHdrUHJlZnMtPmRldmljZUhlaWdodCgp
LCB3a1ByZWZzLT5kZXZpY2VEUEkoKSwgYXZhaWxhYmxlU2l6ZSk7CiAKLSAgICB2aWV3cG9ydC5p
bml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKLSAgICB2aWV3cG9ydC5taW5pbXVtU2Nh
bGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKLSAgICB2aWV3cG9ydC5tYXhpbXVtU2NhbGUgPSBhdHRy
Lm1heGltdW1TY2FsZTsKLSAgICB2aWV3cG9ydC5waXhlbFJhdGlvID0gYXR0ci5kZXZpY2VQaXhl
bFJhdGlvOwotICAgIHZpZXdwb3J0LmlzVXNlclNjYWxhYmxlID0gISFhdHRyLnVzZXJTY2FsYWJs
ZTsKKyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBuZXdDb25zdHJh
aW50czsKKyAgICBuZXdDb25zdHJhaW50cy5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2Fs
ZTsKKyAgICBuZXdDb25zdHJhaW50cy5taW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsK
KyAgICBuZXdDb25zdHJhaW50cy5tYXhpbXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKKyAg
ICBuZXdDb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSA9ICEhYXR0ci51c2VyU2NhbGFibGU7Cisg
ICAgaW50ZXJhY3Rpb25FbmdpbmUuc2V0Q29uc3RyYWludHMobmV3Q29uc3RyYWludHMpOwogCiAg
ICAgLy8gT3ZlcndyaXRlIG1pbmltdW0gc2NhbGUgdmFsdWUgd2l0aCBmaXQtdG8tdmlldyB2YWx1
ZSwgdW5sZXNzIHRoZSB0aGUgY29udGVudCBhdXRob3IKICAgICAvLyBleHBsaWNpdGx5IHNheXMg
bm8uIE5COiBXZSBjYW4gb25seSBkbyB0aGlzIHdoZW4gd2Uga25vdyB3ZSBoYXZlIGEgdmFsaWQg
c2l6ZSwgaWUuCkBAIC03OSw3ICs4Miw3IEBAIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVw
ZGF0ZVZpZXdwb3J0U3RhdGUoKQogdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgdmlld3BvcnRBcmd1bWVudHMgPSBhcmdzOwotICAgIHVwZGF0ZVZpZXdwb3J0U3RhdGUoKTsK
KyAgICB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKIFFUb3VjaFdlYlZpZXc6OlFU
b3VjaFdlYlZpZXcoUVNHSXRlbSogcGFyZW50KQpAQCAtMTAzLDggKzEwNiw4IEBAIHZvaWQgUVRv
dWNoV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNv
bnN0IFFSZWN0RiYgb2xkCiB7CiAgICAgUVNHSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21l
dHJ5LCBvbGRHZW9tZXRyeSk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9t
ZXRyeS5zaXplKCkpIHsKLSAgICAgICAgZC0+dXBkYXRlVmlld3BvcnRTdGF0ZSgpOwotICAgICAg
ICBkLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7CisgICAgICAgIGQtPnVwZGF0ZVZpZXdwb3J0Q29u
c3RyYWludHMoKTsKKyAgICAgICAgZC0+X3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
aAppbmRleCA0NTE5ZGM4ZGI5ZDM4NTEyYTdlN2NiNzEzYTM1MzUwZjA1NGQ5Mjc2Li43MDYwMDI1
NDAxMzFlNjJkZmUyOGYwZjM1ZWMzZjFjZmFjNDA4NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaApAQCAtNDcsNiArNDcsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBj
b25zdCBRUmVjdEYmKTsKIAogcHJpdmF0ZToKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9x
X3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSk7CisKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpUb3Vj
aFZpZXdJbnRlcmZhY2U7CiAgICAgUVRvdWNoV2ViVmlld1ByaXZhdGUgKmQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKaW5kZXgg
YmMxYzdkNGZhNjEyYTM2ZTRmMTgzOWFlMmFjNjAzYTgyYzQ1ZGZhYy4uNzIwMWQ5ZjA1MDYxMzY5
MTIxYWY2NzdjNmQ0MTgxZGE2NDU1ZWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSA8UVNjb3BlZFBvaW50ZXI+CiAjaW5jbHVkZSAicXRvdWNod2VicGFnZXByb3h5LmgiCiAjaW5j
bHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS5oIgogCiBjbGFzcyBRVG91Y2hXZWJQYWdlOwogY2xhc3MgUVRvdWNoV2ViVmlldzsK
QEAgLTMzLDMxICszNCwxNiBAQCBjbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZQogcHVibGljOgog
ICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpOwogCi0gICAgdm9pZCBz
Y3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpOwotICAgIHZvaWQgdmlld3BvcnRSZWN0
VXBkYXRlZCgpOwotICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTdGF0ZSgpOworICAgIHZvaWQgbG9h
ZERpZENvbW1pdCgpOworICAgIHZvaWQgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpOworICAgIHZv
aWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydEFy
Z3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncyk7CiAKLSAgICBz
dHJ1Y3QgVmlld3BvcnRTdGF0ZSB7Ci0gICAgICAgIFZpZXdwb3J0U3RhdGUoKQotICAgICAgICAg
ICAgOiBpbml0aWFsU2NhbGUoMS4wKQotICAgICAgICAgICAgLCBtaW5pbXVtU2NhbGUoMC4yNSkK
LSAgICAgICAgICAgICwgbWF4aW11bVNjYWxlKDEuOCkKLSAgICAgICAgICAgICwgcGl4ZWxSYXRp
bygxLjApCi0gICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxlKHRydWUpCi0gICAgICAgIHsgfQot
Ci0gICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsKLSAgICAgICAgcXJlYWwgbWluaW11bVNjYWxl
OwotICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7Ci0gICAgICAgIHFyZWFsIHBpeGVsUmF0aW87
Ci0gICAgICAgIGJvb2wgaXNVc2VyU2NhbGFibGU7Ci0gICAgfSB2aWV3cG9ydDsKLQogICAgIFFU
b3VjaFdlYlZpZXcqIGNvbnN0IHE7CiAgICAgUVNjb3BlZFBvaW50ZXI8UVRvdWNoV2ViUGFnZT4g
cGFnZVZpZXc7CiAgICAgV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2Ugdmlld0ludGVyZmFjZTsK
KyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lIGludGVyYWN0aW9uRW5naW5lOwogICAgIFFU
b3VjaFdlYlBhZ2VQcm94eSBwYWdlOwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5jcHAKaW5kZXggMGMzYTJiZTdmZTJkMTY2ZjBkZDQxZjZkNDlkZTg3OTVlMTA2OTUxMC4uZTk2
NTRiMzA1ZGEwM2NmNGM5YjE1MDhmOTU0NjA2ZGFjYjcyMDA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIHF0X3dr
X2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmIHVzZQogICAgIFFVcmwgcVVybCA9IHVybFN0cjsKICAgICB0b1F0V2ViUGFnZVBy
b3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwogICAgIHRvUXRXZWJQ
YWdlUHJveHkoY2xpZW50SW5mbyktPmRpZENoYW5nZVVybChxVXJsKTsKKyAgICB0b1F0V2ViUGFn
ZVByb3h5KGNsaWVudEluZm8pLT5sb2FkRGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgcXRfd2tfZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggNjQzZjky
YjQwZGE1YjdjZGZhYTZjM2U0MjExNGMwY2QyOTVhNDc3MC4uMWY3Mzc1YTYwM2FlNjJhM2ExNTA0
OGUzYjZhZWZiMjZlYzNhNWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1RdEdlc3R1cmVSZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNvZ25pemVy
KFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDogbV90b3VjaFZp
ZXdJbnRlcmZhY2UodG91Y2hWaWV3SW50ZXJmYWNlKQorUXRHZXN0dXJlUmVjb2duaXplcjo6UXRH
ZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKQorICAgIDogbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKHZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUpCiAgICAgLCBtX3N0YXRlKE5vR2VzdHVyZSkKIHsKLSAgICBBU1NF
UlQodG91Y2hWaWV3SW50ZXJmYWNlKTsKKyAgICBBU1NFUlQodmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZSk7CiB9CiAKIHZvaWQgUXRHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMmRj
NjBlMDFkNjRlNzI3NDUwNDhjYTIxMzdlYmE3ODc5OGVlNGFlNC4uYjU1MDY4ZGFlYzYxOTA4YzMx
MDdkNmMxMmU0OTAxNmFlNjY2ODc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIFRvdWNoVmlld0ludGVyZmFjZTsKK2NsYXNzIFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU7CiAKIGNsYXNzIFF0R2VzdHVyZVJlY29nbml6ZXIgewogcHJvdGVj
dGVkOgotICAgIFF0R2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7CisgICAg
UXRHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgdm9p
ZCByZXNldCgpOwogCi0gICAgVG91Y2hWaWV3SW50ZXJmYWNlKiBjb25zdCBtX3RvdWNoVmlld0lu
dGVyZmFjZTsKKyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBjb25zdCBtX3ZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU7CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIE5vR2VzdHVyZSwK
ICAgICAgICAgR2VzdHVyZVJlY29nbml0aW9uU3RhcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBiYWRm
NjBkN2ZhMWZjYzcwYzMzNDdjMDc1Y2EwY2I4ODg5ODBhNjMzLi5jNzIyMGEwODY0MmVkZDljY2Ri
MDM3MzhmM2NlMDIwYTc1YWZjZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0yMywxNSArMjMsMTYgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogI2luY2x1ZGUgImNvbmZp
Zy5oIgorCiAjaW5jbHVkZSAiUXRQYW5HZXN0dXJlUmVjb2duaXplci5oIgogCi0jaW5jbHVkZSAi
VG91Y2hWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5oIgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUXRQ
YW5HZXN0dXJlUmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcihUb3VjaFZpZXdJbnRl
cmZhY2UqIHRvdWNoVmlld0ludGVyZmFjZSkKLSAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIodG91
Y2hWaWV3SW50ZXJmYWNlKQorUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVj
b2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkKKyAg
ICA6IFF0R2VzdHVyZVJlY29nbml6ZXIoaW50ZXJhY3Rpb25FbmdpbmUpCiB7CiAgICAgcmVzZXQo
KTsKIH0KQEAgLTQ1LDcgKzQ2LDcgQEAgYm9vbCBRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpyZWNv
Z25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgIC8vIEhhdmluZyBtdWx0aXBsZSB0
b3VjaCBwb2ludHMgY2FuY2VsIHRoZSBwYW5uaW5nIGdlc3R1cmUuCiAgICAgaWYgKGV2ZW50LT50
b3VjaFBvaW50cygpLnNpemUoKSA+IDEpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gR2VzdHVy
ZVJlY29nbml6ZWQpCi0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGFuR2VzdHVy
ZUNhbmNlbGxlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5w
YW5HZXN0dXJlQ2FuY2VsbGVkKCk7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC02OCwxOCArNjksMTggQEAgYm9vbCBRdFBhbkdlc3R1cmVSZWNvZ25p
emVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pemVk
OwotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBhbkdlc3R1cmVTdGFydGVkKCk7
CisgICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBhbkdlc3R1cmVTdGFy
dGVkKCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBHZXN0dXJlUmVj
b2duaXplZCk7CiAgICAgICAgIC8vIE9mZnNldCBzZW50IHRvIHRoZSB2aWV3cyBtdXN0IGJlIGlu
IHBhZ2UgdmlldyBjb29yZGluYXRlIHNwYWNlLgogICAgICAgICBRUG9pbnRGIG9mZnNldFNpbmNl
TGFzdEV2ZW50KHRvdWNoUG9pbnQucG9zKCkgLSB0b3VjaFBvaW50Lmxhc3RQb3MoKSk7Ci0gICAg
ICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJlUmVxdWVzdFNjcm9sbChvZmZzZXRT
aW5jZUxhc3RFdmVudC54KCksIG9mZnNldFNpbmNlTGFzdEV2ZW50LnkoKSk7CisgICAgICAgIG1f
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwob2Zmc2V0
U2luY2VMYXN0RXZlbnQueCgpLCBvZmZzZXRTaW5jZUxhc3RFdmVudC55KCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgogICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkgewotICAgICAgICAgICAgbV90b3VjaFZp
ZXdJbnRlcmZhY2UtPnBhbkdlc3R1cmVFbmRlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLT5wYW5HZXN0dXJlRW5kZWQoKTsKICAgICAgICAgICAgIHJlc2V0KCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggODA3OTU5
MzQ3YzI3MjNmZjExOWY4MzQ4MmYxM2QzNTA3Mzk4ZTE3Zi4uNzRiYjc5ZmEyYTZlNTQxMDY0MGVl
MzY1ZWM0YmQ4MDU0Yjg2NGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IHFy
ZWFsIHBhbm5pbmdJbml0aWFsVHJpZ2dlckRpc3RhbmNlVGhyZXNob2xkID0gNS47CiAKIGNsYXNz
IFF0UGFuR2VzdHVyZVJlY29nbml6ZXIgOiBwcml2YXRlIFF0R2VzdHVyZVJlY29nbml6ZXIgewog
cHVibGljOgotICAgIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7
CisgICAgUXRQYW5HZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7
CiAgICAgYm9vbCByZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqKTsKICAgICB2b2lkIHJlc2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2Vz
dHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hH
ZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggZjlkNWU3MWU0MTkxMzA4NDU0YzMwNTZmNmNmYWIw
MTE4MzhhMWI4Ni4uM2FmZTc5MzkxM2Y1NzJhYjE1OWUyOTkzMjZmZGRhZDdmN2IzMzBjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2du
aXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJl
UmVjb2duaXplci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCIKIAotI2luY2x1ZGUgIlRvdWNoVmll
d0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKICNp
bmNsdWRlIDxRdENvcmUvUUxpbmVGPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDggKzQ5
LDggQEAgc3RhdGljIGlubGluZSBRUG9pbnRGIGNvbXB1dGVUb3VjaENlbnRlcihjb25zdCBRVG91
Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQxLAogICAgIHJldHVybiAocG9pbnQxLnBvcygpICsg
cG9pbnQyLnBvcygpKSAvIDIuMGY7CiB9CiAKLVF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQ
aW5jaEdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJm
YWNlKQotICAgIDogUXRHZXN0dXJlUmVjb2duaXplcih0b3VjaFZpZXdJbnRlcmZhY2UpCitRdFBp
bmNoR2VzdHVyZVJlY29nbml6ZXI6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkKKyAgICA6IFF0R2VzdHVyZVJlY29n
bml6ZXIoaW50ZXJhY3Rpb25FbmdpbmUpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTYwLDcgKzYw
LDcgQEAgYm9vbCBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91
Y2hFdmVudCogZXZlbnQpCiAgICAgY29uc3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+
JiB0b3VjaFBvaW50cyA9IGV2ZW50LT50b3VjaFBvaW50cygpOwogICAgIGlmICh0b3VjaFBvaW50
cy5zaXplKCkgPCAyKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVk
KQotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7
CisgICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZUVu
ZGVkKCk7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC05Niw3ICs5Niw3IEBAIGJvb2wgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUo
Y29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIGlmIChwaW5jaERpc3Rh
bmNlIDwgcGluY2hJbml0aWFsVHJpZ2dlckRpc3RhbmNlVGhyZXNob2xkKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVS
ZWNvZ25pemVkOwotICAgICAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5waW5jaEdl
c3R1cmVTdGFydGVkKCk7CisgICAgICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLT5waW5jaEdlc3R1cmVTdGFydGVkKCk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSByZXNl
dCB0aGUgaW5pdGlhbCBwb3NpdGlvbiB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24gaW4gb3JkZXIg
dG8gYXZvaWQgdGhlIGp1bXAgY2F1c2VkCiAgICAgICAgICAgICAgICAgLy8gYnkgc2tpcHBpbmcg
YWxsIHRoZSBldmVudHMgYmV0d2VlbiB0aGUgYmVnaW5uaW5nIGFuZCB3aGVuIHRoZSB0aHJlc2hv
bGQgaXMgaGl0LgpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgYm9vbCBRdFBpbmNoR2VzdHVyZVJlY29n
bml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBj
b25zdCBxcmVhbCBpbml0aWFsU3BhbkRpc3RhbmNlID0gUUxpbmVGKG1fcG9pbnQxLmluaXRpYWxT
Y3JlZW5Qb3NpdGlvbiwgbV9wb2ludDIuaW5pdGlhbFNjcmVlblBvc2l0aW9uKS5sZW5ndGgoKTsK
ICAgICAgICAgICAgIGNvbnN0IHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IgPSBjdXJyZW50U3BhbkRp
c3RhbmNlIC8gaW5pdGlhbFNwYW5EaXN0YW5jZTsKICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYg
dG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSA9IGNvbXB1dGVUb3VjaENlbnRlcihwb2lu
dDEsIHBvaW50Mik7Ci0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGluY2hHZXN0
dXJlUmVxdWVzdFVwZGF0ZSh0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCB0b3RhbFNj
YWxlRmFjdG9yKTsKKyAgICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGlu
Y2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSh0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCB0
b3RhbFNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRRXZlbnQ6OlRvdWNo
RW5kOgogICAgICAgICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkgewotICAgICAg
ICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAg
ICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CiAg
ICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJl
Y29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJl
Y29nbml6ZXIuaAppbmRleCBjM2M5NzE5OTQ5YWQ0NWQ5ODFlYmM2ZjUzYTY3MTkzMDJmNGEwZWRh
Li5mYWM3MGU4ZjdkYTgxNmI3NzhkNzE5ZjUxMTAxYWMwMDY3ZWFjM2Y0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5o
CkBAIC0zOCw4ICszOCw2IEBAIFFUX0VORF9OQU1FU1BBQ0UKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFRvdWNoVmlld0ludGVyZmFjZTsKLQogY2xhc3MgUXRQaW5jaEdlc3R1cmVSZWNv
Z25pemVyIDogcHJpdmF0ZSBRdEdlc3R1cmVSZWNvZ25pemVyIHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgVG91Y2hQb2ludEluZm9ybWF0aW9uIHsKQEAgLTUyLDcgKzUwLDcgQEAgcHVibGljOgogICAg
ICAgICBRUG9pbnRGIGluaXRpYWxQb3NpdGlvbjsKICAgICB9OwogCi0gICAgUXRQaW5jaEdlc3R1
cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSopOworICAgIFF0UGluY2hHZXN0dXJlUmVj
b2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgYm9vbCByZWNvZ25pemUo
Y29uc3QgUVRvdWNoRXZlbnQqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkMGMyY2IzYzJlYTM0
NTE2MWEzNWM2OWYxM2VjZDRjMmU1MzQyNDguLmRkMjc4MWY0Njc5MTgzZjYyMzQxYjAwZmU5YzQ0
MDU2MmIwMWIwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcApAQCAtNDIwLDYgKzQyMCwxMSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2Fk
RGlkQmVnaW4oKQogICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZEJlZ2luKCk7CiB9CiAKK3Zv
aWQgUXRXZWJQYWdlUHJveHk6OmxvYWREaWRDb21taXQoKQoreworICAgIG1fdmlld0ludGVyZmFj
ZS0+bG9hZERpZENvbW1pdCgpOworfQorCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkU3Vj
Y2VlZCgpCiB7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5sb2FkRGlkU3VjY2VlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBmYTZjMjkxYjU0
YzVjMGU4Njc3NWRhMTk3ZjMxMWUzZGNkZTJiMTE1Li44ODVmNjdlMzIzM2NhMjZkODZiYTkzNGZk
ZDZlNWFhNWY0YmVkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuaApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5n
ZVRpdGxlKGNvbnN0IFFTdHJpbmcmKTsKIAogICAgIHZvaWQgbG9hZERpZEJlZ2luKCk7CisgICAg
dm9pZCBsb2FkRGlkQ29tbWl0KCk7CiAgICAgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZv
aWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VMb2Fk
UHJvZ3Jlc3MoaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNo
Vmlld0ludGVyZmFjZS5jcHAKaW5kZXggMGQ1ZWNkZTU1OGUyZmI3ZjczMzBiOWZjOTAxMzMxYTBm
NWIzMzE4YS4uMWIzNGEzNDBjMjZmNjU4YzQxZjg3NWU4NjBmMWY2OGNjNDBkYTMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAK
QEAgLTMxLDY2ICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFRvdWNoVmlld0ludGVyZmFj
ZTo6VG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNo
V2ViUGFnZSogcGFnZVZpZXcpCiAgICAgOiBtX3ZpZXdwb3J0Vmlldyh2aWV3cG9ydFZpZXcpCiAg
ICAgLCBtX3BhZ2VWaWV3KHBhZ2VWaWV3KQotICAgICwgbV9waW5jaFN0YXJ0U2NhbGUoMS5mKQog
ewogICAgIFFfQVNTRVJUKG1fdmlld3BvcnRWaWV3KTsKICAgICBRX0FTU0VSVChtX3BhZ2VWaWV3
KTsKIH0KIAotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVTdGFydGVkKCkKLXsK
LSAgICAvLyBGSVhNRTogc3VzcGVuZCB0aGUgV2ViIGVuZ2luZSAoc3RvcCBhbmltYXRlZCBHSUYs
IGV0YykuCi0gICAgLy8gRklYTUU6IGluaXRpYWxpemUgcGh5c2ljcyBmb3IgcGFubmluZyAoc3Rv
cCBhbmltYXRpb24sIGV0YykuCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0
dXJlUmVxdWVzdFNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKLXsKLSAgICAvLyBU
cmFuc2xhdGUgdGhlIGRlbHRhIGZyb20gcGFnZSB0byB2aWV3cG9ydCBjb29yZGluYXRlcy4KLSAg
ICBRUG9pbnRGIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyA9IG1fcGFnZVZpZXctPm1hcEZyb21J
dGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOwotICAgIFFQ
b2ludEYgZGVzdEluVmlld3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0Vmlldy0+bWFwRnJvbUl0ZW0o
bV9wYWdlVmlldywgaXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRl
bHRhWSkpOwotICAgIFFQb2ludEYgb2Zmc2V0SW5WaWV3cG9ydENvb3JkcyA9IGRlc3RJblZpZXdw
b3J0Q29vcmRzIC0gbV92aWV3cG9ydFZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVu
dEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT5zY3Jv
bGwob2Zmc2V0SW5WaWV3cG9ydENvb3Jkcy54KCksIG9mZnNldEluVmlld3BvcnRDb29yZHMueSgp
KTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVFbmRlZCgpCi17Ci0g
ICAgLy8gRklYTUU6IHRyaWdnZXIgcGh5c2ljcyBlbmdpbmUgZm9yIGFuaW1hdGlvbiAodGhlIFdl
YiBlbmdpbmUgc2hvdWxkIGJlIHJlc3VtZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4pCi19Ci0KLXZv
aWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKLXsKLSAgICAvLyBG
SVhNRTogcmVzZXQgcGh5c2ljcy4KLSAgICAvLyBGSVhNRTogcmVzdW1lIHRoZSBXZWIgZW5naW5l
LgotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCi17
Ci0gICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIGVuZ2luZS4KLSAgICBtX3BpbmNoU3RhcnRTY2Fs
ZSA9IG1fcGFnZVZpZXctPnNjYWxlKCk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpw
aW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5QYWdl
Vmlld0Nvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCi17Ci0gICAgLy8gRklYTUU6
IGl0IGlzIGEgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoYXQ6Ci0gICAgLy8gLXRoZSBzY2FsZSBz
aG91bGQgYmUgZG9uZSBjZW50ZXJlZCBvbiB0aGUgcGluY2ggY2VudGVyLgotICAgIC8vIC1jaGFu
Z2VzIG9mIHRoZSBjZW50ZXIgcG9zaXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZlbiBpZiB0
aGUgem9vbSBmYWN0b3IKLSAgICAvLyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFu
ZCB0aGUgcGFubmluZyBzaG91bGQgYmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzIGVuZ2lu
ZS4KLSAgICBjb25zdCBxcmVhbCBzY2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90YWxTY2Fs
ZUZhY3RvcjsKLSAgICBRUG9pbnRGIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX3BhZ2VWaWV3
LT5tYXBUb0l0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluUGFnZVZp
ZXdDb29yZGluYXRlKTsKLSAgICBtX3BhZ2VWaWV3LT5zZXRTY2FsZShzY2FsZSk7Ci0gICAgUVBv
aW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9wYWdlVmlldy0+bWFwVG9JdGVtKG1fcGFn
ZVZpZXctPnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7Ci0g
ICAgbV9wYWdlVmlldy0+c2V0UG9zKG1fcGFnZVZpZXctPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVy
T25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3
SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IGNvbW1pdCBz
Y2FsZSB3aXRoIHRoZSBzY2FsZSB2YWx1ZSBpbiB0aGUgdmFsaWQgcmFuZ2UgaW4gb3JkZXIgdG8g
Z2V0IG5ldyB0aWxlcy4KLSAgICAvLyBGSVhNRTogYW5pbWF0ZSB0aGUgYmFjayB6b29tIGluIHRo
ZSB2YWxpZCByYW5nZS4KLSAgICAvLyBGSVhNRTogcmVzdW1lIHRoZSBlbmdpbmUgYWZ0ZXIgdGhl
IGFuaW1hdGlvbi4KLSAgICBtX3BhZ2VWaWV3LT5kLT5jb21taXRTY2FsZUNoYW5nZSgpOwotICAg
IG1fdmlld3BvcnRWaWV3LT5kLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7Ci19Ci0KIHZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludCYsIGNvbnN0
IFFSZWN0JikKIHsKIH0KQEAgLTExMSwxNCArNTYsOSBAQCBRU2l6ZSBUb3VjaFZpZXdJbnRlcmZh
Y2U6OmRyYXdpbmdBcmVhU2l6ZSgpCiAKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmIG5ld1NpemUpCiB7Ci0gICAgLy8gRklYTUU6IHRoZSB2
aWV3cG9ydCBzaG91bGQgdGFrZSBjYXJlIG9mOgotICAgIC8vIC1yZXNpemUgdGhlIHBhZ2UKLSAg
ICAvLyAtY2hhbmdlIHRoZSB6b29tIGxldmVsIGlmIG5lZWRlZAotICAgIC8vIC1tb3ZlIHRoZSBw
YWdlIGJhY2sgaW4gdmlld3BvcnQgYm91bmRhcmllcyBpZiBuZWVkZWQKLSAgICAvLyAtdXBkYXRl
IHRoZSB2aWV3cG9ydCByZWN0CiAgICAgbV9wYWdlVmlldy0+c2V0V2lkdGgobmV3U2l6ZS53aWR0
aCgpKTsKICAgICBtX3BhZ2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7Ci0gICAg
bV92aWV3cG9ydFZpZXctPmQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICBtX3ZpZXdwb3J0
Vmlldy0+ZC0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCiBib29sIFRvdWNoVmll
d0ludGVyZmFjZTo6aXNBY3RpdmUoKQpAQCAtMTc4LDYgKzExOCwxMSBAQCB2b2lkIFRvdWNoVmll
d0ludGVyZmFjZTo6bG9hZERpZEJlZ2luKCkKICAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdGFy
dGVkKCk7CiB9CiAKK3ZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkQ29tbWl0KCkKK3sK
KyAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+bG9hZERpZENvbW1pdCgpOworfQorCiB2b2lkIFRvdWNo
Vmlld0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQoKQogewogICAgIGVtaXQgbV9wYWdlVmlldy0+
bG9hZFN1Y2NlZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNo
Vmlld0ludGVyZmFjZS5oCmluZGV4IDMxZmMyMGQ2OGJiM2JiOThhOTE4MzVhOTI0OGUyZDlkN2Fh
YjVlYjguLjk3MjlkNjdjMTQzMzU4NDJiYjYzMDg1OWVmMjk0YmU2NjBkNjMzOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAgLTQw
LDE1ICs0MCw2IEBAIGNsYXNzIFRvdWNoVmlld0ludGVyZmFjZSA6IHB1YmxpYyBWaWV3SW50ZXJm
YWNlCiBwdWJsaWM6CiAgICAgVG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdw
b3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpOwogCi0gICAgdm9pZCBwYW5HZXN0dXJl
U3RhcnRlZCgpOwotICAgIHZvaWQgcGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwocXJlYWwgZGVsdGFY
LCBxcmVhbCBkZWx0YVkpOwotICAgIHZvaWQgcGFuR2VzdHVyZUVuZGVkKCk7Ci0gICAgdm9pZCBw
YW5HZXN0dXJlQ2FuY2VsbGVkKCk7Ci0KLSAgICB2b2lkIHBpbmNoR2VzdHVyZVN0YXJ0ZWQoKTsK
LSAgICB2b2lkIHBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYsIHFyZWFs
KTsKLSAgICB2b2lkIHBpbmNoR2VzdHVyZUVuZGVkKCk7Ci0KICAgICBTR0FnZW50KiBzY2VuZUdy
YXBoQWdlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTczLDYgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNvcihjb25zdCBRQ3Vyc29yJik7CiAgICAgdmly
dHVhbCB2b2lkIGxvYWREaWRCZWdpbigpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdWNjZWVkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VMb2FkUHJvZ3Jlc3MoaW50KTsKQEAgLTg2LDggKzc4LDYgQEAgcHJpdmF0ZToKIHByaXZhdGU6
CiAgICAgUVRvdWNoV2ViVmlldyogY29uc3QgbV92aWV3cG9ydFZpZXc7CiAgICAgUVRvdWNoV2Vi
UGFnZSogY29uc3QgbV9wYWdlVmlldzsKLQotICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKaW5k
ZXggZDg1ZjFlNTdkODRjOTRhMmQ5NDY2MDcyNDlkNzc5NDY5ZTFhNzc4Yy4uNzBhNmY2MzY4ZGY0
ZGRmZDYyZGI1YzJiZmU4MTE0MDcwNTIyYTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvVmlld0ludGVyZmFjZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgbG9hZERpZEJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29t
bWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzZhNGY1NWEyY2MxMDA2ZDI0MDEyYzA0MjcxZWUyMWMzYmFmMjBhZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLmNwcApAQCAtMCwwICsxLDI5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
IlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKKworI2luY2x1ZGUgPFFQb2ludEY+CisjaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dpdGVtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgaW5saW5lIFFSZWN0RiB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUoY29uc3Qg
UVNHSXRlbSogaXRlbSwgY29uc3QgUVNHSXRlbSogdmlld3BvcnQpCit7CisgICAgY29uc3QgUVJl
Y3RGIHZpZXdwb3J0SW5JdGVtQ29vcmRpbmF0ZSA9IGl0ZW0tPm1hcFJlY3RGcm9tSXRlbSh2aWV3
cG9ydCwgdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgpKTsKKyAgICBjb25zdCBRUmVjdEYgdmlzaWJs
ZUFyZWEgPSBpdGVtLT5ib3VuZGluZ1JlY3QoKS5pbnRlcnNlY3RlZCh2aWV3cG9ydEluSXRlbUNv
b3JkaW5hdGUpOworICAgIHJldHVybiB2aXNpYmxlQXJlYTsKK30KKworc3RhdGljIGlubGluZSBR
UmVjdEYgY29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBpdGVt
LCBjb25zdCBRU0dJdGVtKiB2aWV3cG9ydCkKK3sKKyAgICByZXR1cm4gdmlld3BvcnQtPm1hcFJl
Y3RGcm9tSXRlbShpdGVtLCBpdGVtLT5ib3VuZGluZ1JlY3QoKSk7Cit9CisKKy8vIFVwZGF0aW5n
IGNvbnRlbnQgdmFsdWUgY2F1c2VzIHRoZSBub3RpZnkgc2lnbmFscyB0byBiZSBzZW50IGJ5IHRo
ZSBjb250ZW50IGl0ZW0gaXRzZWxmLgorLy8gU2luY2Ugd2UgbWFuYWdlIHRob3NlIGRpZmZlcmVu
dGx5LCB3ZSBkbyBub3Qgd2FudCB0byByZXNwb25kCisvLyB0byB0aGVtIHdoZW4gd2UgYXJlIHRo
ZSBvbmUgY2hhbmdpbmcgdGhlIGNvbnRlbnQuCisvLworLy8gVGhlIGd1YXJkIG1ha2Ugc3VyZSB0
aGUgc2lnbmFsIGNvbnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpIGlzIHNlbnQgaWYgbmVjZXNzYXJ5
LgorLy8KKy8vIFRoZSBwdWJsaWMgbWV0aG9kcyBzaG91bGQgY3JlYXRlIHRoZSBndWFyZCBpZiB0
aGV5IG1pZ2h0IHVwZGF0ZSBjb250ZW50LgorY2xhc3MgVmlld3BvcnRVcGRhdGVHdWFyZCB7Citw
dWJsaWM6CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZChWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQorICAgICAgICA6IHZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAgICAgLCB3YXNVcGRhdGlu
Z0NvbnRlbnQodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCkK
KyAgICAgICAgLCBwcmV2aW91c1Bvc2l0aW9uKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1f
Y29udGVudC0+cG9zKCkpCisgICAgICAgICwgcHJldmlvdXNTaXplKHZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUtPm1fY29udGVudC0+d2lkdGgoKSwgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+
bV9jb250ZW50LT5oZWlnaHQoKSkKKyAgICAgICAgLCBwcmV2aW91c1NjYWxlKHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+c2NhbGUoKSkKKyAgICB7CisgICAgICAgIHZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB0cnVlOworICAgIH0K
KworICAgIH5WaWV3cG9ydFVwZGF0ZUd1YXJkKCkKKyAgICB7CisgICAgICAgIGlmICghd2FzVXBk
YXRpbmdDb250ZW50KSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbiAhPSB2aWV3
cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPnBvcygpCisgICAgICAgICAgICAgICAg
ICAgIHx8IHByZXZpb3VzU2l6ZS53aWR0aCgpICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUt
Pm1fY29udGVudC0+d2lkdGgoKQorICAgICAgICAgICAgICAgICAgICB8fCBwcmV2aW91c1NpemUu
aGVpZ2h0KCkgIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50LT5oZWlnaHQo
KQorICAgICAgICAgICAgICAgICAgICB8fCBwcmV2aW91c1NjYWxlICE9IHZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUtPm1fY29udGVudC0+c2NhbGUoKSkKKyAgICAgICAgICAgICAgICBlbWl0IHZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPmNvbnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpOworICAg
ICAgICB9CisgICAgICAgIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0Nv
bnRlbnQgPSB3YXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUqIGNvbnN0IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7Cisg
ICAgY29uc3QgYm9vbCB3YXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgY29uc3QgUVBvaW50RiBwcmV2
aW91c1Bvc2l0aW9uOworICAgIGNvbnN0IFFTaXplRiBwcmV2aW91c1NpemU7CisgICAgY29uc3Qg
cXJlYWwgcHJldmlvdXNTY2FsZTsKK307CisKK1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoY29uc3QgUVNHSXRlbSogdmlld3BvcnQsIFFTR0l0ZW0q
IGNvbnRlbnQpCisgICAgOiBtX3ZpZXdwb3J0KHZpZXdwb3J0KQorICAgICwgbV9jb250ZW50KGNv
bnRlbnQpCisgICAgLCBtX2lzVXBkYXRpbmdDb250ZW50KGZhbHNlKQorICAgICwgbV9waW5jaFN0
YXJ0U2NhbGUoMS5mKQoreworICAgIHJlc2V0KCk7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJ
R05BTCh4Q2hhbmdlZCgpKSwgdGhpcywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBR
dDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh5Q2hh
bmdlZCgpKSwgdGhpcywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0
Q29ubmVjdGlvbik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh3aWR0aENoYW5nZWQo
KSksIHRoaXMsIFNMT1QoY29udGVudEdlb21ldHJ5Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5l
Y3Rpb24pOworICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwoaGVpZ2h0Q2hhbmdlZCgpKSwg
dGhpcywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlv
bik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTChzY2FsZUNoYW5nZWQoKSksIHRoaXMs
IFNMT1QoY29udGVudFNjYWxlQ2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworfQor
Cit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0KCkKK3sKKyAgICBWaWV3cG9y
dFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgPSBV
c2VySGFzTm90SW50ZXJhY3RlZFdpdGhDb250ZW50OworICAgIHNldENvbnN0cmFpbnRzKENvbnN0
cmFpbnRzKCkpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENvbnN0
cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAobV9jb25z
dHJhaW50cyA9PSBjb25zdHJhaW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgcXJl
YWwgcHJldmlvdXNTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICB7CisgICAgICAgIFZp
ZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgICAgIG1fY29uc3RyYWludHMgPSBj
b25zdHJhaW50czsKKyAgICAgICAgdXBkYXRlQ29udGVudElmTmVlZGVkKCk7CisgICAgfQorICAg
IGlmIChtX2NvbnRlbnQtPnNjYWxlKCkgIT0gcHJldmlvdXNTY2FsZSkKKyAgICAgICAgZW1pdCBj
b21taXRTY2FsZUNoYW5nZSgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnBhbkdlc3R1cmVTdGFydGVkKCkKK3sKKyAgICAvLyBGSVhNRTogc3VzcGVuZCB0aGUgV2ViIGVu
Z2luZSAoc3RvcCBhbmltYXRlZCBHSUYsIGV0YykuCisgICAgLy8gRklYTUU6IGluaXRpYWxpemUg
cGh5c2ljcyBmb3IgcGFubmluZyAoc3RvcCBhbmltYXRpb24sIGV0YykuCisgICAgbV91c2VySW50
ZXJhY3Rpb25GbGFncyB8PSBVc2VySGFzTW92ZWRDb250ZW50OworfQorCit2b2lkIFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVSZXF1ZXN0U2Nyb2xsKHFyZWFsIGRlbHRhWCwg
cXJlYWwgZGVsdGFZKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisK
KyAgICBRUG9pbnRGIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyA9IG1fY29udGVudC0+bWFwRnJv
bUl0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIG1fY29udGVudC0+cG9zKCkpOworICAgIFFQ
b2ludEYgZGVzdEluVmlld3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2Nv
bnRlbnQsIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkp
KTsKKworICAgIG1fY29udGVudC0+c2V0UG9zKGRlc3RJblZpZXdwb3J0Q29vcmRzKTsKK30KKwor
dm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKCkKK3sK
KyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgIC8vIEZJWE1FOiByZXNl
dCBwaHlzaWNzLgorICAgIHBhbkdlc3R1cmVFbmRlZCgpOworfQorCit2b2lkIFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVFbmRlZCgpCit7CisgICAgVmlld3BvcnRVcGRhdGVH
dWFyZCBndWFyZCh0aGlzKTsKKyAgICBhbmltYXRlQ29udGVudFBvc2l0aW9uVG9Cb3VuZGFyaWVz
KCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3Rh
cnRlZCgpCit7CisgICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNTY2FsZWRD
b250ZW50OworICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVu
dDsKKyAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKK30KKwordm9p
ZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNv
bnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxT
Y2FsZUZhY3RvcikKK3sKKyAgICBpZiAoIW1fY29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisK
KyAgICAvLyAgQ2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBw
YWdlIGV2ZW4gaWYgdGhlIHpvb20gZmFjdG9yCisgICAgLy8gIGRvZXMgbm90IGNoYW5nZS4gQm90
aCB0aGUgem9vbSBhbmQgdGhlIHBhbm5pbmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCB0aGUg
cGh5c2ljcyBlbmdpbmUuCisgICAgY29uc3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNoU3RhcnRTY2Fs
ZSAqIHRvdGFsU2NhbGVGYWN0b3I7CisgICAgUVBvaW50RiBvbGRQaW5jaENlbnRlck9uUGFyZW50
ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIHBpbmNoQ2Vu
dGVySW5Db250ZW50Q29vcmRpbmF0ZSk7CisgICAgbV9jb250ZW50LT5zZXRTY2FsZShzY2FsZSk7
CisgICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0
ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0
ZSk7CisgICAgbV9jb250ZW50LT5zZXRQb3MobV9jb250ZW50LT5wb3MoKSAtIChuZXdQaW5jaENl
bnRlck9uUGFyZW50IC0gb2xkUGluY2hDZW50ZXJPblBhcmVudCkpOworfQorCit2b2lkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKCkKK3sKKyAgICBpZiAoIW1f
Y29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIHsKKyAg
ICAgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6
IHJlc3VtZSB0aGUgZW5naW5lIGFmdGVyIHRoZSBhbmltYXRpb24uCisgICAgICAgIGFuaW1hdGVD
b250ZW50U2NhbGVUb0JvdW5kYXJpZXMoKTsKKyAgICB9CisgICAgaWYgKG1fcGluY2hTdGFydFNj
YWxlICE9IG1fY29udGVudC0+c2NhbGUoKSkKKyAgICAgICAgZW1pdCBjb21taXRTY2FsZUNoYW5n
ZSgpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRHZW9tZXRy
eUNoYW5nZWQoKQoreworICAgIGlmIChtX2lzVXBkYXRpbmdDb250ZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgIHVwZGF0ZUNv
bnRlbnRJZk5lZWRlZCgpOworCisgICAgLy8gV2UgbXVzdCBub3RpZnkgdGhlIGNoYW5nZSBzbyB0
aGUgY2xpZW50IGNhbiByZWx5IG9uIHVzIGZvciBhbGwgY2hhbmdlIG9mIEdlb21ldHJ5LgorICAg
IGVtaXQgY29udGVudENoYW5nZWRJblZpZXdwb3J0KCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6Y29udGVudFNjYWxlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1faXNVcGRh
dGluZ0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQg
Z3VhcmQodGhpcyk7CisgICAgdXBkYXRlQ29udGVudElmTmVlZGVkKCk7CisKKyAgICAvLyBXZSBt
dXN0IG5vdGlmeSB0aGUgY2hhbmdlIHNvIHRoZSBjbGllbnQgY2FuIHJlbHkgb24gdXMgZm9yIGFs
bCBjaGFuZ2Ugb2YgR2VvbWV0cnkuCisgICAgZW1pdCBjb250ZW50Q2hhbmdlZEluVmlld3BvcnQo
KTsKKyAgICBlbWl0IGNvbW1pdFNjYWxlQ2hhbmdlKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudElmTmVlZGVkKCkKK3sKKyAgICB1cGRhdGVDb250
ZW50U2NhbGVJZk5lZWRlZCgpOworICAgIHVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKCk7
Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudFNjYWxl
SWZOZWVkZWQoKQoreworICAgIGNvbnN0IHFyZWFsIGN1cnJlbnRDb250ZW50U2NhbGUgPSBtX2Nv
bnRlbnQtPnNjYWxlKCk7CisgICAgcXJlYWwgY29udGVudFNjYWxlID0gbV9jb250ZW50LT5zY2Fs
ZSgpOworICAgIGlmICghKG1fdXNlckludGVyYWN0aW9uRmxhZ3MgJiBVc2VySGFzU2NhbGVkQ29u
dGVudCkpCisgICAgICAgIGNvbnRlbnRTY2FsZSA9IG1fY29uc3RyYWludHMuaW5pdGlhbFNjYWxl
OworCisgICAgY29udGVudFNjYWxlID0gcUJvdW5kKG1fY29uc3RyYWludHMubWluaW11bVNjYWxl
LCBjb250ZW50U2NhbGUsIG1fY29uc3RyYWludHMubWF4aW11bVNjYWxlKTsKKworICAgIGlmIChj
b250ZW50U2NhbGUgIT0gY3VycmVudENvbnRlbnRTY2FsZSkgeworICAgICAgICBjb25zdCBRUG9p
bnRGIGNlbnRlck9mSW50ZXJlc3QgPSB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUobV9j
b250ZW50LCBtX3ZpZXdwb3J0KS5jZW50ZXIoKTsKKyAgICAgICAgc2NhbGVDb250ZW50KGNlbnRl
ck9mSW50ZXJlc3QsIGNvbnRlbnRTY2FsZSk7CisgICAgfQorfQorCit2b2lkIFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKCkKK3sKKyAgICBp
ZiAoIShtX3VzZXJJbnRlcmFjdGlvbkZsYWdzICYgVXNlckhhc01vdmVkQ29udGVudCkpIHsKKyAg
ICAgICAgbV9jb250ZW50LT5zZXRYKChtX3ZpZXdwb3J0LT53aWR0aCgpIC0gY29udGVudFJlY3RJ
blZpZXdwb3J0Q29vcmRpbmF0ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLndpZHRoKCkpIC8gMik7
CisgICAgICAgIG1fY29udGVudC0+c2V0WSgwKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogaWYg
dGhlIGl0ZW0gY2FuIGJlIGZ1bGx5IGluIHRoZSB2aWV3cG9ydCBhbmQgaXMgb3ZlciBhIHNpZGUs
IHB1c2ggaXQgYmFjayBpbiB2aWV3CisgICAgLy8gRklYTUU6IGlmIHRoZSBpdGVtIGNhbm5vdCBi
ZSBmdWxseSBpbiB2aWV3cG9ydCwgYW5kIGlzIG5vdCBjb3ZlcmluZyB0aGUgdmlld3BvcnQsIHB1
c2ggaXQgYmFjayBpbiB2aWV3Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRvQm91bmRhcmllcygpCit7CisgICAgY29uc3QgUVJlY3RG
IGNvbnRlbnRHZW9tZXRyeSA9IG1fdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShtX2NvbnRlbnQs
IG1fY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOworICAgIFFQb2ludEYgbmV3UG9zID0gY29udGVu
dEdlb21ldHJ5LnRvcExlZnQoKTsKKworICAgIC8vIEhvcml6b250YWwgY29ycmVjdGlvbi4KKyAg
ICBpZiAoY29udGVudEdlb21ldHJ5LndpZHRoKCkgPCBtX3ZpZXdwb3J0LT53aWR0aCgpKQorICAg
ICAgICBuZXdQb3Muc2V0WCgobV92aWV3cG9ydC0+d2lkdGgoKSAtIGNvbnRlbnRHZW9tZXRyeS53
aWR0aCgpKSAvIDIpOworICAgIGVsc2UgeworICAgICAgICBuZXdQb3Muc2V0WChxTWluKDAuLCBu
ZXdQb3MueCgpKSk7CisgICAgICAgIGNvbnN0IHFyZWFsIHJpZ2h0U2lkZUdhcCA9IG1fdmlld3Bv
cnQtPmJvdW5kaW5nUmVjdCgpLnJpZ2h0KCkgLSBjb250ZW50R2VvbWV0cnkucmlnaHQoKTsKKyAg
ICAgICAgaWYgKHJpZ2h0U2lkZUdhcCA+IDAuKQorICAgICAgICAgICAgbmV3UG9zLnNldFgobmV3
UG9zLngoKSArIHJpZ2h0U2lkZUdhcCk7CisgICAgfQorCisgICAgLy8gVmVydGljYWwgY29ycmVj
dGlvbi4KKyAgICBpZiAoY29udGVudEdlb21ldHJ5LmhlaWdodCgpIDwgbV92aWV3cG9ydC0+aGVp
Z2h0KCkpCisgICAgICAgIG5ld1Bvcy5zZXRZKDApOworICAgIGVsc2UgeworICAgICAgICBuZXdQ
b3Muc2V0WShxTWluKDAuLCBuZXdQb3MueSgpKSk7CisgICAgICAgIGNvbnN0IHFyZWFsIGJvdHRv
bVNpZGVHYXAgPSBtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKS5ib3R0b20oKSAtIGNvbnRlbnRH
ZW9tZXRyeS5ib3R0b20oKTsKKyAgICAgICAgaWYgKGJvdHRvbVNpZGVHYXAgPiAwLikKKyAgICAg
ICAgICAgIG5ld1Bvcy5zZXRZKG5ld1Bvcy55KCkgKyBib3R0b21TaWRlR2FwKTsKKyAgICB9CisK
KyAgICBpZiAobmV3UG9zICE9IG1fY29udGVudC0+cG9zKCkpCisgICAgICAgIC8vIEZJWE1FOiBE
byB5b3Uga25vdyB3aGF0IEFOSU1BVEUgbWVhbnM/CisgICAgICAgIG1fY29udGVudC0+c2V0UG9z
KG5ld1Bvcyk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNv
bnRlbnRTY2FsZVRvQm91bmRhcmllcygpCit7CisgICAgY29uc3QgcXJlYWwgY3VycmVudFNjYWxl
ID0gbV9jb250ZW50LT5zY2FsZSgpOworICAgIGNvbnN0IHFyZWFsIGJvdW5kZWRTY2FsZSA9IHFC
b3VuZChtX2NvbnN0cmFpbnRzLm1pbmltdW1TY2FsZSwgY3VycmVudFNjYWxlLCBtX2NvbnN0cmFp
bnRzLm1heGltdW1TY2FsZSk7CisgICAgaWYgKGN1cnJlbnRTY2FsZSAhPSBib3VuZGVkU2NhbGUp
IHsKKyAgICAgICAgLy8gRklYTUU6IERvIHlvdSBrbm93IHdoYXQgQU5JTUFURSBtZWFucz8KKyAg
ICAgICAgY29uc3QgUVBvaW50RiBjZW50ZXJPZkludGVyZXN0ID0gdmlzaWJsZVJlY3RJbkNvbnRl
bnRDb29yZGluYXRlKG1fY29udGVudCwgbV92aWV3cG9ydCkuY2VudGVyKCk7CisgICAgICAgIHNj
YWxlQ29udGVudChjZW50ZXJPZkludGVyZXN0LCBib3VuZGVkU2NhbGUpOworICAgIH0KK30KKwor
dm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50
RiYgY2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpCit7CisgICAgUVBvaW50
RiBvbGRQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50
LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVu
dC0+c2V0U2NhbGUoc2NhbGUpOworICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9
IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNv
bnRlbnRDb29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygp
IC0gKG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Cit9
CisKKyNpbmNsdWRlICJtb2NfVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAiCisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ZjY3Y2U3ZjAzN2NlYTQ1NmY4M2I2YmRjNzBmMWQ4OTVl
ZGM4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEJlbmphbWluIFBvdWxhaW4gPGJlbmphbWluQHdlYmtpdC5vcmc+CisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmVfaAorI2RlZmluZSBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxR
dENvcmUvUU9iamVjdD4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUG9pbnRGOworY2xh
c3MgUVNHSXRlbTsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9P
QkpFQ1QKKworcHVibGljOgorICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoY29uc3QgUVNH
SXRlbSosIFFTR0l0ZW0qKTsKKworICAgIHN0cnVjdCBDb25zdHJhaW50cyB7CisgICAgICAgIENv
bnN0cmFpbnRzKCkKKyAgICAgICAgICAgIDogaW5pdGlhbFNjYWxlKDEuMCkKKyAgICAgICAgICAg
ICwgbWluaW11bVNjYWxlKDAuMjUpCisgICAgICAgICAgICAsIG1heGltdW1TY2FsZSgxLjgpCisg
ICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxlKHRydWUpCisgICAgICAgIHsgfQorCisgICAgICAg
IHFyZWFsIGluaXRpYWxTY2FsZTsKKyAgICAgICAgcXJlYWwgbWluaW11bVNjYWxlOworICAgICAg
ICBxcmVhbCBtYXhpbXVtU2NhbGU7CisgICAgICAgIGJvb2wgaXNVc2VyU2NhbGFibGU7CisgICAg
fTsKKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHNldENvbnN0cmFpbnRzKGNvbnN0IENv
bnN0cmFpbnRzJik7CisKKyAgICB2b2lkIHBhbkdlc3R1cmVTdGFydGVkKCk7CisgICAgdm9pZCBw
YW5HZXN0dXJlUmVxdWVzdFNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSk7CisgICAg
dm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7CisgICAgdm9pZCBwYW5HZXN0dXJlRW5kZWQoKTsK
KworICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRlZCgpOworICAgIHZvaWQgcGluY2hHZXN0dXJl
UmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiwgcXJlYWwpOworICAgIHZvaWQgcGluY2hHZXN0
dXJlRW5kZWQoKTsKKworUV9TSUdOQUxTOgorICAgIC8vIFRoaXMgYWdncmVnYXRlIGNoYW5nZXMg
b2Ygc2NhbGUsIHNpemUgYW5kIHBvc2l0aW9uIGluIG9uZSBzaWduYWwgdG8gYXZvaWQgZXh0cmEg
d29yaworICAgIC8vIGZvciB0aGUgY2xpZW50IG9mIHRoZSBWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLgorICAgIHZvaWQgY29udGVudENoYW5nZWRJblZpZXdwb3J0KCk7CisKKyAgICB2b2lkIGNv
bW1pdFNjYWxlQ2hhbmdlKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICAvLyBSZXNwb25kIHRv
IGNoYW5nZXMgb2YgY29udGVudCB0aGF0IGFyZSBub3QgZHJpdmVuIGJ5IHVzLCBsaWtlIHRoZSBw
YWdlIHJlc2l6aW5nIGl0c2VsZi4KKyAgICB2b2lkIGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKTsK
KyAgICB2b2lkIGNvbnRlbnRTY2FsZUNoYW5nZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIHZvaWQgdXBkYXRlQ29udGVudFNjYWxlSWZOZWVk
ZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKCk7CisKKyAgICB2
b2lkIGFuaW1hdGVDb250ZW50UG9zaXRpb25Ub0JvdW5kYXJpZXMoKTsKKyAgICB2b2lkIGFuaW1h
dGVDb250ZW50U2NhbGVUb0JvdW5kYXJpZXMoKTsKKworICAgIHZvaWQgc2NhbGVDb250ZW50KGNv
bnN0IFFQb2ludEYmIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUsIHFyZWFsIHNjYWxlKTsKKwor
ICAgIGZyaWVuZCBjbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkOworCisgICAgY29uc3QgUVNHSXRl
bSogY29uc3QgbV92aWV3cG9ydDsKKyAgICBRU0dJdGVtKiBjb25zdCBtX2NvbnRlbnQ7CisKKyAg
ICBDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOworICAgIGJvb2wgbV9pc1VwZGF0aW5nQ29udGVu
dDsKKyAgICBlbnVtIFVzZXJJbnRlcmFjdGlvbkZsYWcgeworICAgICAgICBVc2VySGFzTm90SW50
ZXJhY3RlZFdpdGhDb250ZW50ID0gMCwKKyAgICAgICAgVXNlckhhc01vdmVkQ29udGVudCA9IDEs
CisgICAgICAgIFVzZXJIYXNTY2FsZWRDb250ZW50ID0gMgorICAgIH07CisgICAgUV9ERUNMQVJF
X0ZMQUdTKFVzZXJJbnRlcmFjdGlvbkZsYWdzLCBVc2VySW50ZXJhY3Rpb25GbGFnKTsKKyAgICBV
c2VySW50ZXJhY3Rpb25GbGFncyBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzOworCisgICAgcXJlYWwg
bV9waW5jaFN0YXJ0U2NhbGU7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzJiBhLCBjb25zdCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyYgYikKK3sKKyAgICByZXR1cm4gYS5pbml0aWFs
U2NhbGUgPT0gYi5pbml0aWFsU2NhbGUKKyAgICAgICAgICAgICYmIGEubWluaW11bVNjYWxlID09
IGIubWluaW11bVNjYWxlCisgICAgICAgICAgICAmJiBhLm1heGltdW1TY2FsZSA9PSBiLm1heGlt
dW1TY2FsZQorICAgICAgICAgICAgJiYgYS5pc1VzZXJTY2FsYWJsZSA9PSBiLmlzVXNlclNjYWxh
YmxlOworfQorCit9CisKKyNlbmRpZiAvKiBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5j
cHAKaW5kZXggOTgyY2I0MGZjOWQ3YWNjZTBhZDNkZmQ5YmVmY2YzMDY3MTkwNWNmYS4uYTIxY2Ni
ZjA3YmUxZTQ0MTU4NjlhNzQ1M2Y0YTllMTE1OWYxMWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTI3LDEwICsyNywx
MCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUVRvdWNoV2ViUGFnZVByb3h5OjpR
VG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBRV0tD
b250ZXh0KiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitRVG91Y2hXZWJQ
YWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRl
cmZhY2UsIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAg
ICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikK
LSAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld0ludGVyZmFjZSkKLSAgICAsIG1fcGlu
Y2hHZXN0dXJlUmVjb2duaXplcih2aWV3SW50ZXJmYWNlKQorICAgICwgbV9wYW5HZXN0dXJlUmVj
b2duaXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQorICAgICwgbV9waW5jaEdlc3R1cmVS
ZWNvZ25pemVyKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCiB7CiAgICAgaW5pdCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCmlu
ZGV4IDc5ZWIwZTY2ZGVkYmMyNWNhMjZhYmFkYzk3MzQzYjAyN2ViYTI1N2YuLmRhNWIyNzEwMjc2
MzU2NTZiNDVmNWFjMTczZGQyM2U1M2Y1ZmI4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKQEAgLTMwLDEyICszMCwxNiBAQAogI2lu
Y2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsK
K30KKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogY2xhc3MgUVRvdWNoV2ViUGFnZVByb3h5
IDogcHVibGljIFF0V2ViUGFnZVByb3h5CiB7CiBwdWJsaWM6Ci0gICAgUVRvdWNoV2ViUGFnZVBy
b3h5KFRvdWNoVmlld0ludGVyZmFjZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDAp
OworICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZhY2UqLCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXgg
NDRlYmI2OWNkYzJkZGQyNWFhMTI1ODNhYmRiOTVkZjExMzhjNjI3NC4uNWNjMjA1MGJkYWYyNDZm
NmNlMjkwZDRjZTA5NjJmMjljZTQzYzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI1Miw2ICsyNTIs
NyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvU0dBZ2VudC5oIFwKICAgICBVSVBy
b2Nlc3MvcXQvU0dUaWxlTm9kZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5o
IFwKKyAgICBVSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIFwKICAgICBV
SVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dE1lbnVQcm94eVF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmggXApAQCAtNDgzLDYgKzQ4NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9U
aWxlZERyYXdpbmdBcmVhUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UaWxlZERyYXdp
bmdBcmVhVGlsZVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RleHRDaGVja2VyUXQuY3BwIFwK
KyAgICBVSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVByb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQv
V2ViQ29udGV4dFF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQu
Y3BwIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104331</attachid>
            <date>2011-08-18 06:08:21 -0700</date>
            <delta_ts>2011-08-18 06:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110818151458.patch</filename>
            <type>text/plain</type>
            <size>48212</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li5lMjk1NTc2YjE1M2I2MmVjMGFjNmI3Mzc0MGY1N2Yw
MTYxZDcxYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTggIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUgdG8gaGFuZGxlIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3cG9y
dC4gVGhlIGNsYXNzIG1ha2UKKyAgICAgICAgc3VyZSB0aGUgUVRvdWNoV2ViUGFnZSBzdGF5cyBp
biB0aGUgdmlld3BvcnQgYW5kIGluIHRoZSBib3VuZGFyaWVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5jcHA6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKTogU2V0IHRoZSB0
cmFuc2Zvcm0gb3JpZ2luIHRvIHRoZSB0b3AgbGVmdCBzbworICAgICAgICB3ZSBjYW4gYXN1bWUg
dGhlIHBvc2l0aW9uIDAsIDAgaXMgYWx3YXlzIHRoZSB0b3AgbGVmdCBvZiB0aGUgcGFnZS4KKyAg
ICAgICAgKFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNoYW5nZSk6IE1ha2Ug
Y29tbWl0U2NhbGVDaGFuZ2UgYSBzbG90CisgICAgICAgIGluIG9yZGVyIHRvIGNvbXBsZXRlbHkg
ZGVjb3VwbGUgdGhlIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgYW5kIHRoZSBXZWJLaXQgY2xh
c3Nlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3Zp
ZXdwb3J0UmVjdFVwZGF0ZWQpOiBNYWtlIF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSBhIHNsb3QK
KyAgICAgICAgZm9yIHJlZHVjaW5nIGNvdXBsaW5nLgorICAgICAgICAoUVRvdWNoV2ViVmlld1By
aXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnNldFZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0
dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6
ZXIuaDogQ2hhbmdlIHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gdGFsayBkaXJlY3RseQorICAg
ICAgICB0byB0aGUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSBpbnN0ZWFkIG9mIGludGVyYWN0
aW5nIHRocm91Z2ggVG91Y2hWaWV3SW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJl
UmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0
UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpR
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1p
dCk6IEFkZCB0aGUgbG9hZENvbW1pdGVkIGNhbGxiYWNrIGluIG9yZGVyCisgICAgICAgIHRvIHJl
c2V0IHRoZSB2aWV3cG9ydCBzdGF0ZSB3aGVuIHRoZSBwYWdlIGNoYW5nZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91
Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNl
OjpUb3VjaFZpZXdJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZh
Y2U6OmNvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0lu
dGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6dmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Y29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3cG9ydFVwZGF0ZUd1YXJkOjp+Vmlld3BvcnRVcGRhdGVHdWFyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNl
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFy
dGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hH
ZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRTY2FsZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRh
dGVDb250ZW50U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRv
Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OmFuaW1hdGVDb250ZW50U2NhbGVUb0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNo
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwCmluZGV4IGRkZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmFk
Y2U4MzYzYTBkYTA2OTY0OWFhYzdlOGE3ZmE5NTMwNjRjY2MxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTEzMSw2
ICsxMzEsMTEgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQog
ICAgIGVtaXQgcS0+bG9hZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICAvLyBOb3QgdXNlZCBmb3IgUURlc2t0b3BXZWJW
aWV3LgorfQorCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkK
IHsKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNmOGE0ODE3
MTlmY2FmZmZiMzlkMGZmYTA1YzA4NGE3Y2MxLi44YWI2MjU2MDJhN2RjODJhYTk5M2Y0MDcxZTM5
ZDQ4ZGUyZmI2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFBy
b2dyZXNzKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJwYWdlLmNwcAppbmRleCAxOTRjMTljMzA2MDQ1MTAxOGY0NDNhY2Q5ODVlNzE5YWUxMjE5
ZjRlLi42M2E5ODMwYWFmYzgzYzZkMGQ4M2IzZWQ4NTMyYjdkMWJkOTNmMWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTM0
LDYgKzM0LDEwIEBAIFFUb3VjaFdlYlBhZ2U6OlFUb3VjaFdlYlBhZ2UoUVNHSXRlbSogcGFyZW50
KQogICAgICwgZChuZXcgUVRvdWNoV2ViUGFnZVByaXZhdGUodGhpcykpCiB7CiAgICAgc2V0Rmxh
ZyhJdGVtSGFzQ29udGVudHMpOworCisgICAgLy8gV2UgZG8gdGhlIHRyYW5zZm9ybSBmcm9tIHRo
ZSB0b3AgbGVmdCBzbyB0aGUgdmlld3BvcnQgY2FuIGFzc3VtZSB0aGUgcG9zaXRpb24gMCwgMAor
ICAgIC8vIGlzIGFsd2F5cyB3aGVyZSByZW5kZXJpbmcgc3RhcnRzLgorICAgIHNldFRyYW5zZm9y
bU9yaWdpbihUb3BMZWZ0KTsKIH0KIAogUVRvdWNoV2ViUGFnZTo6flFUb3VjaFdlYlBhZ2UoKQpA
QCAtMTQ1LDYgKzE0OSwxMSBAQCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVBy
aXZhdGUoUVRvdWNoV2ViUGFnZSogdmlldykKIHsKIH0KIAordm9pZCBRVG91Y2hXZWJQYWdlUHJp
dmF0ZTo6X3FfY29tbWl0U2NhbGVDaGFuZ2UoKQoreworICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7
Cit9CisKIHZvaWQgUVRvdWNoV2ViUGFnZVByaXZhdGU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKIHsK
ICAgICBwYWdlLT5zZXRDb250ZW50c1NjYWxlKHEtPnNjYWxlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCA2MDhjNzUzMjEzZjRh
ODUwMDBkOTNiNWI1ZTU2NDY2MTgyNGE1YjVmLi5lZmEwM2Q0MzQzNGZjNDk4YTQxY2FjMmZkZGQ4
ZGFjM2E1OWYyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaApAQCAtNzgsNiArNzgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJp
dmF0ZToKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCkp
OworCiAgICAgUVRvdWNoV2ViUGFnZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFUb3Vj
aFdlYlZpZXdQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2VfcC5oCmluZGV4IDY0ZGRkNmI4N2Y0ZTMzZjFkZGI4ZTg1ODVjMWIxZGRjMmE0MGI1ZjIuLmVk
MTdiMGMzZjJkNzBiOGYyY2EwNDQyMTYzOGM1ODEyN2NiNDg4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaApAQCAtMzksNiArMzks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlKFFUb3VjaFdlYlBhZ2VQcm94eSopOwogCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydFJlY3QoY29uc3QgUVJlY3RGJik7CisgICAgdm9pZCBfcV9jb21t
aXRTY2FsZUNoYW5nZSgpOwogICAgIHZvaWQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKIAogICAgIFFU
b3VjaFdlYlBhZ2UqIGNvbnN0IHE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA4Y2ZmN2NmZjllNzEzM2JiNTg5ZDE2NGYyZTAz
N2JhMWRhY2I0OWUwLi45Y2E1ZGY3NjgwYWE5YWI5YzJhNDZiMGMyNjAwNjNjYmU4OGYyOTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5j
cHAKQEAgLTMzLDI3ICszMywyOSBAQCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6UVRvdWNoV2ViVmll
d1ByaXZhdGUoUVRvdWNoV2ViVmlldyogcSkKICAgICA6IHEocSkKICAgICAsIHBhZ2VWaWV3KG5l
dyBRVG91Y2hXZWJQYWdlKHEpKQogICAgICwgdmlld0ludGVyZmFjZShxLCBwYWdlVmlldy5kYXRh
KCkpCi0gICAgLCBwYWdlKCZ2aWV3SW50ZXJmYWNlLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAg
LCBpbnRlcmFjdGlvbkVuZ2luZShxLCBwYWdlVmlldy5kYXRhKCkpCisgICAgLCBwYWdlKCZ2aWV3
SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIGRlZmF1bHRXS0NvbnRleHQoKSkKIHsKICAg
ICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcu
ZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7CisKKyAgICBR
T2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKGNvbnRlbnRDaGFuZ2Vk
SW5WaWV3cG9ydCgpKSwgcSwgU0xPVChfcV92aWV3cG9ydFJlY3RVcGRhdGVkKCkpKTsKKyAgICBR
T2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKGNvbW1pdFNjYWxlQ2hh
bmdlKCkpLCBwYWdlVmlldy5kYXRhKCksIFNMT1QoX3FfY29tbWl0U2NhbGVDaGFuZ2UoKSkpOwog
fQogCi12b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpzY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVh
bCBkZWx0YVkpCit2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29tbWl0KCkKIHsK
LSAgICBwYWdlVmlldy0+c2V0WChwYWdlVmlldy0+eCgpICsgZGVsdGFYKTsKLSAgICBwYWdlVmll
dy0+c2V0WShwYWdlVmlldy0+eSgpICsgZGVsdGFZKTsKLSAgICB2aWV3cG9ydFJlY3RVcGRhdGVk
KCk7CisgICAgaW50ZXJhY3Rpb25FbmdpbmUucmVzZXQoKTsKIH0KIAotdm9pZCBRVG91Y2hXZWJW
aWV3UHJpdmF0ZTo6dmlld3BvcnRSZWN0VXBkYXRlZCgpCit2b2lkIFFUb3VjaFdlYlZpZXdQcml2
YXRlOjpfcV92aWV3cG9ydFJlY3RVcGRhdGVkKCkKIHsKICAgICBRVG91Y2hXZWJQYWdlUHJpdmF0
ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcuZGF0YSgpLT5kOwogICAgIGNvbnN0
IFFSZWN0RiB2aWV3cG9ydFJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZSA9IHEtPm1hcFJlY3RUb0l0
ZW0ocGFnZVZpZXcuZGF0YSgpLCBxLT5ib3VuZGluZ1JlY3QoKSk7CiAgICAgcGFnZVZpZXdQcml2
YXRlLT5zZXRWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGUpOwog
fQogCi12b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFN0YXRlKCkKK3Zv
aWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKQogewog
ICAgIFFTaXplIGF2YWlsYWJsZVNpemUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXpl
KCk7CiAKQEAgLTYyLDExICs2NCwxMiBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRh
dGVWaWV3cG9ydFN0YXRlKCkKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRy
ID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyh2aWV3cG9ydEFyZ3VtZW50cywg
d2tQcmVmcy0+bGF5b3V0RmFsbGJhY2tXaWR0aCgpLCB3a1ByZWZzLT5kZXZpY2VXaWR0aCgpLCB3
a1ByZWZzLT5kZXZpY2VIZWlnaHQoKSwgd2tQcmVmcy0+ZGV2aWNlRFBJKCksIGF2YWlsYWJsZVNp
emUpOwogCi0gICAgdmlld3BvcnQuaW5pdGlhbFNjYWxlID0gYXR0ci5pbml0aWFsU2NhbGU7Ci0g
ICAgdmlld3BvcnQubWluaW11bVNjYWxlID0gYXR0ci5taW5pbXVtU2NhbGU7Ci0gICAgdmlld3Bv
cnQubWF4aW11bVNjYWxlID0gYXR0ci5tYXhpbXVtU2NhbGU7Ci0gICAgdmlld3BvcnQucGl4ZWxS
YXRpbyA9IGF0dHIuZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICB2aWV3cG9ydC5pc1VzZXJTY2FsYWJs
ZSA9ICEhYXR0ci51c2VyU2NhbGFibGU7CisgICAgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
Q29uc3RyYWludHMgbmV3Q29uc3RyYWludHM7CisgICAgbmV3Q29uc3RyYWludHMuaW5pdGlhbFNj
YWxlID0gYXR0ci5pbml0aWFsU2NhbGU7CisgICAgbmV3Q29uc3RyYWludHMubWluaW11bVNjYWxl
ID0gYXR0ci5taW5pbXVtU2NhbGU7CisgICAgbmV3Q29uc3RyYWludHMubWF4aW11bVNjYWxlID0g
YXR0ci5tYXhpbXVtU2NhbGU7CisgICAgbmV3Q29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUgPSAh
IWF0dHIudXNlclNjYWxhYmxlOworICAgIGludGVyYWN0aW9uRW5naW5lLnNldENvbnN0cmFpbnRz
KG5ld0NvbnN0cmFpbnRzKTsKIAogICAgIC8vIE92ZXJ3cml0ZSBtaW5pbXVtIHNjYWxlIHZhbHVl
IHdpdGggZml0LXRvLXZpZXcgdmFsdWUsIHVubGVzcyB0aGUgdGhlIGNvbnRlbnQgYXV0aG9yCiAg
ICAgLy8gZXhwbGljaXRseSBzYXlzIG5vLiBOQjogV2UgY2FuIG9ubHkgZG8gdGhpcyB3aGVuIHdl
IGtub3cgd2UgaGF2ZSBhIHZhbGlkIHNpemUsIGllLgpAQCAtNzksNyArODIsNyBAQCB2b2lkIFFU
b3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFN0YXRlKCkKIHZvaWQgUVRvdWNoV2Vi
Vmlld1ByaXZhdGU6OnNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzJiBhcmdzKQogewogICAgIHZpZXdwb3J0QXJndW1lbnRzID0gYXJnczsKLSAgICB1
cGRhdGVWaWV3cG9ydFN0YXRlKCk7CisgICAgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwog
fQogCiBRVG91Y2hXZWJWaWV3OjpRVG91Y2hXZWJWaWV3KFFTR0l0ZW0qIHBhcmVudCkKQEAgLTEw
Myw4ICsxMDYsOCBAQCB2b2lkIFFUb3VjaFdlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBR
UmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZAogewogICAgIFFTR0l0ZW06Omdl
b21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwogICAgIGlmIChuZXdHZW9t
ZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKSB7Ci0gICAgICAgIGQtPnVwZGF0ZVZp
ZXdwb3J0U3RhdGUoKTsKLSAgICAgICAgZC0+dmlld3BvcnRSZWN0VXBkYXRlZCgpOworICAgICAg
ICBkLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CisgICAgICAgIGQtPl9xX3ZpZXdwb3J0
UmVjdFVwZGF0ZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKaW5kZXggNDUxOWRjOGRiOWQzODUxMmE3ZTdjYjcxM2Ez
NTM1MGYwNTRkOTI3Ni4uNzA2MDAyNTQwMTMxZTYyZGZlMjhmMGYzNWVjM2YxY2ZhYzQwODRmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgK
QEAgLTQ3LDYgKzQ3LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNo
YW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAKIHByaXZhdGU6CisgICAgUV9Q
UklWQVRFX1NMT1QoZCwgdm9pZCBfcV92aWV3cG9ydFJlY3RVcGRhdGVkKCkpOworCiAgICAgZnJp
ZW5kIGNsYXNzIFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOwogICAgIFFUb3VjaFdlYlZpZXdQ
cml2YXRlICpkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXRvdWNod2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnZpZXdfcC5oCmluZGV4IGJjMWM3ZDRmYTYxMmEzNmU0ZjE4MzlhZTJhYzYwM2E4MmM0
NWRmYWMuLjcyMDFkOWYwNTA2MTM2OTEyMWFmNjc3YzZkNDE4MWRhNjQ1NWVhZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaApAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPFFTY29wZWRQb2ludGVyPgogI2luY2x1ZGUgInF0b3Vj
aHdlYnBhZ2Vwcm94eS5oIgogI2luY2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgorI2luY2x1
ZGUgIlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKIAogY2xhc3MgUVRvdWNoV2ViUGFnZTsK
IGNsYXNzIFFUb3VjaFdlYlZpZXc7CkBAIC0zMywzMSArMzQsMTYgQEAgY2xhc3MgUVRvdWNoV2Vi
Vmlld1ByaXZhdGUKIHB1YmxpYzoKICAgICBRVG91Y2hXZWJWaWV3UHJpdmF0ZShRVG91Y2hXZWJW
aWV3KiBxKTsKIAotICAgIHZvaWQgc2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdGFZKTsK
LSAgICB2b2lkIHZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0
U3RhdGUoKTsKKyAgICB2b2lkIGxvYWREaWRDb21taXQoKTsKKyAgICB2b2lkIF9xX3ZpZXdwb3J0
UmVjdFVwZGF0ZWQoKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKIAog
ICAgIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHMmIGFyZ3MpOwogCi0gICAgc3RydWN0IFZpZXdwb3J0U3RhdGUgewotICAgICAgICBWaWV3
cG9ydFN0YXRlKCkKLSAgICAgICAgICAgIDogaW5pdGlhbFNjYWxlKDEuMCkKLSAgICAgICAgICAg
ICwgbWluaW11bVNjYWxlKDAuMjUpCi0gICAgICAgICAgICAsIG1heGltdW1TY2FsZSgxLjgpCi0g
ICAgICAgICAgICAsIHBpeGVsUmF0aW8oMS4wKQotICAgICAgICAgICAgLCBpc1VzZXJTY2FsYWJs
ZSh0cnVlKQotICAgICAgICB7IH0KLQotICAgICAgICBxcmVhbCBpbml0aWFsU2NhbGU7Ci0gICAg
ICAgIHFyZWFsIG1pbmltdW1TY2FsZTsKLSAgICAgICAgcXJlYWwgbWF4aW11bVNjYWxlOwotICAg
ICAgICBxcmVhbCBwaXhlbFJhdGlvOwotICAgICAgICBib29sIGlzVXNlclNjYWxhYmxlOwotICAg
IH0gdmlld3BvcnQ7Ci0KICAgICBRVG91Y2hXZWJWaWV3KiBjb25zdCBxOwogICAgIFFTY29wZWRQ
b2ludGVyPFFUb3VjaFdlYlBhZ2U+IHBhZ2VWaWV3OwogICAgIFdlYktpdDo6VG91Y2hWaWV3SW50
ZXJmYWNlIHZpZXdJbnRlcmZhY2U7CisgICAgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSBpbnRl
cmFjdGlvbkVuZ2luZTsKICAgICBRVG91Y2hXZWJQYWdlUHJveHkgcGFnZTsKIAogICAgIFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCmluZGV4IDBjM2EyYmU3ZmUyZDE2NmYwZGQ0MWY2
ZDQ5ZGU4Nzk1ZTEwNjk1MTAuLmU5NjU0YjMwNWRhMDNjZjRjOWIxNTA4Zjk1NDYwNmRhY2I3MjAw
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKQEAgLTk1
LDYgKzk1LDcgQEAgdm9pZCBxdF93a19kaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2UKICAgICBRVXJsIHFVcmwgPSB1cmxT
dHI7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvbkFj
dGlvbnMoKTsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VVcmwo
cVVybCk7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+bG9hZERpZENvbW1pdCgp
OwogfQogCiB2b2lkIHF0X3drX2RpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJl
Y29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29n
bml6ZXIuY3BwCmluZGV4IDY0M2Y5MmI0MGRhNWI3Y2RmYWE2YzNlNDIxMTRjMGNkMjk1YTQ3NzAu
LjFmNzM3NWE2MDNhZTYyYTNhMTUwNDhlM2I2YWVmYjI2ZWMzYTViMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI4
LDExICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUXRHZXN0dXJlUmVjb2duaXpl
cjo6UXRHZXN0dXJlUmVjb2duaXplcihUb3VjaFZpZXdJbnRlcmZhY2UqIHRvdWNoVmlld0ludGVy
ZmFjZSkKLSAgICA6IG1fdG91Y2hWaWV3SW50ZXJmYWNlKHRvdWNoVmlld0ludGVyZmFjZSkKK1F0
R2VzdHVyZVJlY29nbml6ZXI6OlF0R2VzdHVyZVJlY29nbml6ZXIoVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICA6IG1fdmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQogICAgICwgbV9zdGF0ZShO
b0dlc3R1cmUpCiB7Ci0gICAgQVNTRVJUKHRvdWNoVmlld0ludGVyZmFjZSk7CisgICAgQVNTRVJU
KHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOwogfQogCiB2b2lkIFF0R2VzdHVyZVJlY29nbml6
ZXI6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdl
c3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJl
UmVjb2duaXplci5oCmluZGV4IDJkYzYwZTAxZDY0ZTcyNzQ1MDQ4Y2EyMTM3ZWJhNzg3OThlZTRh
ZTQuLmI1NTA2OGRhZWM2MTkwOGMzMTA3ZDZjMTJlNDkwMTZhZTY2Njg3NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMjgs
MTQgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBUb3VjaFZpZXdJbnRl
cmZhY2U7CitjbGFzcyBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOwogCiBjbGFzcyBRdEdlc3R1
cmVSZWNvZ25pemVyIHsKIHByb3RlY3RlZDoKLSAgICBRdEdlc3R1cmVSZWNvZ25pemVyKFRvdWNo
Vmlld0ludGVyZmFjZSopOworICAgIFF0R2VzdHVyZVJlY29nbml6ZXIoVmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZSopOwogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIFRvdWNoVmlld0ludGVyZmFj
ZSogY29uc3QgbV90b3VjaFZpZXdJbnRlcmZhY2U7CisgICAgVmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZSogY29uc3QgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOwogICAgIGVudW0gU3RhdGUg
ewogICAgICAgICBOb0dlc3R1cmUsCiAgICAgICAgIEdlc3R1cmVSZWNvZ25pdGlvblN0YXJ0ZWQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVj
b2duaXplci5jcHAKaW5kZXggYmFkZjYwZDdmYTFmY2M3MGMzMzQ3YzA3NWNhMGNiODg4OTgwYTYz
My4uMWZiZDhjY2IzZTk3ODM5NzIzMzY2ZTA3MTdiNjhiZDA1M2Y5YmU1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNw
cApAQCAtMjMsMTUgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlF0UGFuR2VzdHVyZVJlY29n
bml6ZXIuaCIKIAotI2luY2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVF0UGFuR2VzdHVyZVJlY29nbml6ZXI6OlF0UGFuR2VzdHVyZVJl
Y29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKiB0b3VjaFZpZXdJbnRlcmZhY2UpCi0gICAgOiBR
dEdlc3R1cmVSZWNvZ25pemVyKHRvdWNoVmlld0ludGVyZmFjZSkKK1F0UGFuR2VzdHVyZVJlY29n
bml6ZXI6OlF0UGFuR2VzdHVyZVJlY29nbml6ZXIoVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSog
aW50ZXJhY3Rpb25FbmdpbmUpCisgICAgOiBRdEdlc3R1cmVSZWNvZ25pemVyKGludGVyYWN0aW9u
RW5naW5lKQogewogICAgIHJlc2V0KCk7CiB9CkBAIC00NSw3ICs0Niw3IEBAIGJvb2wgUXRQYW5H
ZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCkKICAg
ICAvLyBIYXZpbmcgbXVsdGlwbGUgdG91Y2ggcG9pbnRzIGNhbmNlbCB0aGUgcGFubmluZyBnZXN0
dXJlLgogICAgIGlmIChldmVudC0+dG91Y2hQb2ludHMoKS5zaXplKCkgPiAxKSB7CiAgICAgICAg
IGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKQotICAgICAgICAgICAgbV90b3VjaFZp
ZXdJbnRlcmZhY2UtPnBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKKyAgICAgICAgICAgIG1fdmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS0+cGFuR2VzdHVyZUNhbmNlbGxlZCgpOwogICAgICAgICByZXNl
dCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNjgsMTggKzY5LDE4IEBAIGJv
b2wgUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIG1fc3Rh
dGUgPSBHZXN0dXJlUmVjb2duaXplZDsKLSAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNl
LT5wYW5HZXN0dXJlU3RhcnRlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLT5wYW5HZXN0dXJlU3RhcnRlZCgpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gR2VzdHVyZVJlY29nbml6ZWQpOwogICAgICAgICAvLyBPZmZzZXQgc2VudCB0
byB0aGUgdmlld3MgbXVzdCBiZSBpbiBwYWdlIHZpZXcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAg
ICAgUVBvaW50RiBvZmZzZXRTaW5jZUxhc3RFdmVudCh0b3VjaFBvaW50LnBvcygpIC0gdG91Y2hQ
b2ludC5sYXN0UG9zKCkpOwotICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGFuR2VzdHVy
ZVJlcXVlc3RTY3JvbGwob2Zmc2V0U2luY2VMYXN0RXZlbnQueCgpLCBvZmZzZXRTaW5jZUxhc3RF
dmVudC55KCkpOworICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBhbkdlc3R1
cmVSZXF1ZXN0VXBkYXRlKG9mZnNldFNpbmNlTGFzdEV2ZW50LngoKSwgb2Zmc2V0U2luY2VMYXN0
RXZlbnQueSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgUUV2ZW50
OjpUb3VjaEVuZDoKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gR2VzdHVyZVJlY29nbml6ZWQpIHsK
LSAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJlRW5kZWQoKTsKKyAg
ICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGFuR2VzdHVyZUVuZGVkKCk7
CiAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVS
ZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVj
b2duaXplci5oCmluZGV4IDgwNzk1OTM0N2MyNzIzZmYxMTlmODM0ODJmMTNkMzUwNzM5OGUxN2Yu
Ljc0YmI3OWZhMmE2ZTU0MTA2NDBlZTM2NWVjNGJkODA1NGI4NjRkZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaApAQCAt
NDEsNyArNDEsNyBAQCBjb25zdCBxcmVhbCBwYW5uaW5nSW5pdGlhbFRyaWdnZXJEaXN0YW5jZVRo
cmVzaG9sZCA9IDUuOwogCiBjbGFzcyBRdFBhbkdlc3R1cmVSZWNvZ25pemVyIDogcHJpdmF0ZSBR
dEdlc3R1cmVSZWNvZ25pemVyIHsKIHB1YmxpYzoKLSAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVy
KFRvdWNoVmlld0ludGVyZmFjZSopOworICAgIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIoVmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZSopOwogICAgIGJvb2wgcmVjb2duaXplKGNvbnN0IFFUb3VjaEV2
ZW50Kik7CiAgICAgdm9pZCByZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IGY5ZDVlNzFl
NDE5MTMwODQ1NGMzMDU2ZjZjZmFiMDExODM4YTFiODYuLjNhZmU3OTM5MTNmNTcyYWIxNTllMjk5
MzI2ZmRkYWQ3ZjdiMzMwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgi
CiAKLSNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmgiCiAjaW5jbHVkZSA8UXRDb3JlL1FMaW5lRj4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00OSw4ICs0OSw4IEBAIHN0YXRpYyBpbmxpbmUgUVBvaW50RiBjb21wdXRl
VG91Y2hDZW50ZXIoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50MSwKICAgICBy
ZXR1cm4gKHBvaW50MS5wb3MoKSArIHBvaW50Mi5wb3MoKSkgLyAyLjBmOwogfQogCi1RdFBpbmNo
R2VzdHVyZVJlY29nbml6ZXI6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcihUb3VjaFZpZXdJbnRl
cmZhY2UqIHRvdWNoVmlld0ludGVyZmFjZSkKLSAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIodG91
Y2hWaWV3SW50ZXJmYWNlKQorUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVy
ZVJlY29nbml6ZXIoVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25FbmdpbmUp
CisgICAgOiBRdEdlc3R1cmVSZWNvZ25pemVyKGludGVyYWN0aW9uRW5naW5lKQogewogICAgIHJl
c2V0KCk7CiB9CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVy
OjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgIGNvbnN0IFFMaXN0PFFU
b3VjaEV2ZW50OjpUb3VjaFBvaW50PiYgdG91Y2hQb2ludHMgPSBldmVudC0+dG91Y2hQb2ludHMo
KTsKICAgICBpZiAodG91Y2hQb2ludHMuc2l6ZSgpIDwgMikgewogICAgICAgICBpZiAobV9zdGF0
ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkKLSAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNl
LT5waW5jaEdlc3R1cmVFbmRlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLT5waW5jaEdlc3R1cmVFbmRlZCgpOwogICAgICAgICByZXNldCgpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtOTYsNyArOTYsNyBAQCBib29sIFF0UGluY2hHZXN0dXJl
UmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCkKICAgICAgICAg
ICAgICAgICBpZiAocGluY2hEaXN0YW5jZSA8IHBpbmNoSW5pdGlhbFRyaWdnZXJEaXN0YW5jZVRo
cmVzaG9sZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBHZXN0dXJlUmVjb2duaXplZDsKLSAgICAgICAgICAgICAgICBtX3RvdWNo
Vmlld0ludGVyZmFjZS0+cGluY2hHZXN0dXJlU3RhcnRlZCgpOworICAgICAgICAgICAgICAgIG1f
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGluY2hHZXN0dXJlU3RhcnRlZCgpOwogCiAgICAg
ICAgICAgICAgICAgLy8gV2UgcmVzZXQgdGhlIGluaXRpYWwgcG9zaXRpb24gdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBqdW1wIGNhdXNlZAogICAgICAgICAg
ICAgICAgIC8vIGJ5IHNraXBwaW5nIGFsbCB0aGUgZXZlbnRzIGJldHdlZW4gdGhlIGJlZ2lubmlu
ZyBhbmQgd2hlbiB0aGUgdGhyZXNob2xkIGlzIGhpdC4KQEAgLTExMCwxNCArMTEwLDE0IEBAIGJv
b2wgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQq
IGV2ZW50KQogICAgICAgICAgICAgY29uc3QgcXJlYWwgaW5pdGlhbFNwYW5EaXN0YW5jZSA9IFFM
aW5lRihtX3BvaW50MS5pbml0aWFsU2NyZWVuUG9zaXRpb24sIG1fcG9pbnQyLmluaXRpYWxTY3Jl
ZW5Qb3NpdGlvbikubGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBxcmVhbCB0b3RhbFNjYWxl
RmFjdG9yID0gY3VycmVudFNwYW5EaXN0YW5jZSAvIGluaXRpYWxTcGFuRGlzdGFuY2U7CiAgICAg
ICAgICAgICBjb25zdCBRUG9pbnRGIHRvdWNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUgPSBj
b21wdXRlVG91Y2hDZW50ZXIocG9pbnQxLCBwb2ludDIpOwotICAgICAgICAgICAgbV90b3VjaFZp
ZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJblBhZ2VW
aWV3Q29vcmRpbmF0ZSwgdG90YWxTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBtX3ZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJ
blBhZ2VWaWV3Q29vcmRpbmF0ZSwgdG90YWxTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gR2VzdHVy
ZVJlY29nbml6ZWQpIHsKLSAgICAgICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5waW5jaEdl
c3R1cmVFbmRlZCgpOworICAgICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5w
aW5jaEdlc3R1cmVFbmRlZCgpOwogICAgICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggYzNjOTcxOTk0OWFkNDVkOTgx
ZWJjNmY1M2E2NzE5MzAyZjRhMGVkYS4uZmFjNzBlOGY3ZGE4MTZiNzc4ZDcxOWY1MTEwMWFjMDA2
N2VhYzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hH
ZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBp
bmNoR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMzgsOCArMzgsNiBAQCBRVF9FTkRfTkFNRVNQQUNF
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBUb3VjaFZpZXdJbnRlcmZhY2U7Ci0KIGNs
YXNzIFF0UGluY2hHZXN0dXJlUmVjb2duaXplciA6IHByaXZhdGUgUXRHZXN0dXJlUmVjb2duaXpl
ciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRvdWNoUG9pbnRJbmZvcm1hdGlvbiB7CkBAIC01Miw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgUVBvaW50RiBpbml0aWFsUG9zaXRpb247CiAgICAg
fTsKIAotICAgIFF0UGluY2hHZXN0dXJlUmVjb2duaXplcihUb3VjaFZpZXdJbnRlcmZhY2UqKTsK
KyAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIoVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSop
OwogICAgIGJvb2wgcmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50Kik7CiAgICAgdm9pZCByZXNl
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNw
cAppbmRleCA3ZDBjMmNiM2MyZWEzNDUxNjFhMzVjNjlmMTNlY2Q0YzJlNTM0MjQ4Li5kZDI3ODFm
NDY3OTE4M2Y2MjM0MWIwMGZlOWM0NDA1NjJiMDFiMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTQyMCw2ICs0MjAsMTEgQEAgdm9p
ZCBRdFdlYlBhZ2VQcm94eTo6bG9hZERpZEJlZ2luKCkKICAgICBtX3ZpZXdJbnRlcmZhY2UtPmxv
YWREaWRCZWdpbigpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkQ29tbWl0KCkK
K3sKKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmxvYWREaWRDb21taXQoKTsKK30KKwogdm9pZCBRdFdl
YlBhZ2VQcm94eTo6bG9hZERpZFN1Y2NlZWQoKQogewogICAgIG1fdmlld0ludGVyZmFjZS0+bG9h
ZERpZFN1Y2NlZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmgKaW5kZXggZmE2YzI5MWI1NGM1YzBlODY3NzVkYTE5N2YzMTFlM2RjZGUyYjExNS4uODg1
ZjY3ZTMyMzNjYTI2ZDg2YmE5MzRmZGQ2ZTVhYTVmNGJlZDQzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShjb25zdCBRU3RyaW5nJik7CiAKICAgICB2b2lk
IGxvYWREaWRCZWdpbigpOworICAgIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAgIHZvaWQgbG9h
ZERpZFN1Y2NlZWQoKTsKICAgICB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmluZGV4IDBkNWVjZGU1NThl
MmZiN2Y3MzMwYjlmYzkwMTMzMWEwZjViMzMxOGEuLjFiMzRhMzQwYzI2ZjY1OGM0MWY4NzVlODYw
ZjFmNjhjYzQwZGEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC0zMSw2NiArMzEsMTEgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBUb3VjaFZpZXdJbnRlcmZhY2U6OlRvdWNoVmlld0ludGVyZmFjZShRVG91Y2hXZWJWaWV3
KiB2aWV3cG9ydFZpZXcsIFFUb3VjaFdlYlBhZ2UqIHBhZ2VWaWV3KQogICAgIDogbV92aWV3cG9y
dFZpZXcodmlld3BvcnRWaWV3KQogICAgICwgbV9wYWdlVmlldyhwYWdlVmlldykKLSAgICAsIG1f
cGluY2hTdGFydFNjYWxlKDEuZikKIHsKICAgICBRX0FTU0VSVChtX3ZpZXdwb3J0Vmlldyk7CiAg
ICAgUV9BU1NFUlQobV9wYWdlVmlldyk7CiB9CiAKLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpw
YW5HZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdp
bmUgKHN0b3AgYW5pbWF0ZWQgR0lGLCBldGMpLgotICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBo
eXNpY3MgZm9yIHBhbm5pbmcgKHN0b3AgYW5pbWF0aW9uLCBldGMpLgotfQotCi12b2lkIFRvdWNo
Vmlld0ludGVyZmFjZTo6cGFuR2VzdHVyZVJlcXVlc3RTY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVh
bCBkZWx0YVkpCi17Ci0gICAgLy8gVHJhbnNsYXRlIHRoZSBkZWx0YSBmcm9tIHBhZ2UgdG8gdmll
d3BvcnQgY29vcmRpbmF0ZXMuCi0gICAgUVBvaW50RiBpdGVtUG9zaXRpb25Jbkl0ZW1Db29yZHMg
PSBtX3BhZ2VWaWV3LT5tYXBGcm9tSXRlbShtX3BhZ2VWaWV3LT5wYXJlbnRJdGVtKCksIG1fcGFn
ZVZpZXctPnBvcygpKTsKLSAgICBRUG9pbnRGIGRlc3RJblZpZXdwb3J0Q29vcmRzID0gbV92aWV3
cG9ydFZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXcsIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3Jk
cyArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkpKTsKLSAgICBRUG9pbnRGIG9mZnNldEluVmlld3Bv
cnRDb29yZHMgPSBkZXN0SW5WaWV3cG9ydENvb3JkcyAtIG1fdmlld3BvcnRWaWV3LT5tYXBGcm9t
SXRlbShtX3BhZ2VWaWV3LT5wYXJlbnRJdGVtKCksIG1fcGFnZVZpZXctPnBvcygpKTsKLSAgICBt
X3ZpZXdwb3J0Vmlldy0+ZC0+c2Nyb2xsKG9mZnNldEluVmlld3BvcnRDb29yZHMueCgpLCBvZmZz
ZXRJblZpZXdwb3J0Q29vcmRzLnkoKSk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpw
YW5HZXN0dXJlRW5kZWQoKQotewotICAgIC8vIEZJWE1FOiB0cmlnZ2VyIHBoeXNpY3MgZW5naW5l
IGZvciBhbmltYXRpb24gKHRoZSBXZWIgZW5naW5lIHNob3VsZCBiZSByZXN1bWVkIGFmdGVyIHRo
ZSBhbmltYXRpb24uKQotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGFuR2VzdHVyZUNh
bmNlbGxlZCgpCi17Ci0gICAgLy8gRklYTUU6IHJlc2V0IHBoeXNpY3MuCi0gICAgLy8gRklYTUU6
IHJlc3VtZSB0aGUgV2ViIGVuZ2luZS4KLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBp
bmNoR2VzdHVyZVN0YXJ0ZWQoKQotewotICAgIC8vIEZJWE1FOiBzdXNwZW5kIHRoZSBlbmdpbmUu
Ci0gICAgbV9waW5jaFN0YXJ0U2NhbGUgPSBtX3BhZ2VWaWV3LT5zY2FsZSgpOwotfQotCi12b2lk
IFRvdWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9p
bnRGJiBwaW5jaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlLCBxcmVhbCB0b3RhbFNjYWxlRmFj
dG9yKQotewotICAgIC8vIEZJWE1FOiBpdCBpcyBhIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGF0
OgotICAgIC8vIC10aGUgc2NhbGUgc2hvdWxkIGJlIGRvbmUgY2VudGVyZWQgb24gdGhlIHBpbmNo
IGNlbnRlci4KLSAgICAvLyAtY2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBt
b3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhlIHpvb20gZmFjdG9yCi0gICAgLy8gIGRvZXMgbm90IGNo
YW5nZS4gQm90aCB0aGUgem9vbSBhbmQgdGhlIHBhbm5pbmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhy
b3VnaCB0aGUgcGh5c2ljcyBlbmdpbmUuCi0gICAgY29uc3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNo
U3RhcnRTY2FsZSAqIHRvdGFsU2NhbGVGYWN0b3I7Ci0gICAgUVBvaW50RiBvbGRQaW5jaENlbnRl
ck9uUGFyZW50ID0gbV9wYWdlVmlldy0+bWFwVG9JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0o
KSwgcGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7Ci0gICAgbV9wYWdlVmlldy0+c2V0
U2NhbGUoc2NhbGUpOwotICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9IG1fcGFn
ZVZpZXctPm1hcFRvSXRlbShtX3BhZ2VWaWV3LT5wYXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Q
YWdlVmlld0Nvb3JkaW5hdGUpOwotICAgIG1fcGFnZVZpZXctPnNldFBvcyhtX3BhZ2VWaWV3LT5w
b3MoKSAtIChuZXdQaW5jaENlbnRlck9uUGFyZW50IC0gb2xkUGluY2hDZW50ZXJPblBhcmVudCkp
OwotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlRW5kZWQoKQotewot
ICAgIC8vIEZJWE1FOiBjb21taXQgc2NhbGUgd2l0aCB0aGUgc2NhbGUgdmFsdWUgaW4gdGhlIHZh
bGlkIHJhbmdlIGluIG9yZGVyIHRvIGdldCBuZXcgdGlsZXMuCi0gICAgLy8gRklYTUU6IGFuaW1h
dGUgdGhlIGJhY2sgem9vbSBpbiB0aGUgdmFsaWQgcmFuZ2UuCi0gICAgLy8gRklYTUU6IHJlc3Vt
ZSB0aGUgZW5naW5lIGFmdGVyIHRoZSBhbmltYXRpb24uCi0gICAgbV9wYWdlVmlldy0+ZC0+Y29t
bWl0U2NhbGVDaGFuZ2UoKTsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+dmlld3BvcnRSZWN0VXBk
YXRlZCgpOwotfQotCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkRmluZFpvb21hYmxlQXJl
YShjb25zdCBRUG9pbnQmLCBjb25zdCBRUmVjdCYpCiB7CiB9CkBAIC0xMTEsMTQgKzU2LDkgQEAg
UVNpemUgVG91Y2hWaWV3SW50ZXJmYWNlOjpkcmF3aW5nQXJlYVNpemUoKQogCiB2b2lkIFRvdWNo
Vmlld0ludGVyZmFjZTo6Y29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJiBuZXdTaXplKQog
ewotICAgIC8vIEZJWE1FOiB0aGUgdmlld3BvcnQgc2hvdWxkIHRha2UgY2FyZSBvZjoKLSAgICAv
LyAtcmVzaXplIHRoZSBwYWdlCi0gICAgLy8gLWNoYW5nZSB0aGUgem9vbSBsZXZlbCBpZiBuZWVk
ZWQKLSAgICAvLyAtbW92ZSB0aGUgcGFnZSBiYWNrIGluIHZpZXdwb3J0IGJvdW5kYXJpZXMgaWYg
bmVlZGVkCi0gICAgLy8gLXVwZGF0ZSB0aGUgdmlld3BvcnQgcmVjdAogICAgIG1fcGFnZVZpZXct
PnNldFdpZHRoKG5ld1NpemUud2lkdGgoKSk7CiAgICAgbV9wYWdlVmlldy0+c2V0SGVpZ2h0KG5l
d1NpemUuaGVpZ2h0KCkpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT52aWV3cG9ydFJlY3RVcGRh
dGVkKCk7CisgICAgbV92aWV3cG9ydFZpZXctPmQtPnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMo
KTsKIH0KIAogYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6OmlzQWN0aXZlKCkKQEAgLTE3OCw2ICsx
MTgsMTEgQEAgdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRCZWdpbigpCiAgICAgZW1p
dCBtX3BhZ2VWaWV3LT5sb2FkU3RhcnRlZCgpOwogfQogCit2b2lkIFRvdWNoVmlld0ludGVyZmFj
ZTo6bG9hZERpZENvbW1pdCgpCit7CisgICAgbV92aWV3cG9ydFZpZXctPmQtPmxvYWREaWRDb21t
aXQoKTsKK30KKwogdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRTdWNjZWVkKCkKIHsK
ICAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAppbmRleCAzMWZjMjBkNjhiYjNi
Yjk4YTkxODM1YTkyNDhlMmQ5ZDdhYWI1ZWI4Li45NzI5ZDY3YzE0MzM1ODQyYmI2MzA4NTllZjI5
NGJlNjYwZDYzMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91
Y2hWaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNo
Vmlld0ludGVyZmFjZS5oCkBAIC00MCwxNSArNDAsNiBAQCBjbGFzcyBUb3VjaFZpZXdJbnRlcmZh
Y2UgOiBwdWJsaWMgVmlld0ludGVyZmFjZQogcHVibGljOgogICAgIFRvdWNoVmlld0ludGVyZmFj
ZShRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydFZpZXcsIFFUb3VjaFdlYlBhZ2UqIHBhZ2VWaWV3KTsK
IAotICAgIHZvaWQgcGFuR2VzdHVyZVN0YXJ0ZWQoKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVSZXF1
ZXN0U2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdGFZKTsKLSAgICB2b2lkIHBhbkdlc3R1
cmVFbmRlZCgpOwotICAgIHZvaWQgcGFuR2VzdHVyZUNhbmNlbGxlZCgpOwotCi0gICAgdm9pZCBw
aW5jaEdlc3R1cmVTdGFydGVkKCk7Ci0gICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRl
KGNvbnN0IFFQb2ludEYmLCBxcmVhbCk7Ci0gICAgdm9pZCBwaW5jaEdlc3R1cmVFbmRlZCgpOwot
CiAgICAgU0dBZ2VudCogc2NlbmVHcmFwaEFnZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC03
Myw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1Rl
eHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29u
c3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2Vl
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCk7CkBAIC04Niw4ICs3OCw2
IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIFFUb3VjaFdlYlZpZXcqIGNvbnN0IG1fdmlld3Bv
cnRWaWV3OwogICAgIFFUb3VjaFdlYlBhZ2UqIGNvbnN0IG1fcGFnZVZpZXc7Ci0KLSAgICBxcmVh
bCBtX3BpbmNoU3RhcnRTY2FsZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvVmlld0ludGVyZmFjZS5oCmluZGV4IGQ4NWYxZTU3ZDg0Yzk0YTJkOTQ2NjA3MjQ5ZDc3OTQ2
OWUxYTc3OGMuLjcwYTZmNjM2OGRmNGRkZmQ2MmRiNWMyYmZlODExNDA3MDUyMmE3M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaApAQCAtNjcsNiArNjcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3Qg
UVN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFD
dXJzb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRCZWdpbigpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERp
ZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJF
cnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MjQxNTZmMzA4ZWRiNmQzMWUxODhj
NzcyOTg4YmE3ZWJhOTUxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAKQEAgLTAsMCArMSwyOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQmVuamFtaW4gUG91bGFpbiA8YmVuamFtaW5Ad2Vi
a2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpbmNsdWRlICJWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCisKKyNp
bmNsdWRlIDxRUG9pbnRGPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGlubGluZSBRUmVjdEYgdmlzaWJsZVJlY3RJbkNv
bnRlbnRDb29yZGluYXRlKGNvbnN0IFFTR0l0ZW0qIGNvbnRlbnQsIGNvbnN0IFFTR0l0ZW0qIHZp
ZXdwb3J0KQoreworICAgIGNvbnN0IFFSZWN0RiB2aWV3cG9ydEluQ29udGVudENvb3JkaW5hdGUg
PSBjb250ZW50LT5tYXBSZWN0RnJvbUl0ZW0odmlld3BvcnQsIHZpZXdwb3J0LT5ib3VuZGluZ1Jl
Y3QoKSk7CisgICAgY29uc3QgUVJlY3RGIHZpc2libGVBcmVhID0gY29udGVudC0+Ym91bmRpbmdS
ZWN0KCkuaW50ZXJzZWN0ZWQodmlld3BvcnRJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAgICByZXR1
cm4gdmlzaWJsZUFyZWE7Cit9CisKK3N0YXRpYyBpbmxpbmUgUVJlY3RGIGNvbnRlbnRSZWN0SW5W
aWV3cG9ydENvb3JkaW5hdGUoY29uc3QgUVNHSXRlbSogY29udGVudCwgY29uc3QgUVNHSXRlbSog
dmlld3BvcnQpCit7CisgICAgcmV0dXJuIHZpZXdwb3J0LT5tYXBSZWN0RnJvbUl0ZW0oY29udGVu
dCwgY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOworfQorCisvLyBVcGRhdGluZyBjb250ZW50IHBy
b3BlcnRpZXMgY2F1c2UgdGhlIG5vdGlmeSBzaWduYWxzIHRvIGJlIHNlbnQgYnkgdGhlIGNvbnRl
bnQgaXRlbSBpdHNlbGYuCisvLyBTaW5jZSB3ZSBtYW5hZ2UgdGhvc2UgZGlmZmVyZW50bHksIHdl
IGRvIG5vdCB3YW50IHRvIHJlc3BvbmQKKy8vIHRvIHRoZW0gd2hlbiB3ZSBhcmUgdGhlIG9uZSBj
aGFuZ2luZyB0aGUgY29udGVudC4KKy8vCisvLyBUaGUgZ3VhcmQgbWFrZSBzdXJlIHRoZSBzaWdu
YWwgY29udGVudENoYW5nZWRJblZpZXdwb3J0KCkgaXMgc2VudCBpZiBuZWNlc3NhcnkuCisvLwor
Ly8gVGhlIHB1YmxpYyBtZXRob2RzIHNob3VsZCBjcmVhdGUgdGhlIGd1YXJkIGlmIHRoZXkgbWln
aHQgdXBkYXRlIGNvbnRlbnQuCitjbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkIHsKK3B1YmxpYzoK
KyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIHZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUpCisgICAgICAgIDogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQorICAgICAgICAsIHdhc1VwZGF0aW5nQ29udGVu
dCh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2lzVXBkYXRpbmdDb250ZW50KQorICAgICAg
ICAsIHByZXZpb3VzUG9zaXRpb24odmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50
LT5wb3MoKSkKKyAgICAgICAgLCBwcmV2aW91c1NpemUodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS0+bV9jb250ZW50LT53aWR0aCgpLCB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRl
bnQtPmhlaWdodCgpKQorICAgICAgICAsIHByZXZpb3VzU2NhbGUodmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS0+bV9jb250ZW50LT5zY2FsZSgpKQorICAgIHsKKyAgICAgICAgdmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCA9IHRydWU7CisgICAgfQorCisgICAg
flZpZXdwb3J0VXBkYXRlR3VhcmQoKQorICAgIHsKKyAgICAgICAgaWYgKCF3YXNVcGRhdGluZ0Nv
bnRlbnQpIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uICE9IHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+cG9zKCkKKyAgICAgICAgICAgICAgICAgICAgfHwg
cHJldmlvdXNTaXplLndpZHRoKCkgIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250
ZW50LT53aWR0aCgpCisgICAgICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzU2l6ZS5oZWlnaHQo
KSAhPSB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPmhlaWdodCgpCisgICAg
ICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzU2NhbGUgIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZS0+bV9jb250ZW50LT5zY2FsZSgpKQorICAgICAgICAgICAgICAgIGVtaXQgdmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS0+Y29udGVudENoYW5nZWRJblZpZXdwb3J0KCk7CisgICAgICAgIH0K
KyAgICAgICAgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCA9
IHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSogY29uc3Qgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBjb25z
dCBib29sIHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICBjb25zdCBRUG9pbnRGIHByZXZpb3VzUG9z
aXRpb247CisgICAgY29uc3QgUVNpemVGIHByZXZpb3VzU2l6ZTsKKyAgICBjb25zdCBxcmVhbCBw
cmV2aW91c1NjYWxlOworfTsKKworVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiB2aWV3cG9ydCwgUVNHSXRlbSogY29udGVu
dCkKKyAgICA6IG1fdmlld3BvcnQodmlld3BvcnQpCisgICAgLCBtX2NvbnRlbnQoY29udGVudCkK
KyAgICAsIG1faXNVcGRhdGluZ0NvbnRlbnQoZmFsc2UpCisgICAgLCBtX3BpbmNoU3RhcnRTY2Fs
ZSgxLmYpCit7CisgICAgcmVzZXQoKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHhD
aGFuZ2VkKCkpLCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJl
Y3RDb25uZWN0aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHlDaGFuZ2VkKCkp
LCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0
aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHdpZHRoQ2hhbmdlZCgpKSwgdGhp
cywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7
CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTChoZWlnaHRDaGFuZ2VkKCkpLCB0aGlzLCBT
TE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyAg
ICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHNjYWxlQ2hhbmdlZCgpKSwgdGhpcywgU0xPVChj
b250ZW50U2NhbGVDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQg
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cmVzZXQoKQoreworICAgIFZpZXdwb3J0VXBkYXRl
R3VhcmQgZ3VhcmQodGhpcyk7CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyA9IFVzZXJIYXNO
b3RJbnRlcmFjdGVkV2l0aENvbnRlbnQ7CisgICAgc2V0Q29uc3RyYWludHMoQ29uc3RyYWludHMo
KSk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q29uc3RyYWludHMo
Y29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChtX2NvbnN0cmFpbnRz
ID09IGNvbnN0cmFpbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBxcmVhbCBwcmV2
aW91c1NjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOworICAgIHsKKyAgICAgICAgVmlld3BvcnRV
cGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFp
bnRzOworICAgICAgICB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKKyAgICB9CisgICAgaWYgKG1f
Y29udGVudC0+c2NhbGUoKSAhPSBwcmV2aW91c1NjYWxlKQorICAgICAgICBlbWl0IGNvbW1pdFNj
YWxlQ2hhbmdlKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2Vz
dHVyZVN0YXJ0ZWQoKQoreworICAgIC8vIEZJWE1FOiBzdXNwZW5kIHRoZSBXZWIgZW5naW5lIChz
dG9wIGFuaW1hdGVkIEdJRiwgZXRjKS4KKyAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBwaHlzaWNz
IGZvciBwYW5uaW5nIChzdG9wIGFuaW1hdGlvbiwgZXRjKS4KKyAgICBtX3VzZXJJbnRlcmFjdGlv
bkZsYWdzIHw9IFVzZXJIYXNNb3ZlZENvbnRlbnQ7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6cGFuR2VzdHVyZVJlcXVlc3RVcGRhdGUocXJlYWwgZGVsdGFYLCBxcmVhbCBk
ZWx0YVkpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKworICAgIFFQ
b2ludEYgaXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRzID0gbV9jb250ZW50LT5tYXBGcm9tSXRlbSht
X2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgbV9jb250ZW50LT5wb3MoKSk7CisgICAgUVBvaW50RiBk
ZXN0SW5WaWV3cG9ydENvb3JkcyA9IG1fdmlld3BvcnQtPm1hcEZyb21JdGVtKG1fY29udGVudCwg
aXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOworCisg
ICAgbV9jb250ZW50LT5zZXRQb3MoZGVzdEluVmlld3BvcnRDb29yZHMpOworfQorCit2b2lkIFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQoKQoreworICAgIFZp
ZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgLy8gRklYTUU6IHJlc2V0IHBoeXNp
Y3MuCisgICAgcGFuR2VzdHVyZUVuZGVkKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKCkKK3sKKyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1
YXJkKHRoaXMpOworICAgIGFuaW1hdGVDb250ZW50UG9zaXRpb25Ub0JvdW5kYXJpZXMoKTsKK30K
Kwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKCkK
K3sKKyAgICBpZiAoIW1fY29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc1NjYWxlZENvbnRlbnQ7
CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyB8PSBVc2VySGFzTW92ZWRDb250ZW50OworICAg
IG1fcGluY2hTdGFydFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOworfQorCit2b2lkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBv
aW50RiYgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlLCBxcmVhbCB0b3RhbFNjYWxlRmFj
dG9yKQoreworICAgIGlmICghbV9jb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKworICAgIC8v
ICBDaGFuZ2VzIG9mIHRoZSBjZW50ZXIgcG9zaXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZl
biBpZiB0aGUgem9vbSBmYWN0b3IKKyAgICAvLyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6
b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQgYmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNz
IGVuZ2luZS4KKyAgICBjb25zdCBxcmVhbCBzY2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90
YWxTY2FsZUZhY3RvcjsKKyAgICBRUG9pbnRGIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2Nv
bnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJbkNv
bnRlbnRDb29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFNjYWxlKHNjYWxlKTsKKyAgICBR
UG9pbnRGIG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2Nv
bnRlbnQtPnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAg
ICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVyT25Q
YXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlRW5kZWQoKQoreworICAgIGlmICghbV9jb25zdHJh
aW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBW
aWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworICAgICAgICAvLyBGSVhNRTogcmVzdW1l
IHRoZSBlbmdpbmUgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4KKyAgICAgICAgYW5pbWF0ZUNvbnRlbnRT
Y2FsZVRvQm91bmRhcmllcygpOworICAgIH0KKyAgICBpZiAobV9waW5jaFN0YXJ0U2NhbGUgIT0g
bV9jb250ZW50LT5zY2FsZSgpKQorICAgICAgICBlbWl0IGNvbW1pdFNjYWxlQ2hhbmdlKCk7Cit9
CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdl
ZCgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgdXBkYXRlQ29udGVudElm
TmVlZGVkKCk7CisKKyAgICAvLyBXZSBtdXN0IG5vdGlmeSB0aGUgY2hhbmdlIHNvIHRoZSBjbGll
bnQgY2FuIHJlbHkgb24gdXMgZm9yIGFsbCBjaGFuZ2Ugb2YgR2VvbWV0cnkuCisgICAgZW1pdCBj
b250ZW50Q2hhbmdlZEluVmlld3BvcnQoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjpjb250ZW50U2NhbGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nQ29u
dGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0
aGlzKTsKKyAgICB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKKworICAgIC8vIFdlIG11c3Qgbm90
aWZ5IHRoZSBjaGFuZ2Ugc28gdGhlIGNsaWVudCBjYW4gcmVseSBvbiB1cyBmb3IgYWxsIGNoYW5n
ZSBvZiBHZW9tZXRyeS4KKyAgICBlbWl0IGNvbnRlbnRDaGFuZ2VkSW5WaWV3cG9ydCgpOworICAg
IGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjp1cGRhdGVDb250ZW50SWZOZWVkZWQoKQoreworICAgIHVwZGF0ZUNvbnRlbnRTY2Fs
ZUlmTmVlZGVkKCk7CisgICAgdXBkYXRlQ29udGVudFBvc2l0aW9uSWZOZWVkZWQoKTsKK30KKwor
dm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRl
ZCgpCit7CisgICAgY29uc3QgcXJlYWwgY3VycmVudENvbnRlbnRTY2FsZSA9IG1fY29udGVudC0+
c2NhbGUoKTsKKyAgICBxcmVhbCBjb250ZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7Cisg
ICAgaWYgKCEobV91c2VySW50ZXJhY3Rpb25GbGFncyAmIFVzZXJIYXNTY2FsZWRDb250ZW50KSkK
KyAgICAgICAgY29udGVudFNjYWxlID0gbV9jb25zdHJhaW50cy5pbml0aWFsU2NhbGU7CisKKyAg
ICBjb250ZW50U2NhbGUgPSBxQm91bmQobV9jb25zdHJhaW50cy5taW5pbXVtU2NhbGUsIGNvbnRl
bnRTY2FsZSwgbV9jb25zdHJhaW50cy5tYXhpbXVtU2NhbGUpOworCisgICAgaWYgKGNvbnRlbnRT
Y2FsZSAhPSBjdXJyZW50Q29udGVudFNjYWxlKSB7CisgICAgICAgIGNvbnN0IFFQb2ludEYgY2Vu
dGVyT2ZJbnRlcmVzdCA9IHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZShtX2NvbnRlbnQs
IG1fdmlld3BvcnQpLmNlbnRlcigpOworICAgICAgICBzY2FsZUNvbnRlbnQoY2VudGVyT2ZJbnRl
cmVzdCwgY29udGVudFNjYWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6dXBkYXRlQ29udGVudFBvc2l0aW9uSWZOZWVkZWQoKQoreworICAgIGlmICghKG1f
dXNlckludGVyYWN0aW9uRmxhZ3MgJiBVc2VySGFzTW92ZWRDb250ZW50KSkgeworICAgICAgICBt
X2NvbnRlbnQtPnNldFgoKG1fdmlld3BvcnQtPndpZHRoKCkgLSBjb250ZW50UmVjdEluVmlld3Bv
cnRDb29yZGluYXRlKG1fY29udGVudCwgbV92aWV3cG9ydCkud2lkdGgoKSkgLyAyKTsKKyAgICAg
ICAgbV9jb250ZW50LT5zZXRZKDApOworICAgIH0KKworICAgIC8vIEZJWE1FOiBpZiB0aGUgaXRl
bSBjYW4gYmUgZnVsbHkgaW4gdGhlIHZpZXdwb3J0IGFuZCBpcyBvdmVyIGEgc2lkZSwgcHVzaCBp
dCBiYWNrIGluIHZpZXcKKyAgICAvLyBGSVhNRTogaWYgdGhlIGl0ZW0gY2Fubm90IGJlIGZ1bGx5
IGluIHZpZXdwb3J0LCBhbmQgaXMgbm90IGNvdmVyaW5nIHRoZSB2aWV3cG9ydCwgcHVzaCBpdCBi
YWNrIGluIHZpZXcKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRl
Q29udGVudFBvc2l0aW9uVG9Cb3VuZGFyaWVzKCkKK3sKKyAgICBjb25zdCBRUmVjdEYgY29udGVu
dEdlb21ldHJ5ID0gbV92aWV3cG9ydC0+bWFwUmVjdEZyb21JdGVtKG1fY29udGVudCwgbV9jb250
ZW50LT5ib3VuZGluZ1JlY3QoKSk7CisgICAgUVBvaW50RiBuZXdQb3MgPSBjb250ZW50R2VvbWV0
cnkudG9wTGVmdCgpOworCisgICAgLy8gSG9yaXpvbnRhbCBjb3JyZWN0aW9uLgorICAgIGlmIChj
b250ZW50R2VvbWV0cnkud2lkdGgoKSA8IG1fdmlld3BvcnQtPndpZHRoKCkpCisgICAgICAgIG5l
d1Bvcy5zZXRYKChtX3ZpZXdwb3J0LT53aWR0aCgpIC0gY29udGVudEdlb21ldHJ5LndpZHRoKCkp
IC8gMik7CisgICAgZWxzZSB7CisgICAgICAgIG5ld1Bvcy5zZXRYKHFNaW4oMC4sIG5ld1Bvcy54
KCkpKTsKKyAgICAgICAgY29uc3QgcXJlYWwgcmlnaHRTaWRlR2FwID0gbV92aWV3cG9ydC0+Ym91
bmRpbmdSZWN0KCkucmlnaHQoKSAtIGNvbnRlbnRHZW9tZXRyeS5yaWdodCgpOworICAgICAgICBp
ZiAocmlnaHRTaWRlR2FwID4gMC4pCisgICAgICAgICAgICBuZXdQb3Muc2V0WChuZXdQb3MueCgp
ICsgcmlnaHRTaWRlR2FwKTsKKyAgICB9CisKKyAgICAvLyBWZXJ0aWNhbCBjb3JyZWN0aW9uLgor
ICAgIGlmIChjb250ZW50R2VvbWV0cnkuaGVpZ2h0KCkgPCBtX3ZpZXdwb3J0LT5oZWlnaHQoKSkK
KyAgICAgICAgbmV3UG9zLnNldFkoMCk7CisgICAgZWxzZSB7CisgICAgICAgIG5ld1Bvcy5zZXRZ
KHFNaW4oMC4sIG5ld1Bvcy55KCkpKTsKKyAgICAgICAgY29uc3QgcXJlYWwgYm90dG9tU2lkZUdh
cCA9IG1fdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgpLmJvdHRvbSgpIC0gY29udGVudEdlb21ldHJ5
LmJvdHRvbSgpOworICAgICAgICBpZiAoYm90dG9tU2lkZUdhcCA+IDAuKQorICAgICAgICAgICAg
bmV3UG9zLnNldFkobmV3UG9zLnkoKSArIGJvdHRvbVNpZGVHYXApOworICAgIH0KKworICAgIGlm
IChuZXdQb3MgIT0gbV9jb250ZW50LT5wb3MoKSkKKyAgICAgICAgLy8gRklYTUU6IERvIHlvdSBr
bm93IHdoYXQgQU5JTUFURSBtZWFucz8KKyAgICAgICAgbV9jb250ZW50LT5zZXRQb3MobmV3UG9z
KTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFNj
YWxlVG9Cb3VuZGFyaWVzKCkKK3sKKyAgICBjb25zdCBxcmVhbCBjdXJyZW50U2NhbGUgPSBtX2Nv
bnRlbnQtPnNjYWxlKCk7CisgICAgY29uc3QgcXJlYWwgYm91bmRlZFNjYWxlID0gcUJvdW5kKG1f
Y29uc3RyYWludHMubWluaW11bVNjYWxlLCBjdXJyZW50U2NhbGUsIG1fY29uc3RyYWludHMubWF4
aW11bVNjYWxlKTsKKyAgICBpZiAoY3VycmVudFNjYWxlICE9IGJvdW5kZWRTY2FsZSkgeworICAg
ICAgICAvLyBGSVhNRTogRG8geW91IGtub3cgd2hhdCBBTklNQVRFIG1lYW5zPworICAgICAgICBj
b25zdCBRUG9pbnRGIGNlbnRlck9mSW50ZXJlc3QgPSB2aXNpYmxlUmVjdEluQ29udGVudENvb3Jk
aW5hdGUobV9jb250ZW50LCBtX3ZpZXdwb3J0KS5jZW50ZXIoKTsKKyAgICAgICAgc2NhbGVDb250
ZW50KGNlbnRlck9mSW50ZXJlc3QsIGJvdW5kZWRTY2FsZSk7CisgICAgfQorfQorCit2b2lkIFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50
ZXJJbkNvbnRlbnRDb29yZGluYXRlLCBxcmVhbCBzY2FsZSkKK3sKKyAgICBRUG9pbnRGIG9sZFBp
bmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQtPnBhcmVu
dEl0ZW0oKSwgY2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSk7CisgICAgbV9jb250ZW50LT5zZXRT
Y2FsZShzY2FsZSk7CisgICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250
ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENv
b3JkaW5hdGUpOworICAgIG1fY29udGVudC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3
UGluY2hDZW50ZXJPblBhcmVudCAtIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQpKTsKK30KKworI2lu
Y2x1ZGUgIm1vY19WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcCIKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2Q1YWQ0NzcxMzMzNzdhYmMyZjQxNTc0NmJjZmY3OGZiMDljNDNjYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQmVuamFtaW4gUG91bGFpbiA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYg
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oCisjZGVmaW5lIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmVfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFF0Q29yZS9R
T2JqZWN0PgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFQb2ludEY7CitjbGFzcyBRU0dJ
dGVtOworUVRfRU5EX05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAor
CitwdWJsaWM6CisgICAgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiwg
UVNHSXRlbSopOworCisgICAgc3RydWN0IENvbnN0cmFpbnRzIHsKKyAgICAgICAgQ29uc3RyYWlu
dHMoKQorICAgICAgICAgICAgOiBpbml0aWFsU2NhbGUoMS4wKQorICAgICAgICAgICAgLCBtaW5p
bXVtU2NhbGUoMC4yNSkKKyAgICAgICAgICAgICwgbWF4aW11bVNjYWxlKDEuOCkKKyAgICAgICAg
ICAgICwgaXNVc2VyU2NhbGFibGUodHJ1ZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgcXJlYWwg
aW5pdGlhbFNjYWxlOworICAgICAgICBxcmVhbCBtaW5pbXVtU2NhbGU7CisgICAgICAgIHFyZWFs
IG1heGltdW1TY2FsZTsKKyAgICAgICAgYm9vbCBpc1VzZXJTY2FsYWJsZTsKKyAgICB9OworCisg
ICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgc2V0Q29uc3RyYWludHMoY29uc3QgQ29uc3RyYWlu
dHMmKTsKKworICAgIHZvaWQgcGFuR2VzdHVyZVN0YXJ0ZWQoKTsKKyAgICB2b2lkIHBhbkdlc3R1
cmVSZXF1ZXN0VXBkYXRlKHFyZWFsIGRlbHRhWCwgcXJlYWwgZGVsdGFZKTsKKyAgICB2b2lkIHBh
bkdlc3R1cmVDYW5jZWxsZWQoKTsKKyAgICB2b2lkIHBhbkdlc3R1cmVFbmRlZCgpOworCisgICAg
dm9pZCBwaW5jaEdlc3R1cmVTdGFydGVkKCk7CisgICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0
VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJl
YWwgdG90YWxTY2FsZUZhY3Rvcik7CisgICAgdm9pZCBwaW5jaEdlc3R1cmVFbmRlZCgpOworCitR
X1NJR05BTFM6CisgICAgLy8gVGhpcyBhZ2dyZWdhdGUgY2hhbmdlcyBvZiBzY2FsZSwgc2l6ZSBh
bmQgcG9zaXRpb24gaW4gb25lIHNpZ25hbCB0byBhdm9pZCBleHRyYSB3b3JrCisgICAgLy8gZm9y
IHRoZSBjbGllbnQgb2YgdGhlIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuCisgICAgdm9pZCBj
b250ZW50Q2hhbmdlZEluVmlld3BvcnQoKTsKKworICAgIHZvaWQgY29tbWl0U2NhbGVDaGFuZ2Uo
KTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIC8vIFJlc3BvbmQgdG8gY2hhbmdlcyBvZiBjb250
ZW50IHRoYXQgYXJlIG5vdCBkcml2ZW4gYnkgdXMsIGxpa2UgdGhlIHBhZ2UgcmVzaXppbmcgaXRz
ZWxmLgorICAgIHZvaWQgY29udGVudEdlb21ldHJ5Q2hhbmdlZCgpOworICAgIHZvaWQgY29udGVu
dFNjYWxlQ2hhbmdlZCgpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlQ29udGVudElmTmVl
ZGVkKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRlZCgpOworICAgIHZvaWQg
dXBkYXRlQ29udGVudFBvc2l0aW9uSWZOZWVkZWQoKTsKKworICAgIHZvaWQgYW5pbWF0ZUNvbnRl
bnRQb3NpdGlvblRvQm91bmRhcmllcygpOworICAgIHZvaWQgYW5pbWF0ZUNvbnRlbnRTY2FsZVRv
Qm91bmRhcmllcygpOworCisgICAgdm9pZCBzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2Vu
dGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpOworCisgICAgZnJpZW5kIGNsYXNz
IFZpZXdwb3J0VXBkYXRlR3VhcmQ7CisKKyAgICBjb25zdCBRU0dJdGVtKiBjb25zdCBtX3ZpZXdw
b3J0OworICAgIFFTR0l0ZW0qIGNvbnN0IG1fY29udGVudDsKKworICAgIENvbnN0cmFpbnRzIG1f
Y29uc3RyYWludHM7CisgICAgYm9vbCBtX2lzVXBkYXRpbmdDb250ZW50OworICAgIGVudW0gVXNl
ckludGVyYWN0aW9uRmxhZyB7CisgICAgICAgIFVzZXJIYXNOb3RJbnRlcmFjdGVkV2l0aENvbnRl
bnQgPSAwLAorICAgICAgICBVc2VySGFzTW92ZWRDb250ZW50ID0gMSwKKyAgICAgICAgVXNlckhh
c1NjYWxlZENvbnRlbnQgPSAyCisgICAgfTsKKyAgICBRX0RFQ0xBUkVfRkxBR1MoVXNlckludGVy
YWN0aW9uRmxhZ3MsIFVzZXJJbnRlcmFjdGlvbkZsYWcpOworICAgIFVzZXJJbnRlcmFjdGlvbkZs
YWdzIG1fdXNlckludGVyYWN0aW9uRmxhZ3M7CisKKyAgICBxcmVhbCBtX3BpbmNoU3RhcnRTY2Fs
ZTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Q29uc3RyYWludHMmIGEsIGNvbnN0IFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OkNvbnN0cmFpbnRzJiBiKQoreworICAgIHJldHVybiBhLmluaXRpYWxTY2FsZSA9PSBiLmluaXRp
YWxTY2FsZQorICAgICAgICAgICAgJiYgYS5taW5pbXVtU2NhbGUgPT0gYi5taW5pbXVtU2NhbGUK
KyAgICAgICAgICAgICYmIGEubWF4aW11bVNjYWxlID09IGIubWF4aW11bVNjYWxlCisgICAgICAg
ICAgICAmJiBhLmlzVXNlclNjYWxhYmxlID09IGIuaXNVc2VyU2NhbGFibGU7Cit9CisKK30KKwor
I2VuZGlmIC8qIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmVfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAppbmRleCA5ODJjYjQw
ZmM5ZDdhY2NlMGFkM2RmZDliZWZjZjMwNjcxOTA1Y2ZhLi5hMjFjY2JmMDdiZTFlNDQxNTg2OWE3
NDUzZjRhOWUxMTU5ZjExZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcXRvdWNod2VicGFnZXByb3h5LmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1RVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94
eShUb3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQqIGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK1FUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNo
V2ViUGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSwgUVdLQ29udGV4dCog
Y29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogICAgIDogUXRXZWJQYWdlUHJv
eHkodmlld0ludGVyZmFjZSwgY29udGV4dCwgcGFnZUdyb3VwUmVmKQotICAgICwgbV9wYW5HZXN0
dXJlUmVjb2duaXplcih2aWV3SW50ZXJmYWNlKQotICAgICwgbV9waW5jaEdlc3R1cmVSZWNvZ25p
emVyKHZpZXdJbnRlcmZhY2UpCisgICAgLCBtX3Bhbkdlc3R1cmVSZWNvZ25pemVyKHZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUpCisgICAgLCBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIodmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZSkKIHsKICAgICBpbml0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKaW5kZXggNzllYjBlNjZkZWRi
YzI1Y2EyNmFiYWRjOTczNDNiMDI3ZWJhMjU3Zi4uZGE1YjI3MTAyNzYzNTY1NmI0NWY1YWMxNzNk
ZDIzZTUzZjVmYjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0
b3VjaHdlYnBhZ2Vwcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91
Y2h3ZWJwYWdlcHJveHkuaApAQCAtMzAsMTIgKzMwLDE2IEBACiAjaW5jbHVkZSAiVG91Y2hWaWV3
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOworfQorCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCiBjbGFzcyBRVG91Y2hXZWJQYWdlUHJveHkgOiBwdWJsaWMgUXRXZWJQ
YWdlUHJveHkKIHsKIHB1YmxpYzoKLSAgICBRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50
ZXJmYWNlKiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUVRvdWNoV2Vi
UGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSosIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUq
LCBRV0tDb250ZXh0KiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVFdmVudChRRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA0NGViYjY5Y2RjMmRkZDI1
YWExMjU4M2FiZGI5NWRmMTEzOGM2Mjc0Li41Y2MyMDUwYmRhZjI0NmY2Y2UyOTBkNGNlMDk2MmYy
OWNlNDNjNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjUyLDYgKzI1Miw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9xdC9TR0FnZW50LmggXAogICAgIFVJUHJvY2Vzcy9xdC9TR1RpbGVO
b2RlLmggXAogICAgIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggXAorICAgIFVJUHJvY2Vz
cy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJV
bmRvQ29tbWFuZFF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVByb3h5UXQu
aCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBcCkBAIC00ODMsNiAr
NDg0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQ
cm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFUaWxlUXQuY3Bw
IFwKICAgICBVSVByb2Nlc3MvcXQvVGV4dENoZWNrZXJRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9x
dC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNv
bnRleHRNZW51UHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3Bw
IFwKICAgICBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104332</attachid>
            <date>2011-08-18 06:52:16 -0700</date>
            <delta_ts>2011-08-18 07:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110818155853.patch</filename>
            <type>text/plain</type>
            <size>48505</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li5lMjk1NTc2YjE1M2I2MmVjMGFjNmI3Mzc0MGY1N2Yw
MTYxZDcxYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTggIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUgdG8gaGFuZGxlIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3cG9y
dC4gVGhlIGNsYXNzIG1ha2UKKyAgICAgICAgc3VyZSB0aGUgUVRvdWNoV2ViUGFnZSBzdGF5cyBp
biB0aGUgdmlld3BvcnQgYW5kIGluIHRoZSBib3VuZGFyaWVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5jcHA6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKTogU2V0IHRoZSB0
cmFuc2Zvcm0gb3JpZ2luIHRvIHRoZSB0b3AgbGVmdCBzbworICAgICAgICB3ZSBjYW4gYXN1bWUg
dGhlIHBvc2l0aW9uIDAsIDAgaXMgYWx3YXlzIHRoZSB0b3AgbGVmdCBvZiB0aGUgcGFnZS4KKyAg
ICAgICAgKFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNoYW5nZSk6IE1ha2Ug
Y29tbWl0U2NhbGVDaGFuZ2UgYSBzbG90CisgICAgICAgIGluIG9yZGVyIHRvIGNvbXBsZXRlbHkg
ZGVjb3VwbGUgdGhlIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgYW5kIHRoZSBXZWJLaXQgY2xh
c3Nlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3Zp
ZXdwb3J0UmVjdFVwZGF0ZWQpOiBNYWtlIF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSBhIHNsb3QK
KyAgICAgICAgZm9yIHJlZHVjaW5nIGNvdXBsaW5nLgorICAgICAgICAoUVRvdWNoV2ViVmlld1By
aXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnNldFZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0
dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6
ZXIuaDogQ2hhbmdlIHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gdGFsayBkaXJlY3RseQorICAg
ICAgICB0byB0aGUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSBpbnN0ZWFkIG9mIGludGVyYWN0
aW5nIHRocm91Z2ggVG91Y2hWaWV3SW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJl
UmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0
UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpR
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1p
dCk6IEFkZCB0aGUgbG9hZENvbW1pdGVkIGNhbGxiYWNrIGluIG9yZGVyCisgICAgICAgIHRvIHJl
c2V0IHRoZSB2aWV3cG9ydCBzdGF0ZSB3aGVuIHRoZSBwYWdlIGNoYW5nZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91
Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNl
OjpUb3VjaFZpZXdJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZh
Y2U6OmNvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0lu
dGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6dmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Y29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3cG9ydFVwZGF0ZUd1YXJkOjp+Vmlld3BvcnRVcGRhdGVHdWFyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNl
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFy
dGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hH
ZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRTY2FsZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRh
dGVDb250ZW50U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRv
Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OmFuaW1hdGVDb250ZW50U2NhbGVUb0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNo
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwCmluZGV4IGRkZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmFk
Y2U4MzYzYTBkYTA2OTY0OWFhYzdlOGE3ZmE5NTMwNjRjY2MxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTEzMSw2
ICsxMzEsMTEgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQog
ICAgIGVtaXQgcS0+bG9hZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICAvLyBOb3QgdXNlZCBmb3IgUURlc2t0b3BXZWJW
aWV3LgorfQorCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkK
IHsKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNmOGE0ODE3
MTlmY2FmZmZiMzlkMGZmYTA1YzA4NGE3Y2MxLi44YWI2MjU2MDJhN2RjODJhYTk5M2Y0MDcxZTM5
ZDQ4ZGUyZmI2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFBy
b2dyZXNzKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJwYWdlLmNwcAppbmRleCAxOTRjMTljMzA2MDQ1MTAxOGY0NDNhY2Q5ODVlNzE5YWUxMjE5
ZjRlLi42M2E5ODMwYWFmYzgzYzZkMGQ4M2IzZWQ4NTMyYjdkMWJkOTNmMWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTM0
LDYgKzM0LDEwIEBAIFFUb3VjaFdlYlBhZ2U6OlFUb3VjaFdlYlBhZ2UoUVNHSXRlbSogcGFyZW50
KQogICAgICwgZChuZXcgUVRvdWNoV2ViUGFnZVByaXZhdGUodGhpcykpCiB7CiAgICAgc2V0Rmxh
ZyhJdGVtSGFzQ29udGVudHMpOworCisgICAgLy8gV2UgZG8gdGhlIHRyYW5zZm9ybSBmcm9tIHRo
ZSB0b3AgbGVmdCBzbyB0aGUgdmlld3BvcnQgY2FuIGFzc3VtZSB0aGUgcG9zaXRpb24gMCwgMAor
ICAgIC8vIGlzIGFsd2F5cyB3aGVyZSByZW5kZXJpbmcgc3RhcnRzLgorICAgIHNldFRyYW5zZm9y
bU9yaWdpbihUb3BMZWZ0KTsKIH0KIAogUVRvdWNoV2ViUGFnZTo6flFUb3VjaFdlYlBhZ2UoKQpA
QCAtMTQ1LDYgKzE0OSwxMSBAQCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVBy
aXZhdGUoUVRvdWNoV2ViUGFnZSogdmlldykKIHsKIH0KIAordm9pZCBRVG91Y2hXZWJQYWdlUHJp
dmF0ZTo6X3FfY29tbWl0U2NhbGVDaGFuZ2UoKQoreworICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7
Cit9CisKIHZvaWQgUVRvdWNoV2ViUGFnZVByaXZhdGU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKIHsK
ICAgICBwYWdlLT5zZXRDb250ZW50c1NjYWxlKHEtPnNjYWxlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCA2MDhjNzUzMjEzZjRh
ODUwMDBkOTNiNWI1ZTU2NDY2MTgyNGE1YjVmLi5lZmEwM2Q0MzQzNGZjNDk4YTQxY2FjMmZkZGQ4
ZGFjM2E1OWYyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaApAQCAtNzgsNiArNzgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJp
dmF0ZToKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCkp
OworCiAgICAgUVRvdWNoV2ViUGFnZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFUb3Vj
aFdlYlZpZXdQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2VfcC5oCmluZGV4IDY0ZGRkNmI4N2Y0ZTMzZjFkZGI4ZTg1ODVjMWIxZGRjMmE0MGI1ZjIuLmVk
MTdiMGMzZjJkNzBiOGYyY2EwNDQyMTYzOGM1ODEyN2NiNDg4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaApAQCAtMzksNiArMzks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlKFFUb3VjaFdlYlBhZ2VQcm94eSopOwogCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydFJlY3QoY29uc3QgUVJlY3RGJik7CisgICAgdm9pZCBfcV9jb21t
aXRTY2FsZUNoYW5nZSgpOwogICAgIHZvaWQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKIAogICAgIFFU
b3VjaFdlYlBhZ2UqIGNvbnN0IHE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA4Y2ZmN2NmZjllNzEzM2JiNTg5ZDE2NGYyZTAz
N2JhMWRhY2I0OWUwLi5hNjE1MzRhNTJlMmQ1ZjYwNjczNTg2ODRhZDY2NjdiZTU4ZTA4OGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5j
cHAKQEAgLTMzLDI3ICszMywyOSBAQCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6UVRvdWNoV2ViVmll
d1ByaXZhdGUoUVRvdWNoV2ViVmlldyogcSkKICAgICA6IHEocSkKICAgICAsIHBhZ2VWaWV3KG5l
dyBRVG91Y2hXZWJQYWdlKHEpKQogICAgICwgdmlld0ludGVyZmFjZShxLCBwYWdlVmlldy5kYXRh
KCkpCi0gICAgLCBwYWdlKCZ2aWV3SW50ZXJmYWNlLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAg
LCBpbnRlcmFjdGlvbkVuZ2luZShxLCBwYWdlVmlldy5kYXRhKCkpCisgICAgLCBwYWdlKCZ2aWV3
SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIGRlZmF1bHRXS0NvbnRleHQoKSkKIHsKICAg
ICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcu
ZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7CisKKyAgICBR
T2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKGNvbnRlbnRWaXNpYmxl
QXJlYUNoYW5nZWQoKSksIHEsIFNMT1QoX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpKSk7CisgICAg
UU9iamVjdDo6Y29ubmVjdCgmaW50ZXJhY3Rpb25FbmdpbmUsIFNJR05BTChjb21taXRTY2FsZUNo
YW5nZSgpKSwgcGFnZVZpZXcuZGF0YSgpLCBTTE9UKF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCkpKTsK
IH0KIAotdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJl
YWwgZGVsdGFZKQordm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENvbW1pdCgpCiB7
Ci0gICAgcGFnZVZpZXctPnNldFgocGFnZVZpZXctPngoKSArIGRlbHRhWCk7Ci0gICAgcGFnZVZp
ZXctPnNldFkocGFnZVZpZXctPnkoKSArIGRlbHRhWSk7Ci0gICAgdmlld3BvcnRSZWN0VXBkYXRl
ZCgpOworICAgIGludGVyYWN0aW9uRW5naW5lLnJlc2V0KCk7CiB9CiAKLXZvaWQgUVRvdWNoV2Vi
Vmlld1ByaXZhdGU6OnZpZXdwb3J0UmVjdFVwZGF0ZWQoKQordm9pZCBRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6X3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpCiB7CiAgICAgUVRvdWNoV2ViUGFnZVByaXZh
dGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+ZDsKICAgICBjb25z
dCBRUmVjdEYgdmlld3BvcnRSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGUgPSBxLT5tYXBSZWN0VG9J
dGVtKHBhZ2VWaWV3LmRhdGEoKSwgcS0+Ym91bmRpbmdSZWN0KCkpOwogICAgIHBhZ2VWaWV3UHJp
dmF0ZS0+c2V0Vmlld3BvcnRSZWN0KHZpZXdwb3J0UmVjdEluUGFnZVZpZXdDb29yZGluYXRlKTsK
IH0KIAotdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTdGF0ZSgpCit2
b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCkKIHsK
ICAgICBRU2l6ZSBhdmFpbGFibGVTaXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6
ZSgpOwogCkBAIC02MiwxMSArNjQsMTIgQEAgdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBk
YXRlVmlld3BvcnRTdGF0ZSgpCiAKICAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0
ciA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXModmlld3BvcnRBcmd1bWVudHMs
IHdrUHJlZnMtPmxheW91dEZhbGxiYWNrV2lkdGgoKSwgd2tQcmVmcy0+ZGV2aWNlV2lkdGgoKSwg
d2tQcmVmcy0+ZGV2aWNlSGVpZ2h0KCksIHdrUHJlZnMtPmRldmljZURQSSgpLCBhdmFpbGFibGVT
aXplKTsKIAotICAgIHZpZXdwb3J0LmluaXRpYWxTY2FsZSA9IGF0dHIuaW5pdGlhbFNjYWxlOwot
ICAgIHZpZXdwb3J0Lm1pbmltdW1TY2FsZSA9IGF0dHIubWluaW11bVNjYWxlOwotICAgIHZpZXdw
b3J0Lm1heGltdW1TY2FsZSA9IGF0dHIubWF4aW11bVNjYWxlOwotICAgIHZpZXdwb3J0LnBpeGVs
UmF0aW8gPSBhdHRyLmRldmljZVBpeGVsUmF0aW87Ci0gICAgdmlld3BvcnQuaXNVc2VyU2NhbGFi
bGUgPSAhIWF0dHIudXNlclNjYWxhYmxlOworICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OkNvbnN0cmFpbnRzIG5ld0NvbnN0cmFpbnRzOworICAgIG5ld0NvbnN0cmFpbnRzLmluaXRpYWxT
Y2FsZSA9IGF0dHIuaW5pdGlhbFNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLm1pbmltdW1TY2Fs
ZSA9IGF0dHIubWluaW11bVNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLm1heGltdW1TY2FsZSA9
IGF0dHIubWF4aW11bVNjYWxlOworICAgIG5ld0NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlID0g
ISFhdHRyLnVzZXJTY2FsYWJsZTsKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS5zZXRDb25zdHJhaW50
cyhuZXdDb25zdHJhaW50cyk7CiAKICAgICAvLyBPdmVyd3JpdGUgbWluaW11bSBzY2FsZSB2YWx1
ZSB3aXRoIGZpdC10by12aWV3IHZhbHVlLCB1bmxlc3MgdGhlIHRoZSBjb250ZW50IGF1dGhvcgog
ICAgIC8vIGV4cGxpY2l0bHkgc2F5cyBuby4gTkI6IFdlIGNhbiBvbmx5IGRvIHRoaXMgd2hlbiB3
ZSBrbm93IHdlIGhhdmUgYSB2YWxpZCBzaXplLCBpZS4KQEAgLTc5LDcgKzgyLDcgQEAgdm9pZCBR
VG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTdGF0ZSgpCiB2b2lkIFFUb3VjaFdl
YlZpZXdQcml2YXRlOjpzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cyYgYXJncykKIHsKICAgICB2aWV3cG9ydEFyZ3VtZW50cyA9IGFyZ3M7Ci0gICAg
dXBkYXRlVmlld3BvcnRTdGF0ZSgpOworICAgIHVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsK
IH0KIAogUVRvdWNoV2ViVmlldzo6UVRvdWNoV2ViVmlldyhRU0dJdGVtKiBwYXJlbnQpCkBAIC0x
MDMsOCArMTA2LDggQEAgdm9pZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3Qg
UVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKIHsKICAgICBRU0dJdGVtOjpn
ZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKICAgICBpZiAobmV3R2Vv
bWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkgewotICAgICAgICBkLT51cGRhdGVW
aWV3cG9ydFN0YXRlKCk7Ci0gICAgICAgIGQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKKyAgICAg
ICAgZC0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOworICAgICAgICBkLT5fcV92aWV3cG9y
dFJlY3RVcGRhdGVkKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCmluZGV4IDQ1MTlkYzhkYjlkMzg1MTJhN2U3Y2I3MTNh
MzUzNTBmMDU0ZDkyNzYuLjcwNjAwMjU0MDEzMWU2MmRmZTI4ZjBmMzVlYzNmMWNmYWM0MDg0ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5o
CkBAIC00Nyw2ICs0Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlD
aGFuZ2VkKGNvbnN0IFFSZWN0RiYsIGNvbnN0IFFSZWN0RiYpOwogCiBwcml2YXRlOgorICAgIFFf
UFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffdmlld3BvcnRSZWN0VXBkYXRlZCgpKTsKKwogICAgIGZy
aWVuZCBjbGFzcyBXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTsKICAgICBRVG91Y2hXZWJWaWV3
UHJpdmF0ZSAqZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJ2aWV3X3AuaAppbmRleCBiYzFjN2Q0ZmE2MTJhMzZlNGYxODM5YWUyYWM2MDNhODJj
NDVkZmFjLi43MjAxZDlmMDUwNjEzNjkxMjFhZjY3N2M2ZDQxODFkYTY0NTVlYWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KICNpbmNsdWRlICJxdG91
Y2h3ZWJwYWdlcHJveHkuaCIKICNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKKyNpbmNs
dWRlICJWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCiAKIGNsYXNzIFFUb3VjaFdlYlBhZ2U7
CiBjbGFzcyBRVG91Y2hXZWJWaWV3OwpAQCAtMzMsMzEgKzM0LDE2IEBAIGNsYXNzIFFUb3VjaFdl
YlZpZXdQcml2YXRlCiBwdWJsaWM6CiAgICAgUVRvdWNoV2ViVmlld1ByaXZhdGUoUVRvdWNoV2Vi
VmlldyogcSk7CiAKLSAgICB2b2lkIHNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSk7
Ci0gICAgdm9pZCB2aWV3cG9ydFJlY3RVcGRhdGVkKCk7Ci0gICAgdm9pZCB1cGRhdGVWaWV3cG9y
dFN0YXRlKCk7CisgICAgdm9pZCBsb2FkRGlkQ29tbWl0KCk7CisgICAgdm9pZCBfcV92aWV3cG9y
dFJlY3RVcGRhdGVkKCk7CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiAK
ICAgICB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJiBhcmdzKTsKIAotICAgIHN0cnVjdCBWaWV3cG9ydFN0YXRlIHsKLSAgICAgICAgVmll
d3BvcnRTdGF0ZSgpCi0gICAgICAgICAgICA6IGluaXRpYWxTY2FsZSgxLjApCi0gICAgICAgICAg
ICAsIG1pbmltdW1TY2FsZSgwLjI1KQotICAgICAgICAgICAgLCBtYXhpbXVtU2NhbGUoMS44KQot
ICAgICAgICAgICAgLCBwaXhlbFJhdGlvKDEuMCkKLSAgICAgICAgICAgICwgaXNVc2VyU2NhbGFi
bGUodHJ1ZSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgcXJlYWwgaW5pdGlhbFNjYWxlOwotICAg
ICAgICBxcmVhbCBtaW5pbXVtU2NhbGU7Ci0gICAgICAgIHFyZWFsIG1heGltdW1TY2FsZTsKLSAg
ICAgICAgcXJlYWwgcGl4ZWxSYXRpbzsKLSAgICAgICAgYm9vbCBpc1VzZXJTY2FsYWJsZTsKLSAg
ICB9IHZpZXdwb3J0OwotCiAgICAgUVRvdWNoV2ViVmlldyogY29uc3QgcTsKICAgICBRU2NvcGVk
UG9pbnRlcjxRVG91Y2hXZWJQYWdlPiBwYWdlVmlldzsKICAgICBXZWJLaXQ6OlRvdWNoVmlld0lu
dGVyZmFjZSB2aWV3SW50ZXJmYWNlOworICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgaW50
ZXJhY3Rpb25FbmdpbmU7CiAgICAgUVRvdWNoV2ViUGFnZVByb3h5IHBhZ2U7CiAKICAgICBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCAwYzNhMmJlN2ZlMmQxNjZmMGRkNDFm
NmQ0OWRlODc5NWUxMDY5NTEwLi5lOTY1NGIzMDVkYTAzY2Y0YzliMTUwOGY5NTQ2MDZkYWNiNzIw
MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC05
NSw2ICs5NSw3IEBAIHZvaWQgcXRfd2tfZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlCiAgICAgUVVybCBxVXJsID0gdXJs
U3RyOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25B
Y3Rpb25zKCk7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlVXJs
KHFVcmwpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmxvYWREaWRDb21taXQo
KTsKIH0KIAogdm9pZCBxdF93a19kaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVS
ZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcAppbmRleCA2NDNmOTJiNDBkYTViN2NkZmFhNmMzZTQyMTE0YzBjZDI5NWE0Nzcw
Li4xZjczNzVhNjAzYWU2MmEzYTE1MDQ4ZTNiNmFlZmIyNmVjM2E1YjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC0y
OCwxMSArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVF0R2VzdHVyZVJlY29nbml6
ZXI6OlF0R2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKiB0b3VjaFZpZXdJbnRl
cmZhY2UpCi0gICAgOiBtX3RvdWNoVmlld0ludGVyZmFjZSh0b3VjaFZpZXdJbnRlcmZhY2UpCitR
dEdlc3R1cmVSZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCisgICAgOiBtX3ZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKICAgICAsIG1fc3RhdGUo
Tm9HZXN0dXJlKQogewotICAgIEFTU0VSVCh0b3VjaFZpZXdJbnRlcmZhY2UpOworICAgIEFTU0VS
VCh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKTsKIH0KIAogdm9pZCBRdEdlc3R1cmVSZWNvZ25p
emVyOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRH
ZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVy
ZVJlY29nbml6ZXIuaAppbmRleCAyZGM2MGUwMWQ2NGU3Mjc0NTA0OGNhMjEzN2ViYTc4Nzk4ZWU0
YWU0Li5iNTUwNjhkYWVjNjE5MDhjMzEwN2Q2YzEyZTQ5MDE2YWU2NjY4NzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTI4
LDE0ICsyOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVG91Y2hWaWV3SW50
ZXJmYWNlOworY2xhc3MgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKIAogY2xhc3MgUXRHZXN0
dXJlUmVjb2duaXplciB7CiBwcm90ZWN0ZWQ6Ci0gICAgUXRHZXN0dXJlUmVjb2duaXplcihUb3Vj
aFZpZXdJbnRlcmZhY2UqKTsKKyAgICBRdEdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICBUb3VjaFZpZXdJbnRlcmZh
Y2UqIGNvbnN0IG1fdG91Y2hWaWV3SW50ZXJmYWNlOworICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUqIGNvbnN0IG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKICAgICBlbnVtIFN0YXRl
IHsKICAgICAgICAgTm9HZXN0dXJlLAogICAgICAgICBHZXN0dXJlUmVjb2duaXRpb25TdGFydGVk
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXIuY3BwCmluZGV4IGJhZGY2MGQ3ZmExZmNjNzBjMzM0N2MwNzVjYTBjYjg4ODk4MGE2
MzMuLjFmYmQ4Y2NiM2U5NzgzOTcyMzM2NmUwNzE3YjY4YmQwNTNmOWJlNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5j
cHAKQEAgLTIzLDE1ICsyMywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJRdFBhbkdlc3R1cmVSZWNv
Z25pemVyLmgiCiAKLSNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1RdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpRdFBhbkdlc3R1cmVS
ZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDog
UXRHZXN0dXJlUmVjb2duaXplcih0b3VjaFZpZXdJbnRlcmZhY2UpCitRdFBhbkdlc3R1cmVSZWNv
Z25pemVyOjpRdFBhbkdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUq
IGludGVyYWN0aW9uRW5naW5lKQorICAgIDogUXRHZXN0dXJlUmVjb2duaXplcihpbnRlcmFjdGlv
bkVuZ2luZSkKIHsKICAgICByZXNldCgpOwogfQpAQCAtNDUsNyArNDYsNyBAQCBib29sIFF0UGFu
R2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAg
ICAgLy8gSGF2aW5nIG11bHRpcGxlIHRvdWNoIHBvaW50cyBjYW5jZWwgdGhlIHBhbm5pbmcgZ2Vz
dHVyZS4KICAgICBpZiAoZXZlbnQtPnRvdWNoUG9pbnRzKCkuc2l6ZSgpID4gMSkgewogICAgICAg
ICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkKLSAgICAgICAgICAgIG1fdG91Y2hW
aWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJlQ2FuY2VsbGVkKCk7CisgICAgICAgICAgICBtX3ZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKICAgICAgICAgcmVz
ZXQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTY4LDE4ICs2OSwxOCBAQCBi
b29sIFF0UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCog
ZXZlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX3N0
YXRlID0gR2VzdHVyZVJlY29nbml6ZWQ7Ci0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFj
ZS0+cGFuR2VzdHVyZVN0YXJ0ZWQoKTsKKyAgICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS0+cGFuR2VzdHVyZVN0YXJ0ZWQoKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKTsKICAgICAgICAgLy8gT2Zmc2V0IHNlbnQg
dG8gdGhlIHZpZXdzIG11c3QgYmUgaW4gcGFnZSB2aWV3IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAg
ICAgIFFQb2ludEYgb2Zmc2V0U2luY2VMYXN0RXZlbnQodG91Y2hQb2ludC5wb3MoKSAtIHRvdWNo
UG9pbnQubGFzdFBvcygpKTsKLSAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBhbkdlc3R1
cmVSZXF1ZXN0U2Nyb2xsKG9mZnNldFNpbmNlTGFzdEV2ZW50LngoKSwgb2Zmc2V0U2luY2VMYXN0
RXZlbnQueSgpKTsKKyAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5wYW5HZXN0
dXJlUmVxdWVzdFVwZGF0ZShvZmZzZXRTaW5jZUxhc3RFdmVudC54KCksIG9mZnNldFNpbmNlTGFz
dEV2ZW50LnkoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIFFFdmVu
dDo6VG91Y2hFbmQ6CiAgICAgICAgIGlmIChtX3N0YXRlID09IEdlc3R1cmVSZWNvZ25pemVkKSB7
Ci0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGFuR2VzdHVyZUVuZGVkKCk7Cisg
ICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBhbkdlc3R1cmVFbmRlZCgp
OwogICAgICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJl
UmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXIuaAppbmRleCA4MDc5NTkzNDdjMjcyM2ZmMTE5ZjgzNDgyZjEzZDM1MDczOThlMTdm
Li43NGJiNzlmYTJhNmU1NDEwNjQwZWUzNjVlYzRiZDgwNTRiODY0ZGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgY29uc3QgcXJlYWwgcGFubmluZ0luaXRpYWxUcmlnZ2VyRGlzdGFuY2VU
aHJlc2hvbGQgPSA1LjsKIAogY2xhc3MgUXRQYW5HZXN0dXJlUmVjb2duaXplciA6IHByaXZhdGUg
UXRHZXN0dXJlUmVjb2duaXplciB7CiBwdWJsaWM6Ci0gICAgUXRQYW5HZXN0dXJlUmVjb2duaXpl
cihUb3VjaFZpZXdJbnRlcmZhY2UqKTsKKyAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVyKFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUqKTsKICAgICBib29sIHJlY29nbml6ZShjb25zdCBRVG91Y2hF
dmVudCopOwogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBmOWQ1ZTcx
ZTQxOTEzMDg0NTRjMzA1NmY2Y2ZhYjAxMTgzOGExYjg2Li4zYWZlNzkzOTEzZjU3MmFiMTU5ZTI5
OTMyNmZkZGFkN2Y3YjMzMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlF0UGluY2hHZXN0dXJlUmVjb2duaXplci5o
IgogCi0jaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUgPFF0Q29yZS9RTGluZUY+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDksOCArNDksOCBAQCBzdGF0aWMgaW5saW5lIFFQb2ludEYgY29tcHV0
ZVRvdWNoQ2VudGVyKGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludDEsCiAgICAg
cmV0dXJuIChwb2ludDEucG9zKCkgKyBwb2ludDIucG9zKCkpIC8gMi4wZjsKIH0KIAotUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50
ZXJmYWNlKiB0b3VjaFZpZXdJbnRlcmZhY2UpCi0gICAgOiBRdEdlc3R1cmVSZWNvZ25pemVyKHRv
dWNoVmlld0ludGVyZmFjZSkKK1F0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdlc3R1
cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5l
KQorICAgIDogUXRHZXN0dXJlUmVjb2duaXplcihpbnRlcmFjdGlvbkVuZ2luZSkKIHsKICAgICBy
ZXNldCgpOwogfQpAQCAtNjAsNyArNjAsNyBAQCBib29sIFF0UGluY2hHZXN0dXJlUmVjb2duaXpl
cjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCkKICAgICBjb25zdCBRTGlzdDxR
VG91Y2hFdmVudDo6VG91Y2hQb2ludD4mIHRvdWNoUG9pbnRzID0gZXZlbnQtPnRvdWNoUG9pbnRz
KCk7CiAgICAgaWYgKHRvdWNoUG9pbnRzLnNpemUoKSA8IDIpIHsKICAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gR2VzdHVyZVJlY29nbml6ZWQpCi0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFj
ZS0+cGluY2hHZXN0dXJlRW5kZWQoKTsKKyAgICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS0+cGluY2hHZXN0dXJlRW5kZWQoKTsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBRdFBpbmNoR2VzdHVy
ZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgICAg
ICAgICAgICAgaWYgKHBpbmNoRGlzdGFuY2UgPCBwaW5jaEluaXRpYWxUcmlnZ2VyRGlzdGFuY2VU
aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gR2VzdHVyZVJlY29nbml6ZWQ7Ci0gICAgICAgICAgICAgICAgbV90b3Vj
aFZpZXdJbnRlcmZhY2UtPnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKTsKKyAgICAgICAgICAgICAgICBt
X3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKTsKIAogICAg
ICAgICAgICAgICAgIC8vIFdlIHJlc2V0IHRoZSBpbml0aWFsIHBvc2l0aW9uIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbiBpbiBvcmRlciB0byBhdm9pZCB0aGUganVtcCBjYXVzZWQKICAgICAgICAg
ICAgICAgICAvLyBieSBza2lwcGluZyBhbGwgdGhlIGV2ZW50cyBiZXR3ZWVuIHRoZSBiZWdpbm5p
bmcgYW5kIHdoZW4gdGhlIHRocmVzaG9sZCBpcyBoaXQuCkBAIC0xMTAsMTQgKzExMCwxNCBAQCBi
b29sIFF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50
KiBldmVudCkKICAgICAgICAgICAgIGNvbnN0IHFyZWFsIGluaXRpYWxTcGFuRGlzdGFuY2UgPSBR
TGluZUYobV9wb2ludDEuaW5pdGlhbFNjcmVlblBvc2l0aW9uLCBtX3BvaW50Mi5pbml0aWFsU2Ny
ZWVuUG9zaXRpb24pLmxlbmd0aCgpOwogICAgICAgICAgICAgY29uc3QgcXJlYWwgdG90YWxTY2Fs
ZUZhY3RvciA9IGN1cnJlbnRTcGFuRGlzdGFuY2UgLyBpbml0aWFsU3BhbkRpc3RhbmNlOwogICAg
ICAgICAgICAgY29uc3QgUVBvaW50RiB0b3VjaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlID0g
Y29tcHV0ZVRvdWNoQ2VudGVyKHBvaW50MSwgcG9pbnQyKTsKLSAgICAgICAgICAgIG1fdG91Y2hW
aWV3SW50ZXJmYWNlLT5waW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKHRvdWNoQ2VudGVySW5QYWdl
Vmlld0Nvb3JkaW5hdGUsIHRvdGFsU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgbV92aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLT5waW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKHRvdWNoQ2VudGVy
SW5QYWdlVmlld0Nvb3JkaW5hdGUsIHRvdGFsU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFFFdmVudDo6VG91Y2hFbmQ6CiAgICAgICAgIGlmIChtX3N0YXRlID09IEdlc3R1
cmVSZWNvZ25pemVkKSB7Ci0gICAgICAgICAgICBtX3RvdWNoVmlld0ludGVyZmFjZS0+cGluY2hH
ZXN0dXJlRW5kZWQoKTsKKyAgICAgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+
cGluY2hHZXN0dXJlRW5kZWQoKTsKICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oCmluZGV4IGMzYzk3MTk5NDlhZDQ1ZDk4
MWViYzZmNTNhNjcxOTMwMmY0YTBlZGEuLmZhYzcwZThmN2RhODE2Yjc3OGQ3MTlmNTExMDFhYzAw
NjdlYWMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNo
R2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
aW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTM4LDggKzM4LDYgQEAgUVRfRU5EX05BTUVTUEFD
RQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwotCiBj
bGFzcyBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIgOiBwcml2YXRlIFF0R2VzdHVyZVJlY29nbml6
ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBUb3VjaFBvaW50SW5mb3JtYXRpb24gewpAQCAtNTIs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFFQb2ludEYgaW5pdGlhbFBvc2l0aW9uOwogICAg
IH07CiAKLSAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIoVG91Y2hWaWV3SW50ZXJmYWNlKik7
CisgICAgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUq
KTsKICAgICBib29sIHJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCopOwogICAgIHZvaWQgcmVz
ZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHAKaW5kZXggN2QwYzJjYjNjMmVhMzQ1MTYxYTM1YzY5ZjEzZWNkNGMyZTUzNDI0OC4uZGQyNzgx
ZjQ2NzkxODNmNjIzNDFiMDBmZTljNDQwNTYyYjAxYjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC00MjAsNiArNDIwLDExIEBAIHZv
aWQgUXRXZWJQYWdlUHJveHk6OmxvYWREaWRCZWdpbigpCiAgICAgbV92aWV3SW50ZXJmYWNlLT5s
b2FkRGlkQmVnaW4oKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1pdCgp
Cit7CisgICAgbV92aWV3SW50ZXJmYWNlLT5sb2FkRGlkQ29tbWl0KCk7Cit9CisKIHZvaWQgUXRX
ZWJQYWdlUHJveHk6OmxvYWREaWRTdWNjZWVkKCkKIHsKICAgICBtX3ZpZXdJbnRlcmZhY2UtPmxv
YWREaWRTdWNjZWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5oCmluZGV4IGZhNmMyOTFiNTRjNWMwZTg2Nzc1ZGExOTdmMzExZTNkY2RlMmIxMTUuLjg4
NWY2N2UzMjMzY2EyNmQ4NmJhOTM0ZmRkNmU1YWE1ZjRiZWQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgUVN0cmluZyYpOwogCiAgICAgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2b2lkIGxvYWREaWRDb21taXQoKTsKICAgICB2b2lkIGxv
YWREaWRTdWNjZWVkKCk7CiAgICAgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImKTsK
ICAgICB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcAppbmRleCAwZDVlY2RlNTU4
ZTJmYjdmNzMzMGI5ZmM5MDEzMzFhMGY1YjMzMThhLi4xYjM0YTM0MGMyNmY2NThjNDFmODc1ZTg2
MGYxZjY4Y2M0MGRhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
VG91Y2hWaWV3SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
VG91Y2hWaWV3SW50ZXJmYWNlLmNwcApAQCAtMzEsNjYgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogVG91Y2hWaWV3SW50ZXJmYWNlOjpUb3VjaFZpZXdJbnRlcmZhY2UoUVRvdWNoV2ViVmll
dyogdmlld3BvcnRWaWV3LCBRVG91Y2hXZWJQYWdlKiBwYWdlVmlldykKICAgICA6IG1fdmlld3Bv
cnRWaWV3KHZpZXdwb3J0VmlldykKICAgICAsIG1fcGFnZVZpZXcocGFnZVZpZXcpCi0gICAgLCBt
X3BpbmNoU3RhcnRTY2FsZSgxLmYpCiB7CiAgICAgUV9BU1NFUlQobV92aWV3cG9ydFZpZXcpOwog
ICAgIFFfQVNTRVJUKG1fcGFnZVZpZXcpOwogfQogCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6
cGFuR2VzdHVyZVN0YXJ0ZWQoKQotewotICAgIC8vIEZJWE1FOiBzdXNwZW5kIHRoZSBXZWIgZW5n
aW5lIChzdG9wIGFuaW1hdGVkIEdJRiwgZXRjKS4KLSAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBw
aHlzaWNzIGZvciBwYW5uaW5nIChzdG9wIGFuaW1hdGlvbiwgZXRjKS4KLX0KLQotdm9pZCBUb3Vj
aFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVSZXF1ZXN0U2Nyb2xsKHFyZWFsIGRlbHRhWCwgcXJl
YWwgZGVsdGFZKQotewotICAgIC8vIFRyYW5zbGF0ZSB0aGUgZGVsdGEgZnJvbSBwYWdlIHRvIHZp
ZXdwb3J0IGNvb3JkaW5hdGVzLgotICAgIFFQb2ludEYgaXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRz
ID0gbV9wYWdlVmlldy0+bWFwRnJvbUl0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgpLCBtX3Bh
Z2VWaWV3LT5wb3MoKSk7Ci0gICAgUVBvaW50RiBkZXN0SW5WaWV3cG9ydENvb3JkcyA9IG1fdmll
d3BvcnRWaWV3LT5tYXBGcm9tSXRlbShtX3BhZ2VWaWV3LCBpdGVtUG9zaXRpb25Jbkl0ZW1Db29y
ZHMgKyBRUG9pbnRGKGRlbHRhWCwgZGVsdGFZKSk7Ci0gICAgUVBvaW50RiBvZmZzZXRJblZpZXdw
b3J0Q29vcmRzID0gZGVzdEluVmlld3BvcnRDb29yZHMgLSBtX3ZpZXdwb3J0Vmlldy0+bWFwRnJv
bUl0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgpLCBtX3BhZ2VWaWV3LT5wb3MoKSk7Ci0gICAg
bV92aWV3cG9ydFZpZXctPmQtPnNjcm9sbChvZmZzZXRJblZpZXdwb3J0Q29vcmRzLngoKSwgb2Zm
c2V0SW5WaWV3cG9ydENvb3Jkcy55KCkpOwotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6
cGFuR2VzdHVyZUVuZGVkKCkKLXsKLSAgICAvLyBGSVhNRTogdHJpZ2dlciBwaHlzaWNzIGVuZ2lu
ZSBmb3IgYW5pbWF0aW9uICh0aGUgV2ViIGVuZ2luZSBzaG91bGQgYmUgcmVzdW1lZCBhZnRlciB0
aGUgYW5pbWF0aW9uLikKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBhbkdlc3R1cmVD
YW5jZWxsZWQoKQotewotICAgIC8vIEZJWE1FOiByZXNldCBwaHlzaWNzLgotICAgIC8vIEZJWE1F
OiByZXN1bWUgdGhlIFdlYiBlbmdpbmUuCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpw
aW5jaEdlc3R1cmVTdGFydGVkKCkKLXsKLSAgICAvLyBGSVhNRTogc3VzcGVuZCB0aGUgZW5naW5l
LgotICAgIG1fcGluY2hTdGFydFNjYWxlID0gbV9wYWdlVmlldy0+c2NhbGUoKTsKLX0KLQotdm9p
ZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBv
aW50RiYgcGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZh
Y3RvcikKLXsKLSAgICAvLyBGSVhNRTogaXQgaXMgYSBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gdGhh
dDoKLSAgICAvLyAtdGhlIHNjYWxlIHNob3VsZCBiZSBkb25lIGNlbnRlcmVkIG9uIHRoZSBwaW5j
aCBjZW50ZXIuCi0gICAgLy8gLWNoYW5nZXMgb2YgdGhlIGNlbnRlciBwb3NpdGlvbiBzaG91bGQg
bW92ZSB0aGUgcGFnZSBldmVuIGlmIHRoZSB6b29tIGZhY3RvcgotICAgIC8vICBkb2VzIG5vdCBj
aGFuZ2UuIEJvdGggdGhlIHpvb20gYW5kIHRoZSBwYW5uaW5nIHNob3VsZCBiZSBoYW5kbGVkIHRo
cm91Z2ggdGhlIHBoeXNpY3MgZW5naW5lLgotICAgIGNvbnN0IHFyZWFsIHNjYWxlID0gbV9waW5j
aFN0YXJ0U2NhbGUgKiB0b3RhbFNjYWxlRmFjdG9yOwotICAgIFFQb2ludEYgb2xkUGluY2hDZW50
ZXJPblBhcmVudCA9IG1fcGFnZVZpZXctPm1hcFRvSXRlbShtX3BhZ2VWaWV3LT5wYXJlbnRJdGVt
KCksIHBpbmNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUpOwotICAgIG1fcGFnZVZpZXctPnNl
dFNjYWxlKHNjYWxlKTsKLSAgICBRUG9pbnRGIG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgPSBtX3Bh
Z2VWaWV3LT5tYXBUb0l0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlcklu
UGFnZVZpZXdDb29yZGluYXRlKTsKLSAgICBtX3BhZ2VWaWV3LT5zZXRQb3MobV9wYWdlVmlldy0+
cG9zKCkgLSAobmV3UGluY2hDZW50ZXJPblBhcmVudCAtIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQp
KTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBpbmNoR2VzdHVyZUVuZGVkKCkKLXsK
LSAgICAvLyBGSVhNRTogY29tbWl0IHNjYWxlIHdpdGggdGhlIHNjYWxlIHZhbHVlIGluIHRoZSB2
YWxpZCByYW5nZSBpbiBvcmRlciB0byBnZXQgbmV3IHRpbGVzLgotICAgIC8vIEZJWE1FOiBhbmlt
YXRlIHRoZSBiYWNrIHpvb20gaW4gdGhlIHZhbGlkIHJhbmdlLgotICAgIC8vIEZJWE1FOiByZXN1
bWUgdGhlIGVuZ2luZSBhZnRlciB0aGUgYW5pbWF0aW9uLgotICAgIG1fcGFnZVZpZXctPmQtPmNv
bW1pdFNjYWxlQ2hhbmdlKCk7Ci0gICAgbV92aWV3cG9ydFZpZXctPmQtPnZpZXdwb3J0UmVjdFVw
ZGF0ZWQoKTsKLX0KLQogdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZEZpbmRab29tYWJsZUFy
ZWEoY29uc3QgUVBvaW50JiwgY29uc3QgUVJlY3QmKQogewogfQpAQCAtMTExLDE0ICs1Niw5IEBA
IFFTaXplIFRvdWNoVmlld0ludGVyZmFjZTo6ZHJhd2luZ0FyZWFTaXplKCkKIAogdm9pZCBUb3Vj
aFZpZXdJbnRlcmZhY2U6OmNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYgbmV3U2l6ZSkK
IHsKLSAgICAvLyBGSVhNRTogdGhlIHZpZXdwb3J0IHNob3VsZCB0YWtlIGNhcmUgb2Y6Ci0gICAg
Ly8gLXJlc2l6ZSB0aGUgcGFnZQotICAgIC8vIC1jaGFuZ2UgdGhlIHpvb20gbGV2ZWwgaWYgbmVl
ZGVkCi0gICAgLy8gLW1vdmUgdGhlIHBhZ2UgYmFjayBpbiB2aWV3cG9ydCBib3VuZGFyaWVzIGlm
IG5lZWRlZAotICAgIC8vIC11cGRhdGUgdGhlIHZpZXdwb3J0IHJlY3QKICAgICBtX3BhZ2VWaWV3
LT5zZXRXaWR0aChuZXdTaXplLndpZHRoKCkpOwogICAgIG1fcGFnZVZpZXctPnNldEhlaWdodChu
ZXdTaXplLmhlaWdodCgpKTsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+dmlld3BvcnRSZWN0VXBk
YXRlZCgpOworICAgIG1fdmlld3BvcnRWaWV3LT5kLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRz
KCk7CiB9CiAKIGJvb2wgVG91Y2hWaWV3SW50ZXJmYWNlOjppc0FjdGl2ZSgpCkBAIC0xNzgsNiAr
MTE4LDExIEBAIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkQmVnaW4oKQogICAgIGVt
aXQgbV9wYWdlVmlldy0+bG9hZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBUb3VjaFZpZXdJbnRlcmZh
Y2U6OmxvYWREaWRDb21taXQoKQoreworICAgIG1fdmlld3BvcnRWaWV3LT5kLT5sb2FkRGlkQ29t
bWl0KCk7Cit9CisKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkU3VjY2VlZCgpCiB7
CiAgICAgZW1pdCBtX3BhZ2VWaWV3LT5sb2FkU3VjY2VlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKaW5kZXggMzFmYzIwZDY4YmIz
YmI5OGE5MTgzNWE5MjQ4ZTJkOWQ3YWFiNWViOC4uOTcyOWQ2N2MxNDMzNTg0MmJiNjMwODU5ZWYy
OTRiZTY2MGQ2MzM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Rv
dWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3Vj
aFZpZXdJbnRlcmZhY2UuaApAQCAtNDAsMTUgKzQwLDYgQEAgY2xhc3MgVG91Y2hWaWV3SW50ZXJm
YWNlIDogcHVibGljIFZpZXdJbnRlcmZhY2UKIHB1YmxpYzoKICAgICBUb3VjaFZpZXdJbnRlcmZh
Y2UoUVRvdWNoV2ViVmlldyogdmlld3BvcnRWaWV3LCBRVG91Y2hXZWJQYWdlKiBwYWdlVmlldyk7
CiAKLSAgICB2b2lkIHBhbkdlc3R1cmVTdGFydGVkKCk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlUmVx
dWVzdFNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSk7Ci0gICAgdm9pZCBwYW5HZXN0
dXJlRW5kZWQoKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKLQotICAgIHZvaWQg
cGluY2hHZXN0dXJlU3RhcnRlZCgpOwotICAgIHZvaWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0
ZShjb25zdCBRUG9pbnRGJiwgcXJlYWwpOwotICAgIHZvaWQgcGluY2hHZXN0dXJlRW5kZWQoKTsK
LQogICAgIFNHQWdlbnQqIHNjZW5lR3JhcGhBZ2VudCgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAt
NzMsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0dXNU
ZXh0KGNvbnN0IFFTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ3Vyc29yKGNv
bnN0IFFDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCk7CisgICAgdmly
dHVhbCB2b2lkIGxvYWREaWRDb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2Nl
ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQpOwpAQCAtODYsOCArNzgs
NiBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBRVG91Y2hXZWJWaWV3KiBjb25zdCBtX3ZpZXdw
b3J0VmlldzsKICAgICBRVG91Y2hXZWJQYWdlKiBjb25zdCBtX3BhZ2VWaWV3OwotCi0gICAgcXJl
YWwgbV9waW5jaFN0YXJ0U2NhbGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1ZpZXdJbnRlcmZhY2UuaAppbmRleCBkODVmMWU1N2Q4NGM5NGEyZDk0NjYwNzI0OWQ3Nzk0
NjllMWE3NzhjLi43MGE2ZjYzNjhkZjRkZGZkNjJkYjVjMmJmZTgxMTQwNzA1MjJhNzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKQEAgLTY3LDYgKzY3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0
IFFTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNvcihjb25zdCBR
Q3Vyc29yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQmVnaW4oKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGxvYWREaWRDb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRE
aWRTdWNjZWVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBRV2Vi
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDhmZmI0MDM0ZTVhOWY4ZWY0MzYw
MTViYTI0ZGM3Mzg0NDg3NDNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCkBAIC0wLDAgKzEsMzAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEJlbmphbWluIFBvdWxhaW4gPGJlbmphbWluQHdl
YmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgorCisj
aW5jbHVkZSA8UVBvaW50Rj4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUVJlY3RGIHZpc2libGVSZWN0SW5D
b250ZW50Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBjb250ZW50LCBjb25zdCBRU0dJdGVtKiB2
aWV3cG9ydCkKK3sKKyAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRJbkNvbnRlbnRDb29yZGluYXRl
ID0gY29udGVudC0+bWFwUmVjdEZyb21JdGVtKHZpZXdwb3J0LCB2aWV3cG9ydC0+Ym91bmRpbmdS
ZWN0KCkpOworICAgIGNvbnN0IFFSZWN0RiB2aXNpYmxlQXJlYSA9IGNvbnRlbnQtPmJvdW5kaW5n
UmVjdCgpLmludGVyc2VjdGVkKHZpZXdwb3J0SW5Db250ZW50Q29vcmRpbmF0ZSk7CisgICAgcmV0
dXJuIHZpc2libGVBcmVhOworfQorCitzdGF0aWMgaW5saW5lIFFSZWN0RiBjb250ZW50UmVjdElu
Vmlld3BvcnRDb29yZGluYXRlKGNvbnN0IFFTR0l0ZW0qIGNvbnRlbnQsIGNvbnN0IFFTR0l0ZW0q
IHZpZXdwb3J0KQoreworICAgIHJldHVybiB2aWV3cG9ydC0+bWFwUmVjdEZyb21JdGVtKGNvbnRl
bnQsIGNvbnRlbnQtPmJvdW5kaW5nUmVjdCgpKTsKK30KKworLy8gVXBkYXRpbmcgY29udGVudCBw
cm9wZXJ0aWVzIGNhdXNlIHRoZSBub3RpZnkgc2lnbmFscyB0byBiZSBzZW50IGJ5IHRoZSBjb250
ZW50IGl0ZW0gaXRzZWxmLgorLy8gU2luY2Ugd2UgbWFuYWdlIHRob3NlIGRpZmZlcmVudGx5LCB3
ZSBkbyBub3Qgd2FudCB0byByZXNwb25kCisvLyB0byB0aGVtIHdoZW4gd2UgYXJlIHRoZSBvbmUg
Y2hhbmdpbmcgdGhlIGNvbnRlbnQuCisvLworLy8gVGhlIGd1YXJkIG1ha2Ugc3VyZSB0aGUgc2ln
bmFsIGNvbnRlbnRWaXNpYmxlQXJlYUNoYW5nZWQoKSBpcyBzZW50IGlmIG5lY2Vzc2FyeS4KKy8v
CisvLyBUaGUgcHVibGljIG1ldGhvZHMgc2hvdWxkIGNyZWF0ZSB0aGUgZ3VhcmQgaWYgdGhleSBt
aWdodCB1cGRhdGUgY29udGVudC4KK2NsYXNzIFZpZXdwb3J0VXBkYXRlR3VhcmQgeworcHVibGlj
OgorICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQoVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogdmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAgICAgOiB2aWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCisgICAgICAgICwgd2FzVXBkYXRpbmdDb250
ZW50KHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAg
ICAgICwgcHJldmlvdXNQb3NpdGlvbih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRl
bnQtPnBvcygpKQorICAgICAgICAsIHByZXZpb3VzU2l6ZSh2aWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLT5tX2NvbnRlbnQtPndpZHRoKCksIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29u
dGVudC0+aGVpZ2h0KCkpCisgICAgICAgICwgcHJldmlvdXNTY2FsZSh2aWV3cG9ydEludGVyYWN0
aW9uRW5naW5lLT5tX2NvbnRlbnQtPnNjYWxlKCkpCisgICAgeworICAgICAgICB2aWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLT5tX2lzVXBkYXRpbmdDb250ZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICB+Vmlld3BvcnRVcGRhdGVHdWFyZCgpCisgICAgeworICAgICAgICBpZiAoIXdhc1VwZGF0aW5n
Q29udGVudCkgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24gIT0gdmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50LT5wb3MoKQorICAgICAgICAgICAgICAgICAgICB8
fCBwcmV2aW91c1NpemUud2lkdGgoKSAhPSB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2Nv
bnRlbnQtPndpZHRoKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgcHJldmlvdXNTaXplLmhlaWdo
dCgpICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+aGVpZ2h0KCkKKyAg
ICAgICAgICAgICAgICAgICAgfHwgcHJldmlvdXNTY2FsZSAhPSB2aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLT5tX2NvbnRlbnQtPnNjYWxlKCkpCisgICAgICAgICAgICAgICAgZW1pdCB2aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLT5jb250ZW50VmlzaWJsZUFyZWFDaGFuZ2VkKCk7CisgICAgICAg
IH0KKyAgICAgICAgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVu
dCA9IHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSogY29uc3Qgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBj
b25zdCBib29sIHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICBjb25zdCBRUG9pbnRGIHByZXZpb3Vz
UG9zaXRpb247CisgICAgY29uc3QgUVNpemVGIHByZXZpb3VzU2l6ZTsKKyAgICBjb25zdCBxcmVh
bCBwcmV2aW91c1NjYWxlOworfTsKKworVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiB2aWV3cG9ydCwgUVNHSXRlbSogY29u
dGVudCkKKyAgICA6IG1fdmlld3BvcnQodmlld3BvcnQpCisgICAgLCBtX2NvbnRlbnQoY29udGVu
dCkKKyAgICAsIG1faXNVcGRhdGluZ0NvbnRlbnQoZmFsc2UpCisgICAgLCBtX3BpbmNoU3RhcnRT
Y2FsZSgxLmYpCit7CisgICAgcmVzZXQoKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFM
KHhDaGFuZ2VkKCkpLCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpE
aXJlY3RDb25uZWN0aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHlDaGFuZ2Vk
KCkpLCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25u
ZWN0aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHdpZHRoQ2hhbmdlZCgpKSwg
dGhpcywgU0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlv
bik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTChoZWlnaHRDaGFuZ2VkKCkpLCB0aGlz
LCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsK
KyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHNjYWxlQ2hhbmdlZCgpKSwgdGhpcywgU0xP
VChjb250ZW50U2NhbGVDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cit9CisKK3Zv
aWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cmVzZXQoKQoreworICAgIFZpZXdwb3J0VXBk
YXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyA9IFVzZXJI
YXNOb3RJbnRlcmFjdGVkV2l0aENvbnRlbnQ7CisgICAgc2V0Q29uc3RyYWludHMoQ29uc3RyYWlu
dHMoKSk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q29uc3RyYWlu
dHMoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChtX2NvbnN0cmFp
bnRzID09IGNvbnN0cmFpbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogaWYg
YSBwaW5jaCBnZXN0dXJlIGlzIG9uZ29pbmcsIHdlIGhhdmUgdG86CisgICAgLy8gLWNhbmNlbCB0
aGUgZ2VzdHVyZSBpZiBpc1VzZXJTY2FsYWJsZSBiZWNvbWVzIHRydWUKKyAgICAvLyAtdXBkYXRl
IHRoZSBwYWdlIG9uIHRoZSBmbHkgd2l0aG91dCBtb2RpZnlpbmcgaXRzIHBvc2l0aW9uCisKKyAg
ICAvLyBGSVhNRTogaWYgYSBwYW4gZ2VzdHVyZSBpcyBvbmdvaW5nLCB3ZSBoYXZlIHRvCisgICAg
Ly8gLXVwZGF0ZSB0aGUgcGFnZSB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3NpdGlvbgorICAgIC8v
IC1hbmltYXRlIHRoZSBwYWdlIGJhY2sgaW4gdmlld3BvcnQgaWYgbmVjZXNzYXJ5IChpZiB0aGUg
cGFnZSBpcyBmdWxseSBpbgorICAgIC8vICB2aWV3cG9ydCwgaXQgZG9lcyBub3QgcGFuIGhvcml6
b250YWxseSBhbnltb3JlKS4KKworICAgIGNvbnN0IHFyZWFsIHByZXZpb3VzU2NhbGUgPSBtX2Nv
bnRlbnQtPnNjYWxlKCk7CisgICAgeworICAgICAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJk
KHRoaXMpOworICAgICAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7CisgICAgICAgIHVw
ZGF0ZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIH0KKyAgICBpZiAobV9jb250ZW50LT5zY2FsZSgp
ICE9IHByZXZpb3VzU2NhbGUpCisgICAgICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30K
Kwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlU3RhcnRlZCgpCit7
CisgICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdpbmUgKHN0b3AgYW5pbWF0ZWQgR0lG
LCBldGMpLgorICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBoeXNpY3MgZm9yIHBhbm5pbmcgKHN0
b3AgYW5pbWF0aW9uLCBldGMpLgorICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhh
c01vdmVkQ29udGVudDsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlUmVxdWVzdFVwZGF0ZShxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKK3sKKyAgICBW
aWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworCisgICAgUVBvaW50RiBpdGVtUG9zaXRp
b25Jbkl0ZW1Db29yZHMgPSBtX2NvbnRlbnQtPm1hcEZyb21JdGVtKG1fY29udGVudC0+cGFyZW50
SXRlbSgpLCBtX2NvbnRlbnQtPnBvcygpKTsKKyAgICBRUG9pbnRGIGRlc3RJblZpZXdwb3J0Q29v
cmRzID0gbV92aWV3cG9ydC0+bWFwRnJvbUl0ZW0obV9jb250ZW50LCBpdGVtUG9zaXRpb25Jbkl0
ZW1Db29yZHMgKyBRUG9pbnRGKGRlbHRhWCwgZGVsdGFZKSk7CisKKyAgICBtX2NvbnRlbnQtPnNl
dFBvcyhkZXN0SW5WaWV3cG9ydENvb3Jkcyk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6cGFuR2VzdHVyZUNhbmNlbGxlZCgpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFy
ZCBndWFyZCh0aGlzKTsKKyAgICAvLyBGSVhNRTogcmVzZXQgcGh5c2ljcy4KKyAgICBwYW5HZXN0
dXJlRW5kZWQoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0
dXJlRW5kZWQoKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAg
YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRvQm91bmRhcmllcygpOworfQorCit2b2lkIFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKQoreworICAgIGlmICghbV9j
b25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91c2Vy
SW50ZXJhY3Rpb25GbGFncyB8PSBVc2VySGFzU2NhbGVkQ29udGVudDsKKyAgICBtX3VzZXJJbnRl
cmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNNb3ZlZENvbnRlbnQ7CisgICAgbV9waW5jaFN0YXJ0U2Nh
bGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRl
ckluQ29udGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCit7CisgICAgaWYg
KCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBW
aWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworCisgICAgLy8gIENoYW5nZXMgb2YgdGhl
IGNlbnRlciBwb3NpdGlvbiBzaG91bGQgbW92ZSB0aGUgcGFnZSBldmVuIGlmIHRoZSB6b29tIGZh
Y3RvcgorICAgIC8vICBkb2VzIG5vdCBjaGFuZ2UuIEJvdGggdGhlIHpvb20gYW5kIHRoZSBwYW5u
aW5nIHNob3VsZCBiZSBoYW5kbGVkIHRocm91Z2ggdGhlIHBoeXNpY3MgZW5naW5lLgorICAgIGNv
bnN0IHFyZWFsIHNjYWxlID0gbV9waW5jaFN0YXJ0U2NhbGUgKiB0b3RhbFNjYWxlRmFjdG9yOwor
ICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVt
KG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUp
OworICAgIG1fY29udGVudC0+c2V0U2NhbGUoc2NhbGUpOworICAgIFFQb2ludEYgbmV3UGluY2hD
ZW50ZXJPblBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRl
bSgpLCBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVudC0+c2V0
UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3UGluY2hDZW50ZXJPblBhcmVudCAtIG9sZFBpbmNo
Q2VudGVyT25QYXJlbnQpKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpw
aW5jaEdlc3R1cmVFbmRlZCgpCit7CisgICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxh
YmxlKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBkYXRlR3Vh
cmQgZ3VhcmQodGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiByZXN1bWUgdGhlIGVuZ2luZSBhZnRl
ciB0aGUgYW5pbWF0aW9uLgorICAgICAgICBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3VuZGFyaWVz
KCk7CisgICAgfQorICAgIGlmIChtX3BpbmNoU3RhcnRTY2FsZSAhPSBtX2NvbnRlbnQtPnNjYWxl
KCkpCisgICAgICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9pZCBWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkKK3sKKyAgICBpZiAo
bV9pc1VwZGF0aW5nQ29udGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld3BvcnRVcGRh
dGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKKworICAg
IC8vIFdlIG11c3Qgbm90aWZ5IHRoZSBjaGFuZ2Ugc28gdGhlIGNsaWVudCBjYW4gcmVseSBvbiB1
cyBmb3IgYWxsIGNoYW5nZSBvZiBHZW9tZXRyeS4KKyAgICBlbWl0IGNvbnRlbnRWaXNpYmxlQXJl
YUNoYW5nZWQoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjb250ZW50
U2NhbGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nQ29udGVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICB1cGRh
dGVDb250ZW50SWZOZWVkZWQoKTsKKworICAgIC8vIFdlIG11c3Qgbm90aWZ5IHRoZSBjaGFuZ2Ug
c28gdGhlIGNsaWVudCBjYW4gcmVseSBvbiB1cyBmb3IgYWxsIGNoYW5nZSBvZiBHZW9tZXRyeS4K
KyAgICBlbWl0IGNvbnRlbnRWaXNpYmxlQXJlYUNoYW5nZWQoKTsKKyAgICBlbWl0IGNvbW1pdFNj
YWxlQ2hhbmdlKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRl
Q29udGVudElmTmVlZGVkKCkKK3sKKyAgICB1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRlZCgpOwor
ICAgIHVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudFNjYWxlSWZOZWVkZWQoKQoreworICAgIGNv
bnN0IHFyZWFsIGN1cnJlbnRDb250ZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAg
cXJlYWwgY29udGVudFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOworICAgIGlmICghKG1fdXNl
ckludGVyYWN0aW9uRmxhZ3MgJiBVc2VySGFzU2NhbGVkQ29udGVudCkpCisgICAgICAgIGNvbnRl
bnRTY2FsZSA9IG1fY29uc3RyYWludHMuaW5pdGlhbFNjYWxlOworCisgICAgY29udGVudFNjYWxl
ID0gcUJvdW5kKG1fY29uc3RyYWludHMubWluaW11bVNjYWxlLCBjb250ZW50U2NhbGUsIG1fY29u
c3RyYWludHMubWF4aW11bVNjYWxlKTsKKworICAgIGlmIChjb250ZW50U2NhbGUgIT0gY3VycmVu
dENvbnRlbnRTY2FsZSkgeworICAgICAgICBjb25zdCBRUG9pbnRGIGNlbnRlck9mSW50ZXJlc3Qg
PSB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUobV9jb250ZW50LCBtX3ZpZXdwb3J0KS5j
ZW50ZXIoKTsKKyAgICAgICAgc2NhbGVDb250ZW50KGNlbnRlck9mSW50ZXJlc3QsIGNvbnRlbnRT
Y2FsZSk7CisgICAgfQorfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnVwZGF0
ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoIShtX3VzZXJJbnRlcmFjdGlv
bkZsYWdzICYgVXNlckhhc01vdmVkQ29udGVudCkpIHsKKyAgICAgICAgbV9jb250ZW50LT5zZXRY
KChtX3ZpZXdwb3J0LT53aWR0aCgpIC0gY29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSht
X2NvbnRlbnQsIG1fdmlld3BvcnQpLndpZHRoKCkpIC8gMik7CisgICAgICAgIG1fY29udGVudC0+
c2V0WSgwKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogaWYgdGhlIGl0ZW0gY2FuIGJlIGZ1bGx5
IGluIHRoZSB2aWV3cG9ydCBhbmQgaXMgb3ZlciBhIHNpZGUsIHB1c2ggaXQgYmFjayBpbiB2aWV3
CisgICAgLy8gRklYTUU6IGlmIHRoZSBpdGVtIGNhbm5vdCBiZSBmdWxseSBpbiB2aWV3cG9ydCwg
YW5kIGlzIG5vdCBjb3ZlcmluZyB0aGUgdmlld3BvcnQsIHB1c2ggaXQgYmFjayBpbiB2aWV3Cit9
CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlv
blRvQm91bmRhcmllcygpCit7CisgICAgY29uc3QgUVJlY3RGIGNvbnRlbnRHZW9tZXRyeSA9IG1f
dmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShtX2NvbnRlbnQsIG1fY29udGVudC0+Ym91bmRpbmdS
ZWN0KCkpOworICAgIFFQb2ludEYgbmV3UG9zID0gY29udGVudEdlb21ldHJ5LnRvcExlZnQoKTsK
KworICAgIC8vIEhvcml6b250YWwgY29ycmVjdGlvbi4KKyAgICBpZiAoY29udGVudEdlb21ldHJ5
LndpZHRoKCkgPCBtX3ZpZXdwb3J0LT53aWR0aCgpKQorICAgICAgICBuZXdQb3Muc2V0WCgobV92
aWV3cG9ydC0+d2lkdGgoKSAtIGNvbnRlbnRHZW9tZXRyeS53aWR0aCgpKSAvIDIpOworICAgIGVs
c2UgeworICAgICAgICBuZXdQb3Muc2V0WChxTWluKDAuLCBuZXdQb3MueCgpKSk7CisgICAgICAg
IGNvbnN0IHFyZWFsIHJpZ2h0U2lkZUdhcCA9IG1fdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgpLnJp
Z2h0KCkgLSBjb250ZW50R2VvbWV0cnkucmlnaHQoKTsKKyAgICAgICAgaWYgKHJpZ2h0U2lkZUdh
cCA+IDAuKQorICAgICAgICAgICAgbmV3UG9zLnNldFgobmV3UG9zLngoKSArIHJpZ2h0U2lkZUdh
cCk7CisgICAgfQorCisgICAgLy8gVmVydGljYWwgY29ycmVjdGlvbi4KKyAgICBpZiAoY29udGVu
dEdlb21ldHJ5LmhlaWdodCgpIDwgbV92aWV3cG9ydC0+aGVpZ2h0KCkpCisgICAgICAgIG5ld1Bv
cy5zZXRZKDApOworICAgIGVsc2UgeworICAgICAgICBuZXdQb3Muc2V0WShxTWluKDAuLCBuZXdQ
b3MueSgpKSk7CisgICAgICAgIGNvbnN0IHFyZWFsIGJvdHRvbVNpZGVHYXAgPSBtX3ZpZXdwb3J0
LT5ib3VuZGluZ1JlY3QoKS5ib3R0b20oKSAtIGNvbnRlbnRHZW9tZXRyeS5ib3R0b20oKTsKKyAg
ICAgICAgaWYgKGJvdHRvbVNpZGVHYXAgPiAwLikKKyAgICAgICAgICAgIG5ld1Bvcy5zZXRZKG5l
d1Bvcy55KCkgKyBib3R0b21TaWRlR2FwKTsKKyAgICB9CisKKyAgICBpZiAobmV3UG9zICE9IG1f
Y29udGVudC0+cG9zKCkpCisgICAgICAgIC8vIEZJWE1FOiBEbyB5b3Uga25vdyB3aGF0IEFOSU1B
VEUgbWVhbnM/CisgICAgICAgIG1fY29udGVudC0+c2V0UG9zKG5ld1Bvcyk7Cit9CisKK3ZvaWQg
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRTY2FsZVRvQm91bmRhcmll
cygpCit7CisgICAgY29uc3QgcXJlYWwgY3VycmVudFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgp
OworICAgIGNvbnN0IHFyZWFsIGJvdW5kZWRTY2FsZSA9IHFCb3VuZChtX2NvbnN0cmFpbnRzLm1p
bmltdW1TY2FsZSwgY3VycmVudFNjYWxlLCBtX2NvbnN0cmFpbnRzLm1heGltdW1TY2FsZSk7Cisg
ICAgaWYgKGN1cnJlbnRTY2FsZSAhPSBib3VuZGVkU2NhbGUpIHsKKyAgICAgICAgLy8gRklYTUU6
IERvIHlvdSBrbm93IHdoYXQgQU5JTUFURSBtZWFucz8KKyAgICAgICAgY29uc3QgUVBvaW50RiBj
ZW50ZXJPZkludGVyZXN0ID0gdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKG1fY29udGVu
dCwgbV92aWV3cG9ydCkuY2VudGVyKCk7CisgICAgICAgIHNjYWxlQ29udGVudChjZW50ZXJPZklu
dGVyZXN0LCBib3VuZGVkU2NhbGUpOworICAgIH0KK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2VudGVySW5Db250ZW50Q29v
cmRpbmF0ZSwgcXJlYWwgc2NhbGUpCit7CisgICAgUVBvaW50RiBvbGRQaW5jaENlbnRlck9uUGFy
ZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIGNlbnRl
ckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVudC0+c2V0U2NhbGUoc2NhbGUpOwor
ICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVt
KG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlKTsKKyAg
ICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVyT25Q
YXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Cit9CisKKyNpbmNsdWRlICJtb2NfVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAiCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkY2E5Njc2MjY2MDBlNzdjMDE4YTVmNzA2NTdmZGQ4YzRmZDI2NGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEJlbmphbWlu
IFBvdWxhaW4gPGJlbmphbWluQHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmVfaAorI2RlZmluZSBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2gKKworI2lu
Y2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKworUVRf
QkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUG9pbnRGOworY2xhc3MgUVNHSXRlbTsKK1FUX0VORF9O
QU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAg
IFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoY29uc3QgUVNHSXRlbSosIFFTR0l0ZW0qKTsKKwor
ICAgIHN0cnVjdCBDb25zdHJhaW50cyB7CisgICAgICAgIENvbnN0cmFpbnRzKCkKKyAgICAgICAg
ICAgIDogaW5pdGlhbFNjYWxlKDEuMCkKKyAgICAgICAgICAgICwgbWluaW11bVNjYWxlKDAuMjUp
CisgICAgICAgICAgICAsIG1heGltdW1TY2FsZSgxLjgpCisgICAgICAgICAgICAsIGlzVXNlclNj
YWxhYmxlKHRydWUpCisgICAgICAgIHsgfQorCisgICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsK
KyAgICAgICAgcXJlYWwgbWluaW11bVNjYWxlOworICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7
CisgICAgICAgIGJvb2wgaXNVc2VyU2NhbGFibGU7CisgICAgfTsKKworICAgIHZvaWQgcmVzZXQo
KTsKKyAgICB2b2lkIHNldENvbnN0cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJik7CisKKyAgICB2
b2lkIHBhbkdlc3R1cmVTdGFydGVkKCk7CisgICAgdm9pZCBwYW5HZXN0dXJlUmVxdWVzdFVwZGF0
ZShxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSk7CisgICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2Vs
bGVkKCk7CisgICAgdm9pZCBwYW5HZXN0dXJlRW5kZWQoKTsKKworICAgIHZvaWQgcGluY2hHZXN0
dXJlU3RhcnRlZCgpOworICAgIHZvaWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBR
UG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVG
YWN0b3IpOworICAgIHZvaWQgcGluY2hHZXN0dXJlRW5kZWQoKTsKKworUV9TSUdOQUxTOgorICAg
IHZvaWQgY29udGVudFZpc2libGVBcmVhQ2hhbmdlZCgpOworCisgICAgdm9pZCBjb21taXRTY2Fs
ZUNoYW5nZSgpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgLy8gUmVzcG9uZCB0byBjaGFuZ2Vz
IG9mIGNvbnRlbnQgdGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywgbGlrZSB0aGUgcGFnZSByZXNp
emluZyBpdHNlbGYuCisgICAgdm9pZCBjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCk7CisgICAgdm9p
ZCBjb250ZW50U2NhbGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVDb250
ZW50SWZOZWVkZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7Cisg
ICAgdm9pZCB1cGRhdGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCgpOworCisgICAgdm9pZCBhbmlt
YXRlQ29udGVudFBvc2l0aW9uVG9Cb3VuZGFyaWVzKCk7CisgICAgdm9pZCBhbmltYXRlQ29udGVu
dFNjYWxlVG9Cb3VuZGFyaWVzKCk7CisKKyAgICB2b2lkIHNjYWxlQ29udGVudChjb25zdCBRUG9p
bnRGJiBjZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlLCBxcmVhbCBzY2FsZSk7CisKKyAgICBmcmll
bmQgY2xhc3MgVmlld3BvcnRVcGRhdGVHdWFyZDsKKworICAgIGNvbnN0IFFTR0l0ZW0qIGNvbnN0
IG1fdmlld3BvcnQ7CisgICAgUVNHSXRlbSogY29uc3QgbV9jb250ZW50OworCisgICAgQ29uc3Ry
YWludHMgbV9jb25zdHJhaW50czsKKyAgICBib29sIG1faXNVcGRhdGluZ0NvbnRlbnQ7CisgICAg
ZW51bSBVc2VySW50ZXJhY3Rpb25GbGFnIHsKKyAgICAgICAgVXNlckhhc05vdEludGVyYWN0ZWRX
aXRoQ29udGVudCA9IDAsCisgICAgICAgIFVzZXJIYXNNb3ZlZENvbnRlbnQgPSAxLAorICAgICAg
ICBVc2VySGFzU2NhbGVkQ29udGVudCA9IDIKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhV
c2VySW50ZXJhY3Rpb25GbGFncywgVXNlckludGVyYWN0aW9uRmxhZyk7CisgICAgVXNlckludGVy
YWN0aW9uRmxhZ3MgbV91c2VySW50ZXJhY3Rpb25GbGFnczsKKworICAgIHFyZWFsIG1fcGluY2hT
dGFydFNjYWxlOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyYgYSwgY29uc3QgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Q29uc3RyYWludHMmIGIpCit7CisgICAgcmV0dXJuIGEuaW5pdGlhbFNjYWxlID09
IGIuaW5pdGlhbFNjYWxlCisgICAgICAgICAgICAmJiBhLm1pbmltdW1TY2FsZSA9PSBiLm1pbmlt
dW1TY2FsZQorICAgICAgICAgICAgJiYgYS5tYXhpbXVtU2NhbGUgPT0gYi5tYXhpbXVtU2NhbGUK
KyAgICAgICAgICAgICYmIGEuaXNVc2VyU2NhbGFibGUgPT0gYi5pc1VzZXJTY2FsYWJsZTsKK30K
KworfQorCisjZW5kaWYgLyogVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCmluZGV4
IDk4MmNiNDBmYzlkN2FjY2UwYWQzZGZkOWJlZmNmMzA2NzE5MDVjZmEuLmEyMWNjYmYwN2JlMWU0
NDE1ODY5YTc0NTNmNGE5ZTExNTlmMTFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNoV2Vi
UGFnZVByb3h5KFRvdWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgUVdLQ29udGV4dCog
Y29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUVRvdWNoV2ViUGFnZVByb3h5
OjpRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLCBRV0tD
b250ZXh0KiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBRdFdl
YlBhZ2VQcm94eSh2aWV3SW50ZXJmYWNlLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYpCi0gICAgLCBt
X3Bhbkdlc3R1cmVSZWNvZ25pemVyKHZpZXdJbnRlcmZhY2UpCi0gICAgLCBtX3BpbmNoR2VzdHVy
ZVJlY29nbml6ZXIodmlld0ludGVyZmFjZSkKKyAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIo
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXpl
cih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQogewogICAgIGluaXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAppbmRleCA3OWVi
MGU2NmRlZGJjMjVjYTI2YWJhZGM5NzM0M2IwMjdlYmEyNTdmLi5kYTViMjcxMDI3NjM1NjU2YjQ1
ZjVhYzE3M2RkMjNlNTNmNWZiOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCkBAIC0zMCwxMiArMzAsMTYgQEAKICNpbmNsdWRlICJU
b3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7Cit9CisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcm94eSA6IHB1Ymxp
YyBRdFdlYlBhZ2VQcm94eQogewogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3Vj
aFZpZXdJbnRlcmZhY2UqLCBRV0tDb250ZXh0KiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBR
VG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiwgVmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSosIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogCiAgICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDQ0ZWJiNjlj
ZGMyZGRkMjVhYTEyNTgzYWJkYjk1ZGYxMTM4YzYyNzQuLjVjYzIwNTBiZGFmMjQ2ZjZjZTI5MGQ0
Y2UwOTYyZjI5Y2U0M2M0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yNTIsNiArMjUyLDcgQEAgSEVB
REVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1NHQWdlbnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0
L1NHVGlsZU5vZGUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBcCisgICAg
VUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1dlYlVuZG9Db21tYW5kUXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51
UHJveHlRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oIFwKQEAg
LTQ4Myw2ICs0ODQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3
aW5nQXJlYVByb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVRp
bGVRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UZXh0Q2hlY2tlclF0LmNwcCBcCisgICAgVUlQ
cm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIFwKICAgICBVSVByb2Nlc3Mv
cXQvV2ViQ29udGV4dE1lbnVQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRl
eHRRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104340</attachid>
            <date>2011-08-18 07:37:00 -0700</date>
            <delta_ts>2011-08-19 07:56:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66383-20110818164337.patch</filename>
            <type>text/plain</type>
            <size>48493</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlYzI0MDg1ODcy
Y2ZmNmFkY2Q1YWM2OTc3NWIxNjcyYWM5Li5lMjk1NTc2YjE1M2I2MmVjMGFjNmI3Mzc0MGY1N2Yw
MTYxZDcxYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTEtMDgtMTggIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBB
ZGQgYSBiYXNpYyBlbmdpbmUgdG8gY29udHJvbCB0aGUgY29udGVudCBvZiB0aGUgdmlld3BvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUgdG8gaGFuZGxlIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3cG9y
dC4gVGhlIGNsYXNzIG1ha2UKKyAgICAgICAgc3VyZSB0aGUgUVRvdWNoV2ViUGFnZSBzdGF5cyBp
biB0aGUgdmlld3BvcnQgYW5kIGluIHRoZSBib3VuZGFyaWVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5jcHA6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKTogU2V0IHRoZSB0
cmFuc2Zvcm0gb3JpZ2luIHRvIHRoZSB0b3AgbGVmdCBzbworICAgICAgICB3ZSBjYW4gYXN1bWUg
dGhlIHBvc2l0aW9uIDAsIDAgaXMgYWx3YXlzIHRoZSB0b3AgbGVmdCBvZiB0aGUgcGFnZS4KKyAg
ICAgICAgKFFUb3VjaFdlYlBhZ2VQcml2YXRlOjpfcV9jb21taXRTY2FsZUNoYW5nZSk6IE1ha2Ug
Y29tbWl0U2NhbGVDaGFuZ2UgYSBzbG90CisgICAgICAgIGluIG9yZGVyIHRvIGNvbXBsZXRlbHkg
ZGVjb3VwbGUgdGhlIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgYW5kIHRoZSBXZWJLaXQgY2xh
c3Nlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJp
dmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3Zp
ZXdwb3J0UmVjdFVwZGF0ZWQpOiBNYWtlIF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSBhIHNsb3QK
KyAgICAgICAgZm9yIHJlZHVjaW5nIGNvdXBsaW5nLgorICAgICAgICAoUVRvdWNoV2ViVmlld1By
aXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnNldFZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRHZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0
dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6
ZXIuaDogQ2hhbmdlIHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gdGFsayBkaXJlY3RseQorICAg
ICAgICB0byB0aGUgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSBpbnN0ZWFkIG9mIGludGVyYWN0
aW5nIHRocm91Z2ggVG91Y2hWaWV3SW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJl
UmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6OlF0
UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpR
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZENvbW1p
dCk6IEFkZCB0aGUgbG9hZENvbW1pdGVkIGNhbGxiYWNrIGluIG9yZGVyCisgICAgICAgIHRvIHJl
c2V0IHRoZSB2aWV3cG9ydCBzdGF0ZSB3aGVuIHRoZSBwYWdlIGNoYW5nZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91
Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNl
OjpUb3VjaFZpZXdJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZh
Y2U6OmNvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0lu
dGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6dmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Y29udGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3cG9ydFVwZGF0ZUd1YXJkOjp+Vmlld3BvcnRVcGRhdGVHdWFyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNl
dENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFy
dGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hH
ZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudEdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRTY2FsZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRh
dGVDb250ZW50U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnVwZGF0ZUNvbnRlbnRQb3NpdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRQb3NpdGlvblRv
Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OmFuaW1hdGVDb250ZW50U2NhbGVUb0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRv
dWNod2VicGFnZXByb3h5LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNo
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMTUgIERtaXRyeSBUaXRvdiAg
PGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UgZG9lcyBub3QgaGF2ZSBlbm91Z2ggcGFyYW1ldGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwCmluZGV4IGRkZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmFk
Y2U4MzYzYTBkYTA2OTY0OWFhYzdlOGE3ZmE5NTMwNjRjY2MxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTEzMSw2
ICsxMzEsMTEgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQog
ICAgIGVtaXQgcS0+bG9hZFN0YXJ0ZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICAvLyBOb3QgdXNlZCBmb3IgUURlc2t0b3BXZWJW
aWV3LgorfQorCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkK
IHsKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNmOGE0ODE3
MTlmY2FmZmZiMzlkMGZmYTA1YzA4NGE3Y2MxLi44YWI2MjU2MDJhN2RjODJhYTk5M2Y0MDcxZTM5
ZDQ4ZGUyZmI2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZENvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFBy
b2dyZXNzKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJwYWdlLmNwcAppbmRleCAxOTRjMTljMzA2MDQ1MTAxOGY0NDNhY2Q5ODVlNzE5YWUxMjE5
ZjRlLi42M2E5ODMwYWFmYzgzYzZkMGQ4M2IzZWQ4NTMyYjdkMWJkOTNmMWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTM0
LDYgKzM0LDEwIEBAIFFUb3VjaFdlYlBhZ2U6OlFUb3VjaFdlYlBhZ2UoUVNHSXRlbSogcGFyZW50
KQogICAgICwgZChuZXcgUVRvdWNoV2ViUGFnZVByaXZhdGUodGhpcykpCiB7CiAgICAgc2V0Rmxh
ZyhJdGVtSGFzQ29udGVudHMpOworCisgICAgLy8gV2UgZG8gdGhlIHRyYW5zZm9ybSBmcm9tIHRo
ZSB0b3AgbGVmdCBzbyB0aGUgdmlld3BvcnQgY2FuIGFzc3VtZSB0aGUgcG9zaXRpb24gMCwgMAor
ICAgIC8vIGlzIGFsd2F5cyB3aGVyZSByZW5kZXJpbmcgc3RhcnRzLgorICAgIHNldFRyYW5zZm9y
bU9yaWdpbihUb3BMZWZ0KTsKIH0KIAogUVRvdWNoV2ViUGFnZTo6flFUb3VjaFdlYlBhZ2UoKQpA
QCAtMTQ1LDYgKzE0OSwxMSBAQCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVBy
aXZhdGUoUVRvdWNoV2ViUGFnZSogdmlldykKIHsKIH0KIAordm9pZCBRVG91Y2hXZWJQYWdlUHJp
dmF0ZTo6X3FfY29tbWl0U2NhbGVDaGFuZ2UoKQoreworICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7
Cit9CisKIHZvaWQgUVRvdWNoV2ViUGFnZVByaXZhdGU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKIHsK
ICAgICBwYWdlLT5zZXRDb250ZW50c1NjYWxlKHEtPnNjYWxlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCA2MDhjNzUzMjEzZjRh
ODUwMDBkOTNiNWI1ZTU2NDY2MTgyNGE1YjVmLi5lZmEwM2Q0MzQzNGZjNDk4YTQxY2FjMmZkZGQ4
ZGFjM2E1OWYyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaApAQCAtNzgsNiArNzgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJp
dmF0ZToKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX2NvbW1pdFNjYWxlQ2hhbmdlKCkp
OworCiAgICAgUVRvdWNoV2ViUGFnZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFUb3Vj
aFdlYlZpZXdQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2VfcC5oCmluZGV4IDY0ZGRkNmI4N2Y0ZTMzZjFkZGI4ZTg1ODVjMWIxZGRjMmE0MGI1ZjIuLmVk
MTdiMGMzZjJkNzBiOGYyY2EwNDQyMTYzOGM1ODEyN2NiNDg4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaApAQCAtMzksNiArMzks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlKFFUb3VjaFdlYlBhZ2VQcm94eSopOwogCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydFJlY3QoY29uc3QgUVJlY3RGJik7CisgICAgdm9pZCBfcV9jb21t
aXRTY2FsZUNoYW5nZSgpOwogICAgIHZvaWQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKIAogICAgIFFU
b3VjaFdlYlBhZ2UqIGNvbnN0IHE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA4Y2ZmN2NmZjllNzEzM2JiNTg5ZDE2NGYyZTAz
N2JhMWRhY2I0OWUwLi5lOTVkYWJiNmRiODdmOTkyMWI0NjdmNWQzODI1MjMwYmQ0ZTliOTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5j
cHAKQEAgLTMzLDI3ICszMywyOSBAQCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6UVRvdWNoV2ViVmll
d1ByaXZhdGUoUVRvdWNoV2ViVmlldyogcSkKICAgICA6IHEocSkKICAgICAsIHBhZ2VWaWV3KG5l
dyBRVG91Y2hXZWJQYWdlKHEpKQogICAgICwgdmlld0ludGVyZmFjZShxLCBwYWdlVmlldy5kYXRh
KCkpCi0gICAgLCBwYWdlKCZ2aWV3SW50ZXJmYWNlLCBkZWZhdWx0V0tDb250ZXh0KCkpCisgICAg
LCBpbnRlcmFjdGlvbkVuZ2luZShxLCBwYWdlVmlldy5kYXRhKCkpCisgICAgLCBwYWdlKCZ2aWV3
SW50ZXJmYWNlLCAmaW50ZXJhY3Rpb25FbmdpbmUsIGRlZmF1bHRXS0NvbnRleHQoKSkKIHsKICAg
ICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcu
ZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7CisKKyAgICBR
T2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKHZpZXdwb3J0VXBkYXRl
UmVxdWVzdGVkKCkpLCBxLCBTTE9UKF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSkpOworICAgIFFP
YmplY3Q6OmNvbm5lY3QoJmludGVyYWN0aW9uRW5naW5lLCBTSUdOQUwoY29tbWl0U2NhbGVDaGFu
Z2UoKSksIHBhZ2VWaWV3LmRhdGEoKSwgU0xPVChfcV9jb21taXRTY2FsZUNoYW5nZSgpKSk7CiB9
CiAKLXZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSkKK3ZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQogewot
ICAgIHBhZ2VWaWV3LT5zZXRYKHBhZ2VWaWV3LT54KCkgKyBkZWx0YVgpOwotICAgIHBhZ2VWaWV3
LT5zZXRZKHBhZ2VWaWV3LT55KCkgKyBkZWx0YVkpOwotICAgIHZpZXdwb3J0UmVjdFVwZGF0ZWQo
KTsKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS5yZXNldCgpOwogfQogCi12b2lkIFFUb3VjaFdlYlZp
ZXdQcml2YXRlOjp2aWV3cG9ydFJlY3RVcGRhdGVkKCkKK3ZvaWQgUVRvdWNoV2ViVmlld1ByaXZh
dGU6Ol9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKQogewogICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRl
KiBjb25zdCBwYWdlVmlld1ByaXZhdGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7CiAgICAgY29uc3Qg
UVJlY3RGIHZpZXdwb3J0UmVjdEluUGFnZVZpZXdDb29yZGluYXRlID0gcS0+bWFwUmVjdFRvSXRl
bShwYWdlVmlldy5kYXRhKCksIHEtPmJvdW5kaW5nUmVjdCgpKTsKICAgICBwYWdlVmlld1ByaXZh
dGUtPnNldFZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7CiB9
CiAKLXZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3RhdGUoKQordm9p
ZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpCiB7CiAg
ICAgUVNpemUgYXZhaWxhYmxlU2l6ZSA9IHEtPmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUo
KTsKIApAQCAtNjIsMTEgKzY0LDEyIEBAIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0
ZVZpZXdwb3J0U3RhdGUoKQogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHIg
PSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHZpZXdwb3J0QXJndW1lbnRzLCB3
a1ByZWZzLT5sYXlvdXRGYWxsYmFja1dpZHRoKCksIHdrUHJlZnMtPmRldmljZVdpZHRoKCksIHdr
UHJlZnMtPmRldmljZUhlaWdodCgpLCB3a1ByZWZzLT5kZXZpY2VEUEkoKSwgYXZhaWxhYmxlU2l6
ZSk7CiAKLSAgICB2aWV3cG9ydC5pbml0aWFsU2NhbGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKLSAg
ICB2aWV3cG9ydC5taW5pbXVtU2NhbGUgPSBhdHRyLm1pbmltdW1TY2FsZTsKLSAgICB2aWV3cG9y
dC5tYXhpbXVtU2NhbGUgPSBhdHRyLm1heGltdW1TY2FsZTsKLSAgICB2aWV3cG9ydC5waXhlbFJh
dGlvID0gYXR0ci5kZXZpY2VQaXhlbFJhdGlvOwotICAgIHZpZXdwb3J0LmlzVXNlclNjYWxhYmxl
ID0gISFhdHRyLnVzZXJTY2FsYWJsZTsKKyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpD
b25zdHJhaW50cyBuZXdDb25zdHJhaW50czsKKyAgICBuZXdDb25zdHJhaW50cy5pbml0aWFsU2Nh
bGUgPSBhdHRyLmluaXRpYWxTY2FsZTsKKyAgICBuZXdDb25zdHJhaW50cy5taW5pbXVtU2NhbGUg
PSBhdHRyLm1pbmltdW1TY2FsZTsKKyAgICBuZXdDb25zdHJhaW50cy5tYXhpbXVtU2NhbGUgPSBh
dHRyLm1heGltdW1TY2FsZTsKKyAgICBuZXdDb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSA9ICEh
YXR0ci51c2VyU2NhbGFibGU7CisgICAgaW50ZXJhY3Rpb25FbmdpbmUuc2V0Q29uc3RyYWludHMo
bmV3Q29uc3RyYWludHMpOwogCiAgICAgLy8gT3ZlcndyaXRlIG1pbmltdW0gc2NhbGUgdmFsdWUg
d2l0aCBmaXQtdG8tdmlldyB2YWx1ZSwgdW5sZXNzIHRoZSB0aGUgY29udGVudCBhdXRob3IKICAg
ICAvLyBleHBsaWNpdGx5IHNheXMgbm8uIE5COiBXZSBjYW4gb25seSBkbyB0aGlzIHdoZW4gd2Ug
a25vdyB3ZSBoYXZlIGEgdmFsaWQgc2l6ZSwgaWUuCkBAIC03OSw3ICs4Miw3IEBAIHZvaWQgUVRv
dWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U3RhdGUoKQogdm9pZCBRVG91Y2hXZWJW
aWV3UHJpdmF0ZTo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdmlld3BvcnRBcmd1bWVudHMgPSBhcmdzOwotICAgIHVw
ZGF0ZVZpZXdwb3J0U3RhdGUoKTsKKyAgICB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9
CiAKIFFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcoUVNHSXRlbSogcGFyZW50KQpAQCAtMTAz
LDggKzEwNiw4IEBAIHZvaWQgUVRvdWNoV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFS
ZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYgb2xkCiB7CiAgICAgUVNHSXRlbTo6Z2Vv
bWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CiAgICAgaWYgKG5ld0dlb21l
dHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpIHsKLSAgICAgICAgZC0+dXBkYXRlVmll
d3BvcnRTdGF0ZSgpOwotICAgICAgICBkLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7CisgICAgICAg
IGQtPnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKTsKKyAgICAgICAgZC0+X3Ffdmlld3BvcnRS
ZWN0VXBkYXRlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaAppbmRleCA0NTE5ZGM4ZGI5ZDM4NTEyYTdlN2NiNzEzYTM1
MzUwZjA1NGQ5Mjc2Li43MDYwMDI1NDAxMzFlNjJkZmUyOGYwZjM1ZWMzZjFjZmFjNDA4NGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaApA
QCAtNDcsNiArNDcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5Q2hh
bmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJpdmF0ZToKKyAgICBRX1BS
SVZBVEVfU0xPVChkLCB2b2lkIF9xX3ZpZXdwb3J0UmVjdFVwZGF0ZWQoKSk7CisKICAgICBmcmll
bmQgY2xhc3MgV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U7CiAgICAgUVRvdWNoV2ViVmlld1By
aXZhdGUgKmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2Vidmlld19wLmgKaW5kZXggYmMxYzdkNGZhNjEyYTM2ZTRmMTgzOWFlMmFjNjAzYTgyYzQ1
ZGZhYy4uNzIwMWQ5ZjA1MDYxMzY5MTIxYWY2NzdjNmQ0MTgxZGE2NDU1ZWFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCkBAIC0y
NCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8UVNjb3BlZFBvaW50ZXI+CiAjaW5jbHVkZSAicXRvdWNo
d2VicGFnZXByb3h5LmgiCiAjaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogCiBjbGFzcyBRVG91Y2hXZWJQYWdlOwog
Y2xhc3MgUVRvdWNoV2ViVmlldzsKQEAgLTMzLDMxICszNCwxNiBAQCBjbGFzcyBRVG91Y2hXZWJW
aWV3UHJpdmF0ZQogcHVibGljOgogICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZp
ZXcqIHEpOwogCi0gICAgdm9pZCBzY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpOwot
ICAgIHZvaWQgdmlld3BvcnRSZWN0VXBkYXRlZCgpOwotICAgIHZvaWQgdXBkYXRlVmlld3BvcnRT
dGF0ZSgpOworICAgIHZvaWQgbG9hZERpZENvbW1pdCgpOworICAgIHZvaWQgX3Ffdmlld3BvcnRS
ZWN0VXBkYXRlZCgpOworICAgIHZvaWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cyYgYXJncyk7CiAKLSAgICBzdHJ1Y3QgVmlld3BvcnRTdGF0ZSB7Ci0gICAgICAgIFZpZXdw
b3J0U3RhdGUoKQotICAgICAgICAgICAgOiBpbml0aWFsU2NhbGUoMS4wKQotICAgICAgICAgICAg
LCBtaW5pbXVtU2NhbGUoMC4yNSkKLSAgICAgICAgICAgICwgbWF4aW11bVNjYWxlKDEuOCkKLSAg
ICAgICAgICAgICwgcGl4ZWxSYXRpbygxLjApCi0gICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxl
KHRydWUpCi0gICAgICAgIHsgfQotCi0gICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsKLSAgICAg
ICAgcXJlYWwgbWluaW11bVNjYWxlOwotICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7Ci0gICAg
ICAgIHFyZWFsIHBpeGVsUmF0aW87Ci0gICAgICAgIGJvb2wgaXNVc2VyU2NhbGFibGU7Ci0gICAg
fSB2aWV3cG9ydDsKLQogICAgIFFUb3VjaFdlYlZpZXcqIGNvbnN0IHE7CiAgICAgUVNjb3BlZFBv
aW50ZXI8UVRvdWNoV2ViUGFnZT4gcGFnZVZpZXc7CiAgICAgV2ViS2l0OjpUb3VjaFZpZXdJbnRl
cmZhY2Ugdmlld0ludGVyZmFjZTsKKyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lIGludGVy
YWN0aW9uRW5naW5lOwogICAgIFFUb3VjaFdlYlBhZ2VQcm94eSBwYWdlOwogCiAgICAgV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggMGMzYTJiZTdmZTJkMTY2ZjBkZDQxZjZk
NDlkZTg3OTVlMTA2OTUxMC4uZTk2NTRiMzA1ZGEwM2NmNGM5YjE1MDhmOTU0NjA2ZGFjYjcyMDA5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApAQCAtOTUs
NiArOTUsNyBAQCB2b2lkIHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZQogICAgIFFVcmwgcVVybCA9IHVybFN0
cjsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0
aW9ucygpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRpZENoYW5nZVVybChx
VXJsKTsKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5sb2FkRGlkQ29tbWl0KCk7
CiB9CiAKIHZvaWQgcXRfd2tfZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2du
aXplci5jcHAKaW5kZXggNjQzZjkyYjQwZGE1YjdjZGZhYTZjM2U0MjExNGMwY2QyOTVhNDc3MC4u
MWY3Mzc1YTYwM2FlNjJhM2ExNTA0OGUzYjZhZWZiMjZlYzNhNWIyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMjgs
MTEgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1RdEdlc3R1cmVSZWNvZ25pemVy
OjpRdEdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSogdG91Y2hWaWV3SW50ZXJm
YWNlKQotICAgIDogbV90b3VjaFZpZXdJbnRlcmZhY2UodG91Y2hWaWV3SW50ZXJmYWNlKQorUXRH
ZXN0dXJlUmVjb2duaXplcjo6UXRHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQorICAgIDogbV92aWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCiAgICAgLCBtX3N0YXRlKE5v
R2VzdHVyZSkKIHsKLSAgICBBU1NFUlQodG91Y2hWaWV3SW50ZXJmYWNlKTsKKyAgICBBU1NFUlQo
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSk7CiB9CiAKIHZvaWQgUXRHZXN0dXJlUmVjb2duaXpl
cjo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2Vz
dHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVS
ZWNvZ25pemVyLmgKaW5kZXggMmRjNjBlMDFkNjRlNzI3NDUwNDhjYTIxMzdlYmE3ODc5OGVlNGFl
NC4uYjU1MDY4ZGFlYzYxOTA4YzMxMDdkNmMxMmU0OTAxNmFlNjY2ODc3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oCkBAIC0yOCwx
NCArMjgsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFRvdWNoVmlld0ludGVy
ZmFjZTsKK2NsYXNzIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7CiAKIGNsYXNzIFF0R2VzdHVy
ZVJlY29nbml6ZXIgewogcHJvdGVjdGVkOgotICAgIFF0R2VzdHVyZVJlY29nbml6ZXIoVG91Y2hW
aWV3SW50ZXJmYWNlKik7CisgICAgUXRHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKik7CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgVG91Y2hWaWV3SW50ZXJmYWNl
KiBjb25zdCBtX3RvdWNoVmlld0ludGVyZmFjZTsKKyAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKiBjb25zdCBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7CiAgICAgZW51bSBTdGF0ZSB7
CiAgICAgICAgIE5vR2VzdHVyZSwKICAgICAgICAgR2VzdHVyZVJlY29nbml0aW9uU3RhcnRlZCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNv
Z25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNv
Z25pemVyLmNwcAppbmRleCBiYWRmNjBkN2ZhMWZjYzcwYzMzNDdjMDc1Y2EwY2I4ODg5ODBhNjMz
Li4xZmJkOGNjYjNlOTc4Mzk3MjMzNjZlMDcxN2I2OGJkMDUzZjliZTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3Bw
CkBAIC0yMywxNSArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiUXRQYW5HZXN0dXJlUmVjb2du
aXplci5oIgogCi0jaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVj
b2duaXplcihUb3VjaFZpZXdJbnRlcmZhY2UqIHRvdWNoVmlld0ludGVyZmFjZSkKLSAgICA6IFF0
R2VzdHVyZVJlY29nbml6ZXIodG91Y2hWaWV3SW50ZXJmYWNlKQorUXRQYW5HZXN0dXJlUmVjb2du
aXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBp
bnRlcmFjdGlvbkVuZ2luZSkKKyAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIoaW50ZXJhY3Rpb25F
bmdpbmUpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTQ1LDcgKzQ2LDcgQEAgYm9vbCBRdFBhbkdl
c3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAg
IC8vIEhhdmluZyBtdWx0aXBsZSB0b3VjaCBwb2ludHMgY2FuY2VsIHRoZSBwYW5uaW5nIGdlc3R1
cmUuCiAgICAgaWYgKGV2ZW50LT50b3VjaFBvaW50cygpLnNpemUoKSA+IDEpIHsKICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gR2VzdHVyZVJlY29nbml6ZWQpCi0gICAgICAgICAgICBtX3RvdWNoVmll
d0ludGVyZmFjZS0+cGFuR2VzdHVyZUNhbmNlbGxlZCgpOworICAgICAgICAgICAgbV92aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLT5wYW5HZXN0dXJlQ2FuY2VsbGVkKCk7CiAgICAgICAgIHJlc2V0
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC02OCwxOCArNjksMTggQEAgYm9v
bCBRdFBhbkdlc3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2
ZW50KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgbV9zdGF0
ZSA9IEdlc3R1cmVSZWNvZ25pemVkOwotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2Ut
PnBhbkdlc3R1cmVTdGFydGVkKCk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUtPnBhbkdlc3R1cmVTdGFydGVkKCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCk7CiAgICAgICAgIC8vIE9mZnNldCBzZW50IHRv
IHRoZSB2aWV3cyBtdXN0IGJlIGluIHBhZ2UgdmlldyBjb29yZGluYXRlIHNwYWNlLgogICAgICAg
ICBRUG9pbnRGIG9mZnNldFNpbmNlTGFzdEV2ZW50KHRvdWNoUG9pbnQucG9zKCkgLSB0b3VjaFBv
aW50Lmxhc3RQb3MoKSk7Ci0gICAgICAgIG1fdG91Y2hWaWV3SW50ZXJmYWNlLT5wYW5HZXN0dXJl
UmVxdWVzdFNjcm9sbChvZmZzZXRTaW5jZUxhc3RFdmVudC54KCksIG9mZnNldFNpbmNlTGFzdEV2
ZW50LnkoKSk7CisgICAgICAgIG1fdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+cGFuR2VzdHVy
ZVJlcXVlc3RVcGRhdGUob2Zmc2V0U2luY2VMYXN0RXZlbnQueCgpLCBvZmZzZXRTaW5jZUxhc3RF
dmVudC55KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBRRXZlbnQ6
OlRvdWNoRW5kOgogICAgICAgICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJlUmVjb2duaXplZCkgewot
ICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBhbkdlc3R1cmVFbmRlZCgpOworICAg
ICAgICAgICAgbV92aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5wYW5HZXN0dXJlRW5kZWQoKTsK
ICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNv
Z25pemVyLmgKaW5kZXggODA3OTU5MzQ3YzI3MjNmZjExOWY4MzQ4MmYxM2QzNTA3Mzk4ZTE3Zi4u
NzRiYjc5ZmEyYTZlNTQxMDY0MGVlMzY1ZWM0YmQ4MDU0Yjg2NGRkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNvbnN0IHFyZWFsIHBhbm5pbmdJbml0aWFsVHJpZ2dlckRpc3RhbmNlVGhy
ZXNob2xkID0gNS47CiAKIGNsYXNzIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIgOiBwcml2YXRlIFF0
R2VzdHVyZVJlY29nbml6ZXIgewogcHVibGljOgotICAgIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIo
VG91Y2hWaWV3SW50ZXJmYWNlKik7CisgICAgUXRQYW5HZXN0dXJlUmVjb2duaXplcihWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKik7CiAgICAgYm9vbCByZWNvZ25pemUoY29uc3QgUVRvdWNoRXZl
bnQqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggZjlkNWU3MWU0
MTkxMzA4NDU0YzMwNTZmNmNmYWIwMTE4MzhhMWI4Ni4uM2FmZTc5MzkxM2Y1NzJhYjE1OWUyOTkz
MjZmZGRhZDdmN2IzMzBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCIK
IAotI2luY2x1ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIlZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuaCIKICNpbmNsdWRlIDxRdENvcmUvUUxpbmVGPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ5LDggKzQ5LDggQEAgc3RhdGljIGlubGluZSBRUG9pbnRGIGNvbXB1dGVU
b3VjaENlbnRlcihjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQxLAogICAgIHJl
dHVybiAocG9pbnQxLnBvcygpICsgcG9pbnQyLnBvcygpKSAvIDIuMGY7CiB9CiAKLVF0UGluY2hH
ZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVy
ZmFjZSogdG91Y2hWaWV3SW50ZXJmYWNlKQotICAgIDogUXRHZXN0dXJlUmVjb2duaXplcih0b3Vj
aFZpZXdJbnRlcmZhY2UpCitRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OlF0UGluY2hHZXN0dXJl
UmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkK
KyAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIoaW50ZXJhY3Rpb25FbmdpbmUpCiB7CiAgICAgcmVz
ZXQoKTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6
OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgY29uc3QgUUxpc3Q8UVRv
dWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyA9IGV2ZW50LT50b3VjaFBvaW50cygp
OwogICAgIGlmICh0b3VjaFBvaW50cy5zaXplKCkgPCAyKSB7CiAgICAgICAgIGlmIChtX3N0YXRl
ID09IEdlc3R1cmVSZWNvZ25pemVkKQotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2Ut
PnBpbmNoR2VzdHVyZUVuZGVkKCk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUtPnBpbmNoR2VzdHVyZUVuZGVkKCk7CiAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgUXRQaW5jaEdlc3R1cmVS
ZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICAg
ICAgICAgIGlmIChwaW5jaERpc3RhbmNlIDwgcGluY2hJbml0aWFsVHJpZ2dlckRpc3RhbmNlVGhy
ZXNob2xkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pemVkOwotICAgICAgICAgICAgICAgIG1fdG91Y2hW
aWV3SW50ZXJmYWNlLT5waW5jaEdlc3R1cmVTdGFydGVkKCk7CisgICAgICAgICAgICAgICAgbV92
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5waW5jaEdlc3R1cmVTdGFydGVkKCk7CiAKICAgICAg
ICAgICAgICAgICAvLyBXZSByZXNldCB0aGUgaW5pdGlhbCBwb3NpdGlvbiB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24gaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGp1bXAgY2F1c2VkCiAgICAgICAgICAg
ICAgICAgLy8gYnkgc2tpcHBpbmcgYWxsIHRoZSBldmVudHMgYmV0d2VlbiB0aGUgYmVnaW5uaW5n
IGFuZCB3aGVuIHRoZSB0aHJlc2hvbGQgaXMgaGl0LgpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgYm9v
bCBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29nbml6ZShjb25zdCBRVG91Y2hFdmVudCog
ZXZlbnQpCiAgICAgICAgICAgICBjb25zdCBxcmVhbCBpbml0aWFsU3BhbkRpc3RhbmNlID0gUUxp
bmVGKG1fcG9pbnQxLmluaXRpYWxTY3JlZW5Qb3NpdGlvbiwgbV9wb2ludDIuaW5pdGlhbFNjcmVl
blBvc2l0aW9uKS5sZW5ndGgoKTsKICAgICAgICAgICAgIGNvbnN0IHFyZWFsIHRvdGFsU2NhbGVG
YWN0b3IgPSBjdXJyZW50U3BhbkRpc3RhbmNlIC8gaW5pdGlhbFNwYW5EaXN0YW5jZTsKICAgICAg
ICAgICAgIGNvbnN0IFFQb2ludEYgdG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSA9IGNv
bXB1dGVUb3VjaENlbnRlcihwb2ludDEsIHBvaW50Mik7Ci0gICAgICAgICAgICBtX3RvdWNoVmll
d0ludGVyZmFjZS0+cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSh0b3VjaENlbnRlckluUGFnZVZp
ZXdDb29yZGluYXRlLCB0b3RhbFNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgIG1fdmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS0+cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSh0b3VjaENlbnRlcklu
UGFnZVZpZXdDb29yZGluYXRlLCB0b3RhbFNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgogICAgICAgICBpZiAobV9zdGF0ZSA9PSBHZXN0dXJl
UmVjb2duaXplZCkgewotICAgICAgICAgICAgbV90b3VjaFZpZXdJbnRlcmZhY2UtPnBpbmNoR2Vz
dHVyZUVuZGVkKCk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPnBp
bmNoR2VzdHVyZUVuZGVkKCk7CiAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaAppbmRleCBjM2M5NzE5OTQ5YWQ0NWQ5ODFl
YmM2ZjUzYTY3MTkzMDJmNGEwZWRhLi5mYWM3MGU4ZjdkYTgxNmI3NzhkNzE5ZjUxMTAxYWMwMDY3
ZWFjM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGlu
Y2hHZXN0dXJlUmVjb2duaXplci5oCkBAIC0zOCw4ICszOCw2IEBAIFFUX0VORF9OQU1FU1BBQ0UK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFRvdWNoVmlld0ludGVyZmFjZTsKLQogY2xh
c3MgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyIDogcHJpdmF0ZSBRdEdlc3R1cmVSZWNvZ25pemVy
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVG91Y2hQb2ludEluZm9ybWF0aW9uIHsKQEAgLTUyLDcg
KzUwLDcgQEAgcHVibGljOgogICAgICAgICBRUG9pbnRGIGluaXRpYWxQb3NpdGlvbjsKICAgICB9
OwogCi0gICAgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyKFRvdWNoVmlld0ludGVyZmFjZSopOwor
ICAgIFF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKik7
CiAgICAgYm9vbCByZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqKTsKICAgICB2b2lkIHJlc2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDdkMGMyY2IzYzJlYTM0NTE2MWEzNWM2OWYxM2VjZDRjMmU1MzQyNDguLmRkMjc4MWY0
Njc5MTgzZjYyMzQxYjAwZmU5YzQ0MDU2MmIwMWIwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtNDIwLDYgKzQyMCwxMSBAQCB2b2lk
IFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkQmVnaW4oKQogICAgIG1fdmlld0ludGVyZmFjZS0+bG9h
ZERpZEJlZ2luKCk7CiB9CiAKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmxvYWREaWRDb21taXQoKQor
eworICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZENvbW1pdCgpOworfQorCiB2b2lkIFF0V2Vi
UGFnZVByb3h5Ojpsb2FkRGlkU3VjY2VlZCgpCiB7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5sb2Fk
RGlkU3VjY2VlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaAppbmRleCBmYTZjMjkxYjU0YzVjMGU4Njc3NWRhMTk3ZjMxMWUzZGNkZTJiMTE1Li44ODVm
NjdlMzIzM2NhMjZkODZiYTkzNGZkZDZlNWFhNWY0YmVkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcmKTsKIAogICAgIHZvaWQg
bG9hZERpZEJlZ2luKCk7CisgICAgdm9pZCBsb2FkRGlkQ29tbWl0KCk7CiAgICAgdm9pZCBsb2Fk
RGlkU3VjY2VlZCgpOwogICAgIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAKaW5kZXggMGQ1ZWNkZTU1OGUy
ZmI3ZjczMzBiOWZjOTAxMzMxYTBmNWIzMzE4YS4uMWIzNGEzNDBjMjZmNjU4YzQxZjg3NWU4NjBm
MWY2OGNjNDBkYTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Rv
dWNoVmlld0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Rv
dWNoVmlld0ludGVyZmFjZS5jcHAKQEAgLTMxLDY2ICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIFRvdWNoVmlld0ludGVyZmFjZTo6VG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcq
IHZpZXdwb3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpCiAgICAgOiBtX3ZpZXdwb3J0
Vmlldyh2aWV3cG9ydFZpZXcpCiAgICAgLCBtX3BhZ2VWaWV3KHBhZ2VWaWV3KQotICAgICwgbV9w
aW5jaFN0YXJ0U2NhbGUoMS5mKQogewogICAgIFFfQVNTRVJUKG1fdmlld3BvcnRWaWV3KTsKICAg
ICBRX0FTU0VSVChtX3BhZ2VWaWV3KTsKIH0KIAotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBh
bkdlc3R1cmVTdGFydGVkKCkKLXsKLSAgICAvLyBGSVhNRTogc3VzcGVuZCB0aGUgV2ViIGVuZ2lu
ZSAoc3RvcCBhbmltYXRlZCBHSUYsIGV0YykuCi0gICAgLy8gRklYTUU6IGluaXRpYWxpemUgcGh5
c2ljcyBmb3IgcGFubmluZyAoc3RvcCBhbmltYXRpb24sIGV0YykuCi19Ci0KLXZvaWQgVG91Y2hW
aWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSkKLXsKLSAgICAvLyBUcmFuc2xhdGUgdGhlIGRlbHRhIGZyb20gcGFnZSB0byB2aWV3
cG9ydCBjb29yZGluYXRlcy4KLSAgICBRUG9pbnRGIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyA9
IG1fcGFnZVZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdl
Vmlldy0+cG9zKCkpOwotICAgIFFQb2ludEYgZGVzdEluVmlld3BvcnRDb29yZHMgPSBtX3ZpZXdw
b3J0Vmlldy0+bWFwRnJvbUl0ZW0obV9wYWdlVmlldywgaXRlbVBvc2l0aW9uSW5JdGVtQ29vcmRz
ICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOwotICAgIFFQb2ludEYgb2Zmc2V0SW5WaWV3cG9y
dENvb3JkcyA9IGRlc3RJblZpZXdwb3J0Q29vcmRzIC0gbV92aWV3cG9ydFZpZXctPm1hcEZyb21J
dGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOwotICAgIG1f
dmlld3BvcnRWaWV3LT5kLT5zY3JvbGwob2Zmc2V0SW5WaWV3cG9ydENvb3Jkcy54KCksIG9mZnNl
dEluVmlld3BvcnRDb29yZHMueSgpKTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBh
bkdlc3R1cmVFbmRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHRyaWdnZXIgcGh5c2ljcyBlbmdpbmUg
Zm9yIGFuaW1hdGlvbiAodGhlIFdlYiBlbmdpbmUgc2hvdWxkIGJlIHJlc3VtZWQgYWZ0ZXIgdGhl
IGFuaW1hdGlvbi4pCi19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlQ2Fu
Y2VsbGVkKCkKLXsKLSAgICAvLyBGSVhNRTogcmVzZXQgcGh5c2ljcy4KLSAgICAvLyBGSVhNRTog
cmVzdW1lIHRoZSBXZWIgZW5naW5lLgotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGlu
Y2hHZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIGVuZ2luZS4K
LSAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fcGFnZVZpZXctPnNjYWxlKCk7Ci19Ci0KLXZvaWQg
VG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2lu
dEYmIHBpbmNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0
b3IpCi17Ci0gICAgLy8gRklYTUU6IGl0IGlzIGEgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoYXQ6
Ci0gICAgLy8gLXRoZSBzY2FsZSBzaG91bGQgYmUgZG9uZSBjZW50ZXJlZCBvbiB0aGUgcGluY2gg
Y2VudGVyLgotICAgIC8vIC1jaGFuZ2VzIG9mIHRoZSBjZW50ZXIgcG9zaXRpb24gc2hvdWxkIG1v
dmUgdGhlIHBhZ2UgZXZlbiBpZiB0aGUgem9vbSBmYWN0b3IKLSAgICAvLyAgZG9lcyBub3QgY2hh
bmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQgYmUgaGFuZGxlZCB0aHJv
dWdoIHRoZSBwaHlzaWNzIGVuZ2luZS4KLSAgICBjb25zdCBxcmVhbCBzY2FsZSA9IG1fcGluY2hT
dGFydFNjYWxlICogdG90YWxTY2FsZUZhY3RvcjsKLSAgICBRUG9pbnRGIG9sZFBpbmNoQ2VudGVy
T25QYXJlbnQgPSBtX3BhZ2VWaWV3LT5tYXBUb0l0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgp
LCBwaW5jaENlbnRlckluUGFnZVZpZXdDb29yZGluYXRlKTsKLSAgICBtX3BhZ2VWaWV3LT5zZXRT
Y2FsZShzY2FsZSk7Ci0gICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9wYWdl
Vmlldy0+bWFwVG9JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJblBh
Z2VWaWV3Q29vcmRpbmF0ZSk7Ci0gICAgbV9wYWdlVmlldy0+c2V0UG9zKG1fcGFnZVZpZXctPnBv
cygpIC0gKG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7
Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVFbmRlZCgpCi17Ci0g
ICAgLy8gRklYTUU6IGNvbW1pdCBzY2FsZSB3aXRoIHRoZSBzY2FsZSB2YWx1ZSBpbiB0aGUgdmFs
aWQgcmFuZ2UgaW4gb3JkZXIgdG8gZ2V0IG5ldyB0aWxlcy4KLSAgICAvLyBGSVhNRTogYW5pbWF0
ZSB0aGUgYmFjayB6b29tIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICAvLyBGSVhNRTogcmVzdW1l
IHRoZSBlbmdpbmUgYWZ0ZXIgdGhlIGFuaW1hdGlvbi4KLSAgICBtX3BhZ2VWaWV3LT5kLT5jb21t
aXRTY2FsZUNoYW5nZSgpOwotICAgIG1fdmlld3BvcnRWaWV3LT5kLT52aWV3cG9ydFJlY3RVcGRh
dGVkKCk7Ci19Ci0KIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRGaW5kWm9vbWFibGVBcmVh
KGNvbnN0IFFQb2ludCYsIGNvbnN0IFFSZWN0JikKIHsKIH0KQEAgLTExMSwxNCArNTYsOSBAQCBR
U2l6ZSBUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVhU2l6ZSgpCiAKIHZvaWQgVG91Y2hW
aWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmIG5ld1NpemUpCiB7
Ci0gICAgLy8gRklYTUU6IHRoZSB2aWV3cG9ydCBzaG91bGQgdGFrZSBjYXJlIG9mOgotICAgIC8v
IC1yZXNpemUgdGhlIHBhZ2UKLSAgICAvLyAtY2hhbmdlIHRoZSB6b29tIGxldmVsIGlmIG5lZWRl
ZAotICAgIC8vIC1tb3ZlIHRoZSBwYWdlIGJhY2sgaW4gdmlld3BvcnQgYm91bmRhcmllcyBpZiBu
ZWVkZWQKLSAgICAvLyAtdXBkYXRlIHRoZSB2aWV3cG9ydCByZWN0CiAgICAgbV9wYWdlVmlldy0+
c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKICAgICBtX3BhZ2VWaWV3LT5zZXRIZWlnaHQobmV3
U2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV92aWV3cG9ydFZpZXctPmQtPnZpZXdwb3J0UmVjdFVwZGF0
ZWQoKTsKKyAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygp
OwogfQogCiBib29sIFRvdWNoVmlld0ludGVyZmFjZTo6aXNBY3RpdmUoKQpAQCAtMTc4LDYgKzEx
OCwxMSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZEJlZ2luKCkKICAgICBlbWl0
IG1fcGFnZVZpZXctPmxvYWRTdGFydGVkKCk7CiB9CiAKK3ZvaWQgVG91Y2hWaWV3SW50ZXJmYWNl
Ojpsb2FkRGlkQ29tbWl0KCkKK3sKKyAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+bG9hZERpZENvbW1p
dCgpOworfQorCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQoKQogewog
ICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZFN1Y2NlZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCmluZGV4IDMxZmMyMGQ2OGJiM2Ji
OThhOTE4MzVhOTI0OGUyZDlkN2FhYjVlYjguLjk3MjlkNjdjMTQzMzU4NDJiYjYzMDg1OWVmMjk0
YmU2NjBkNjMzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3Vj
aFZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmgKQEAgLTQwLDE1ICs0MCw2IEBAIGNsYXNzIFRvdWNoVmlld0ludGVyZmFj
ZSA6IHB1YmxpYyBWaWV3SW50ZXJmYWNlCiBwdWJsaWM6CiAgICAgVG91Y2hWaWV3SW50ZXJmYWNl
KFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpOwog
Ci0gICAgdm9pZCBwYW5HZXN0dXJlU3RhcnRlZCgpOwotICAgIHZvaWQgcGFuR2VzdHVyZVJlcXVl
c3RTY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpOwotICAgIHZvaWQgcGFuR2VzdHVy
ZUVuZGVkKCk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7Ci0KLSAgICB2b2lkIHBp
bmNoR2VzdHVyZVN0YXJ0ZWQoKTsKLSAgICB2b2lkIHBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUo
Y29uc3QgUVBvaW50RiYsIHFyZWFsKTsKLSAgICB2b2lkIHBpbmNoR2VzdHVyZUVuZGVkKCk7Ci0K
ICAgICBTR0FnZW50KiBzY2VuZUdyYXBoQWdlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTcz
LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4
dChjb25zdCBRU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNvcihjb25z
dCBRQ3Vyc29yJik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRCZWdpbigpOworICAgIHZpcnR1
YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdWNjZWVk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsKQEAgLTg2LDggKzc4LDYg
QEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgUVRvdWNoV2ViVmlldyogY29uc3QgbV92aWV3cG9y
dFZpZXc7CiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3QgbV9wYWdlVmlldzsKLQotICAgIHFyZWFs
IG1fcGluY2hTdGFydFNjYWxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9WaWV3SW50ZXJmYWNlLmgKaW5kZXggZDg1ZjFlNTdkODRjOTRhMmQ5NDY2MDcyNDlkNzc5NDY5
ZTFhNzc4Yy4uNzBhNmY2MzY4ZGY0ZGRmZDYyZGI1YzJiZmU4MTE0MDcwNTIyYTczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCkBAIC02Nyw2ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBR
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1
cnNvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
U3VjY2VlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVy
cm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcyMDc4M2RhNmM3NDFjY2RjMTQ5ZmVi
Y2Y5YTdhOTEyOTExZjk5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcApAQCAtMCwwICsxLDMwMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgIlZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKKworI2lu
Y2x1ZGUgPFFQb2ludEY+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dpdGVtLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIFFSZWN0RiB2aXNpYmxlUmVjdEluQ29u
dGVudENvb3JkaW5hdGUoY29uc3QgUVNHSXRlbSogY29udGVudCwgY29uc3QgUVNHSXRlbSogdmll
d3BvcnQpCit7CisgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0SW5Db250ZW50Q29vcmRpbmF0ZSA9
IGNvbnRlbnQtPm1hcFJlY3RGcm9tSXRlbSh2aWV3cG9ydCwgdmlld3BvcnQtPmJvdW5kaW5nUmVj
dCgpKTsKKyAgICBjb25zdCBRUmVjdEYgdmlzaWJsZUFyZWEgPSBjb250ZW50LT5ib3VuZGluZ1Jl
Y3QoKS5pbnRlcnNlY3RlZCh2aWV3cG9ydEluQ29udGVudENvb3JkaW5hdGUpOworICAgIHJldHVy
biB2aXNpYmxlQXJlYTsKK30KKworc3RhdGljIGlubGluZSBRUmVjdEYgY29udGVudFJlY3RJblZp
ZXdwb3J0Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBjb250ZW50LCBjb25zdCBRU0dJdGVtKiB2
aWV3cG9ydCkKK3sKKyAgICByZXR1cm4gdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShjb250ZW50
LCBjb250ZW50LT5ib3VuZGluZ1JlY3QoKSk7Cit9CisKKy8vIFVwZGF0aW5nIGNvbnRlbnQgcHJv
cGVydGllcyBjYXVzZSB0aGUgbm90aWZ5IHNpZ25hbHMgdG8gYmUgc2VudCBieSB0aGUgY29udGVu
dCBpdGVtIGl0c2VsZi4KKy8vIFNpbmNlIHdlIG1hbmFnZSB0aG9zZSBkaWZmZXJlbnRseSwgd2Ug
ZG8gbm90IHdhbnQgdG8gcmVzcG9uZAorLy8gdG8gdGhlbSB3aGVuIHdlIGFyZSB0aGUgb25lIGNo
YW5naW5nIHRoZSBjb250ZW50LgorLy8KKy8vIFRoZSBndWFyZCBtYWtlIHN1cmUgdGhlIHNpZ25h
bCB2aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpIGlzIHNlbnQgaWYgbmVjZXNzYXJ5LgorLy8KKy8v
IFRoZSBwdWJsaWMgbWV0aG9kcyBzaG91bGQgY3JlYXRlIHRoZSBndWFyZCBpZiB0aGV5IG1pZ2h0
IHVwZGF0ZSBjb250ZW50LgorY2xhc3MgVmlld3BvcnRVcGRhdGVHdWFyZCB7CitwdWJsaWM6Cisg
ICAgVmlld3BvcnRVcGRhdGVHdWFyZChWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKQorICAgICAgICA6IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUo
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKKyAgICAgICAgLCB3YXNVcGRhdGluZ0NvbnRlbnQo
dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCkKKyAgICAgICAg
LCBwcmV2aW91c1Bvc2l0aW9uKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+
cG9zKCkpCisgICAgICAgICwgcHJldmlvdXNTaXplKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUt
Pm1fY29udGVudC0+d2lkdGgoKSwgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50
LT5oZWlnaHQoKSkKKyAgICAgICAgLCBwcmV2aW91c1NjYWxlKHZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUtPm1fY29udGVudC0+c2NhbGUoKSkKKyAgICB7CisgICAgICAgIHZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB0cnVlOworICAgIH0KKworICAgIH5W
aWV3cG9ydFVwZGF0ZUd1YXJkKCkKKyAgICB7CisgICAgICAgIGlmICghd2FzVXBkYXRpbmdDb250
ZW50KSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbiAhPSB2aWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPnBvcygpCisgICAgICAgICAgICAgICAgICAgIHx8IHBy
ZXZpb3VzU2l6ZS53aWR0aCgpICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVu
dC0+d2lkdGgoKQorICAgICAgICAgICAgICAgICAgICB8fCBwcmV2aW91c1NpemUuaGVpZ2h0KCkg
IT0gdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50LT5oZWlnaHQoKQorICAgICAg
ICAgICAgICAgICAgICB8fCBwcmV2aW91c1NjYWxlICE9IHZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUtPm1fY29udGVudC0+c2NhbGUoKSkKKyAgICAgICAgICAgICAgICBlbWl0IHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUtPnZpZXdwb3J0VXBkYXRlUmVxdWVzdGVkKCk7CisgICAgICAgIH0KKyAg
ICAgICAgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCA9IHdh
c1VwZGF0aW5nQ29udGVudDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZSogY29uc3Qgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBjb25zdCBi
b29sIHdhc1VwZGF0aW5nQ29udGVudDsKKyAgICBjb25zdCBRUG9pbnRGIHByZXZpb3VzUG9zaXRp
b247CisgICAgY29uc3QgUVNpemVGIHByZXZpb3VzU2l6ZTsKKyAgICBjb25zdCBxcmVhbCBwcmV2
aW91c1NjYWxlOworfTsKKworVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiB2aWV3cG9ydCwgUVNHSXRlbSogY29udGVudCkK
KyAgICA6IG1fdmlld3BvcnQodmlld3BvcnQpCisgICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAg
ICAsIG1faXNVcGRhdGluZ0NvbnRlbnQoZmFsc2UpCisgICAgLCBtX3BpbmNoU3RhcnRTY2FsZSgx
LmYpCit7CisgICAgcmVzZXQoKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHhDaGFu
Z2VkKCkpLCB0aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RD
b25uZWN0aW9uKTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHlDaGFuZ2VkKCkpLCB0
aGlzLCBTTE9UKGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9u
KTsKKyAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKHdpZHRoQ2hhbmdlZCgpKSwgdGhpcywg
U0xPVChjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cisg
ICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTChoZWlnaHRDaGFuZ2VkKCkpLCB0aGlzLCBTTE9U
KGNvbnRlbnRHZW9tZXRyeUNoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyAgICBj
b25uZWN0KG1fY29udGVudCwgU0lHTkFMKHNjYWxlQ2hhbmdlZCgpKSwgdGhpcywgU0xPVChjb250
ZW50U2NhbGVDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cmVzZXQoKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3Vh
cmQgZ3VhcmQodGhpcyk7CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyA9IFVzZXJIYXNOb3RJ
bnRlcmFjdGVkV2l0aENvbnRlbnQ7CisgICAgc2V0Q29uc3RyYWludHMoQ29uc3RyYWludHMoKSk7
Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0Q29uc3RyYWludHMoY29u
c3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChtX2NvbnN0cmFpbnRzID09
IGNvbnN0cmFpbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogaWYgYSBwaW5j
aCBnZXN0dXJlIGlzIG9uZ29pbmcsIHdlIGhhdmUgdG86CisgICAgLy8gLWNhbmNlbCB0aGUgZ2Vz
dHVyZSBpZiBpc1VzZXJTY2FsYWJsZSBiZWNvbWVzIHRydWUKKyAgICAvLyAtdXBkYXRlIHRoZSBw
YWdlIG9uIHRoZSBmbHkgd2l0aG91dCBtb2RpZnlpbmcgaXRzIHBvc2l0aW9uCisKKyAgICAvLyBG
SVhNRTogaWYgYSBwYW4gZ2VzdHVyZSBpcyBvbmdvaW5nLCB3ZSBoYXZlIHRvCisgICAgLy8gLXVw
ZGF0ZSB0aGUgcGFnZSB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3NpdGlvbgorICAgIC8vIC1hbmlt
YXRlIHRoZSBwYWdlIGJhY2sgaW4gdmlld3BvcnQgaWYgbmVjZXNzYXJ5IChpZiB0aGUgcGFnZSBp
cyBmdWxseSBpbgorICAgIC8vICB2aWV3cG9ydCwgaXQgZG9lcyBub3QgcGFuIGhvcml6b250YWxs
eSBhbnltb3JlKS4KKworICAgIGNvbnN0IHFyZWFsIHByZXZpb3VzU2NhbGUgPSBtX2NvbnRlbnQt
PnNjYWxlKCk7CisgICAgeworICAgICAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMp
OworICAgICAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7CisgICAgICAgIHVwZGF0ZUNv
bnRlbnRJZk5lZWRlZCgpOworICAgIH0KKyAgICBpZiAobV9jb250ZW50LT5zY2FsZSgpICE9IHBy
ZXZpb3VzU2NhbGUpCisgICAgICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9p
ZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlU3RhcnRlZCgpCit7CisgICAg
Ly8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdpbmUgKHN0b3AgYW5pbWF0ZWQgR0lGLCBldGMp
LgorICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBoeXNpY3MgZm9yIHBhbm5pbmcgKHN0b3AgYW5p
bWF0aW9uLCBldGMpLgorICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVk
Q29udGVudDsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJl
UmVxdWVzdFVwZGF0ZShxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKK3sKKyAgICBWaWV3cG9y
dFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworCisgICAgUVBvaW50RiBpdGVtUG9zaXRpb25Jbkl0
ZW1Db29yZHMgPSBtX2NvbnRlbnQtPm1hcEZyb21JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgp
LCBtX2NvbnRlbnQtPnBvcygpKTsKKyAgICBRUG9pbnRGIGRlc3RJblZpZXdwb3J0Q29vcmRzID0g
bV92aWV3cG9ydC0+bWFwRnJvbUl0ZW0obV9jb250ZW50LCBpdGVtUG9zaXRpb25Jbkl0ZW1Db29y
ZHMgKyBRUG9pbnRGKGRlbHRhWCwgZGVsdGFZKSk7CisKKyAgICBtX2NvbnRlbnQtPnNldFBvcyhk
ZXN0SW5WaWV3cG9ydENvb3Jkcyk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGFuR2VzdHVyZUNhbmNlbGxlZCgpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFy
ZCh0aGlzKTsKKyAgICAvLyBGSVhNRTogcmVzZXQgcGh5c2ljcy4KKyAgICBwYW5HZXN0dXJlRW5k
ZWQoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5k
ZWQoKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgYW5pbWF0
ZUNvbnRlbnRQb3NpdGlvblRvQm91bmRhcmllcygpOworfQorCit2b2lkIFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKQoreworICAgIGlmICghbV9jb25zdHJh
aW50cy5pc1VzZXJTY2FsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91c2VySW50ZXJh
Y3Rpb25GbGFncyB8PSBVc2VySGFzU2NhbGVkQ29udGVudDsKKyAgICBtX3VzZXJJbnRlcmFjdGlv
bkZsYWdzIHw9IFVzZXJIYXNNb3ZlZENvbnRlbnQ7CisgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSBt
X2NvbnRlbnQtPnNjYWxlKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29u
dGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCit7CisgICAgaWYgKCFtX2Nv
bnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWV3cG9y
dFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworCisgICAgLy8gIENoYW5nZXMgb2YgdGhlIGNlbnRl
ciBwb3NpdGlvbiBzaG91bGQgbW92ZSB0aGUgcGFnZSBldmVuIGlmIHRoZSB6b29tIGZhY3Rvcgor
ICAgIC8vICBkb2VzIG5vdCBjaGFuZ2UuIEJvdGggdGhlIHpvb20gYW5kIHRoZSBwYW5uaW5nIHNo
b3VsZCBiZSBoYW5kbGVkIHRocm91Z2ggdGhlIHBoeXNpY3MgZW5naW5lLgorICAgIGNvbnN0IHFy
ZWFsIHNjYWxlID0gbV9waW5jaFN0YXJ0U2NhbGUgKiB0b3RhbFNjYWxlRmFjdG9yOworICAgIFFQ
b2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29u
dGVudC0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAg
IG1fY29udGVudC0+c2V0U2NhbGUoc2NhbGUpOworICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJP
blBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBw
aW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVudC0+c2V0UG9zKG1f
Y29udGVudC0+cG9zKCkgLSAobmV3UGluY2hDZW50ZXJPblBhcmVudCAtIG9sZFBpbmNoQ2VudGVy
T25QYXJlbnQpKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdl
c3R1cmVFbmRlZCgpCit7CisgICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQor
ICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3Vh
cmQodGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiByZXN1bWUgdGhlIGVuZ2luZSBhZnRlciB0aGUg
YW5pbWF0aW9uLgorICAgICAgICBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3VuZGFyaWVzKCk7Cisg
ICAgfQorICAgIGlmIChtX3BpbmNoU3RhcnRTY2FsZSAhPSBtX2NvbnRlbnQtPnNjYWxlKCkpCisg
ICAgICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2UoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9pc1Vw
ZGF0aW5nQ29udGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld3BvcnRVcGRhdGVHdWFy
ZCBndWFyZCh0aGlzKTsKKyAgICB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKKworICAgIC8vIFdl
IG11c3Qgbm90aWZ5IHRoZSBjaGFuZ2Ugc28gdGhlIGNsaWVudCBjYW4gcmVseSBvbiB1cyBmb3Ig
YWxsIGNoYW5nZSBvZiBHZW9tZXRyeS4KKyAgICBlbWl0IHZpZXdwb3J0VXBkYXRlUmVxdWVzdGVk
KCk7Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Y29udGVudFNjYWxlQ2hh
bmdlZCgpCit7CisgICAgaWYgKG1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgdXBkYXRlQ29udGVu
dElmTmVlZGVkKCk7CisKKyAgICAvLyBXZSBtdXN0IG5vdGlmeSB0aGUgY2hhbmdlIHNvIHRoZSBj
bGllbnQgY2FuIHJlbHkgb24gdXMgZm9yIGFsbCBjaGFuZ2Ugb2YgR2VvbWV0cnkuCisgICAgZW1p
dCB2aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpOworICAgIGVtaXQgY29tbWl0U2NhbGVDaGFuZ2Uo
KTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZO
ZWVkZWQoKQoreworICAgIHVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7CisgICAgdXBkYXRl
Q29udGVudFBvc2l0aW9uSWZOZWVkZWQoKTsKK30KKwordm9pZCBWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjp1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRlZCgpCit7CisgICAgY29uc3QgcXJlYWwg
Y3VycmVudENvbnRlbnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICBxcmVhbCBjb250
ZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgaWYgKCEobV91c2VySW50ZXJhY3Rp
b25GbGFncyAmIFVzZXJIYXNTY2FsZWRDb250ZW50KSkKKyAgICAgICAgY29udGVudFNjYWxlID0g
bV9jb25zdHJhaW50cy5pbml0aWFsU2NhbGU7CisKKyAgICBjb250ZW50U2NhbGUgPSBxQm91bmQo
bV9jb25zdHJhaW50cy5taW5pbXVtU2NhbGUsIGNvbnRlbnRTY2FsZSwgbV9jb25zdHJhaW50cy5t
YXhpbXVtU2NhbGUpOworCisgICAgaWYgKGNvbnRlbnRTY2FsZSAhPSBjdXJyZW50Q29udGVudFNj
YWxlKSB7CisgICAgICAgIGNvbnN0IFFQb2ludEYgY2VudGVyT2ZJbnRlcmVzdCA9IHZpc2libGVS
ZWN0SW5Db250ZW50Q29vcmRpbmF0ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLmNlbnRlcigpOwor
ICAgICAgICBzY2FsZUNvbnRlbnQoY2VudGVyT2ZJbnRlcmVzdCwgY29udGVudFNjYWxlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudFBv
c2l0aW9uSWZOZWVkZWQoKQoreworICAgIGlmICghKG1fdXNlckludGVyYWN0aW9uRmxhZ3MgJiBV
c2VySGFzTW92ZWRDb250ZW50KSkgeworICAgICAgICBtX2NvbnRlbnQtPnNldFgoKG1fdmlld3Bv
cnQtPndpZHRoKCkgLSBjb250ZW50UmVjdEluVmlld3BvcnRDb29yZGluYXRlKG1fY29udGVudCwg
bV92aWV3cG9ydCkud2lkdGgoKSkgLyAyKTsKKyAgICAgICAgbV9jb250ZW50LT5zZXRZKDApOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBpZiB0aGUgaXRlbSBjYW4gYmUgZnVsbHkgaW4gdGhlIHZp
ZXdwb3J0IGFuZCBpcyBvdmVyIGEgc2lkZSwgcHVzaCBpdCBiYWNrIGluIHZpZXcKKyAgICAvLyBG
SVhNRTogaWYgdGhlIGl0ZW0gY2Fubm90IGJlIGZ1bGx5IGluIHZpZXdwb3J0LCBhbmQgaXMgbm90
IGNvdmVyaW5nIHRoZSB2aWV3cG9ydCwgcHVzaCBpdCBiYWNrIGluIHZpZXcKK30KKwordm9pZCBW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFBvc2l0aW9uVG9Cb3VuZGFy
aWVzKCkKK3sKKyAgICBjb25zdCBRUmVjdEYgY29udGVudEdlb21ldHJ5ID0gbV92aWV3cG9ydC0+
bWFwUmVjdEZyb21JdGVtKG1fY29udGVudCwgbV9jb250ZW50LT5ib3VuZGluZ1JlY3QoKSk7Cisg
ICAgUVBvaW50RiBuZXdQb3MgPSBjb250ZW50R2VvbWV0cnkudG9wTGVmdCgpOworCisgICAgLy8g
SG9yaXpvbnRhbCBjb3JyZWN0aW9uLgorICAgIGlmIChjb250ZW50R2VvbWV0cnkud2lkdGgoKSA8
IG1fdmlld3BvcnQtPndpZHRoKCkpCisgICAgICAgIG5ld1Bvcy5zZXRYKChtX3ZpZXdwb3J0LT53
aWR0aCgpIC0gY29udGVudEdlb21ldHJ5LndpZHRoKCkpIC8gMik7CisgICAgZWxzZSB7CisgICAg
ICAgIG5ld1Bvcy5zZXRYKHFNaW4oMC4sIG5ld1Bvcy54KCkpKTsKKyAgICAgICAgY29uc3QgcXJl
YWwgcmlnaHRTaWRlR2FwID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCkucmlnaHQoKSAtIGNv
bnRlbnRHZW9tZXRyeS5yaWdodCgpOworICAgICAgICBpZiAocmlnaHRTaWRlR2FwID4gMC4pCisg
ICAgICAgICAgICBuZXdQb3Muc2V0WChuZXdQb3MueCgpICsgcmlnaHRTaWRlR2FwKTsKKyAgICB9
CisKKyAgICAvLyBWZXJ0aWNhbCBjb3JyZWN0aW9uLgorICAgIGlmIChjb250ZW50R2VvbWV0cnku
aGVpZ2h0KCkgPCBtX3ZpZXdwb3J0LT5oZWlnaHQoKSkKKyAgICAgICAgbmV3UG9zLnNldFkoMCk7
CisgICAgZWxzZSB7CisgICAgICAgIG5ld1Bvcy5zZXRZKHFNaW4oMC4sIG5ld1Bvcy55KCkpKTsK
KyAgICAgICAgY29uc3QgcXJlYWwgYm90dG9tU2lkZUdhcCA9IG1fdmlld3BvcnQtPmJvdW5kaW5n
UmVjdCgpLmJvdHRvbSgpIC0gY29udGVudEdlb21ldHJ5LmJvdHRvbSgpOworICAgICAgICBpZiAo
Ym90dG9tU2lkZUdhcCA+IDAuKQorICAgICAgICAgICAgbmV3UG9zLnNldFkobmV3UG9zLnkoKSAr
IGJvdHRvbVNpZGVHYXApOworICAgIH0KKworICAgIGlmIChuZXdQb3MgIT0gbV9jb250ZW50LT5w
b3MoKSkKKyAgICAgICAgLy8gRklYTUU6IERvIHlvdSBrbm93IHdoYXQgQU5JTUFURSBtZWFucz8K
KyAgICAgICAgbV9jb250ZW50LT5zZXRQb3MobmV3UG9zKTsKK30KKwordm9pZCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFNjYWxlVG9Cb3VuZGFyaWVzKCkKK3sKKyAg
ICBjb25zdCBxcmVhbCBjdXJyZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgY29u
c3QgcXJlYWwgYm91bmRlZFNjYWxlID0gcUJvdW5kKG1fY29uc3RyYWludHMubWluaW11bVNjYWxl
LCBjdXJyZW50U2NhbGUsIG1fY29uc3RyYWludHMubWF4aW11bVNjYWxlKTsKKyAgICBpZiAoY3Vy
cmVudFNjYWxlICE9IGJvdW5kZWRTY2FsZSkgeworICAgICAgICAvLyBGSVhNRTogRG8geW91IGtu
b3cgd2hhdCBBTklNQVRFIG1lYW5zPworICAgICAgICBjb25zdCBRUG9pbnRGIGNlbnRlck9mSW50
ZXJlc3QgPSB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUobV9jb250ZW50LCBtX3ZpZXdw
b3J0KS5jZW50ZXIoKTsKKyAgICAgICAgc2NhbGVDb250ZW50KGNlbnRlck9mSW50ZXJlc3QsIGJv
dW5kZWRTY2FsZSk7CisgICAgfQorfQorCit2b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlLCBx
cmVhbCBzY2FsZSkKK3sKKyAgICBRUG9pbnRGIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2Nv
bnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgY2VudGVySW5Db250ZW50
Q29vcmRpbmF0ZSk7CisgICAgbV9jb250ZW50LT5zZXRTY2FsZShzY2FsZSk7CisgICAgUVBvaW50
RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50
LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVu
dC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3UGluY2hDZW50ZXJPblBhcmVudCAtIG9s
ZFBpbmNoQ2VudGVyT25QYXJlbnQpKTsKK30KKworI2luY2x1ZGUgIm1vY19WaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lLmNwcCIKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdlMzg2NTQ3
ZjRhNThmNmVlOGQ5Njk4Mzc4YzA2ZTIzOWE0Mzc5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKQEAgLTAs
MCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQmVuamFtaW4gUG91bGFpbiA8
YmVuamFtaW5Ad2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZV9oCisjZGVmaW5lIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmVfaAorCisjaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgorCitRVF9CRUdJTl9OQU1F
U1BBQ0UKK2NsYXNzIFFQb2ludEY7CitjbGFzcyBRU0dJdGVtOworUVRfRU5EX05BTUVTUEFDRQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSA6
IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgVmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiwgUVNHSXRlbSopOworCisgICAgc3RydWN0
IENvbnN0cmFpbnRzIHsKKyAgICAgICAgQ29uc3RyYWludHMoKQorICAgICAgICAgICAgOiBpbml0
aWFsU2NhbGUoMS4wKQorICAgICAgICAgICAgLCBtaW5pbXVtU2NhbGUoMC4yNSkKKyAgICAgICAg
ICAgICwgbWF4aW11bVNjYWxlKDEuOCkKKyAgICAgICAgICAgICwgaXNVc2VyU2NhbGFibGUodHJ1
ZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgcXJlYWwgaW5pdGlhbFNjYWxlOworICAgICAgICBx
cmVhbCBtaW5pbXVtU2NhbGU7CisgICAgICAgIHFyZWFsIG1heGltdW1TY2FsZTsKKyAgICAgICAg
Ym9vbCBpc1VzZXJTY2FsYWJsZTsKKyAgICB9OworCisgICAgdm9pZCByZXNldCgpOworICAgIHZv
aWQgc2V0Q29uc3RyYWludHMoY29uc3QgQ29uc3RyYWludHMmKTsKKworICAgIHZvaWQgcGFuR2Vz
dHVyZVN0YXJ0ZWQoKTsKKyAgICB2b2lkIHBhbkdlc3R1cmVSZXF1ZXN0VXBkYXRlKHFyZWFsIGRl
bHRhWCwgcXJlYWwgZGVsdGFZKTsKKyAgICB2b2lkIHBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKKyAg
ICB2b2lkIHBhbkdlc3R1cmVFbmRlZCgpOworCisgICAgdm9pZCBwaW5jaEdlc3R1cmVTdGFydGVk
KCk7CisgICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBp
bmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZhY3Rvcik7Cisg
ICAgdm9pZCBwaW5jaEdlc3R1cmVFbmRlZCgpOworCitRX1NJR05BTFM6CisgICAgdm9pZCB2aWV3
cG9ydFVwZGF0ZVJlcXVlc3RlZCgpOworCisgICAgdm9pZCBjb21taXRTY2FsZUNoYW5nZSgpOwor
Citwcml2YXRlIFFfU0xPVFM6CisgICAgLy8gUmVzcG9uZCB0byBjaGFuZ2VzIG9mIGNvbnRlbnQg
dGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywgbGlrZSB0aGUgcGFnZSByZXNpemluZyBpdHNlbGYu
CisgICAgdm9pZCBjb250ZW50R2VvbWV0cnlDaGFuZ2VkKCk7CisgICAgdm9pZCBjb250ZW50U2Nh
bGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVDb250ZW50SWZOZWVkZWQo
KTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7CisgICAgdm9pZCB1cGRh
dGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCgpOworCisgICAgdm9pZCBhbmltYXRlQ29udGVudFBv
c2l0aW9uVG9Cb3VuZGFyaWVzKCk7CisgICAgdm9pZCBhbmltYXRlQ29udGVudFNjYWxlVG9Cb3Vu
ZGFyaWVzKCk7CisKKyAgICB2b2lkIHNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJ
bkNvbnRlbnRDb29yZGluYXRlLCBxcmVhbCBzY2FsZSk7CisKKyAgICBmcmllbmQgY2xhc3MgVmll
d3BvcnRVcGRhdGVHdWFyZDsKKworICAgIGNvbnN0IFFTR0l0ZW0qIGNvbnN0IG1fdmlld3BvcnQ7
CisgICAgUVNHSXRlbSogY29uc3QgbV9jb250ZW50OworCisgICAgQ29uc3RyYWludHMgbV9jb25z
dHJhaW50czsKKyAgICBib29sIG1faXNVcGRhdGluZ0NvbnRlbnQ7CisgICAgZW51bSBVc2VySW50
ZXJhY3Rpb25GbGFnIHsKKyAgICAgICAgVXNlckhhc05vdEludGVyYWN0ZWRXaXRoQ29udGVudCA9
IDAsCisgICAgICAgIFVzZXJIYXNNb3ZlZENvbnRlbnQgPSAxLAorICAgICAgICBVc2VySGFzU2Nh
bGVkQ29udGVudCA9IDIKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhVc2VySW50ZXJhY3Rp
b25GbGFncywgVXNlckludGVyYWN0aW9uRmxhZyk7CisgICAgVXNlckludGVyYWN0aW9uRmxhZ3Mg
bV91c2VySW50ZXJhY3Rpb25GbGFnczsKKworICAgIHFyZWFsIG1fcGluY2hTdGFydFNjYWxlOwor
fTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lOjpDb25zdHJhaW50cyYgYSwgY29uc3QgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6Q29u
c3RyYWludHMmIGIpCit7CisgICAgcmV0dXJuIGEuaW5pdGlhbFNjYWxlID09IGIuaW5pdGlhbFNj
YWxlCisgICAgICAgICAgICAmJiBhLm1pbmltdW1TY2FsZSA9PSBiLm1pbmltdW1TY2FsZQorICAg
ICAgICAgICAgJiYgYS5tYXhpbXVtU2NhbGUgPT0gYi5tYXhpbXVtU2NhbGUKKyAgICAgICAgICAg
ICYmIGEuaXNVc2VyU2NhbGFibGUgPT0gYi5pc1VzZXJTY2FsYWJsZTsKK30KKworfQorCisjZW5k
aWYgLyogVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwCmluZGV4IDk4MmNiNDBmYzlk
N2FjY2UwYWQzZGZkOWJlZmNmMzA2NzE5MDVjZmEuLmEyMWNjYmYwN2JlMWU0NDE1ODY5YTc0NTNm
NGE5ZTExNTlmMTFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
dG91Y2h3ZWJwYWdlcHJveHkuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVFUb3VjaFdlYlBhZ2VQcm94eTo6UVRvdWNoV2ViUGFnZVByb3h5KFRv
dWNoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgUVdLQ29udGV4dCogY29udGV4dCwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQ
YWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLCBRV0tDb250ZXh0KiBjb250
ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBRdFdlYlBhZ2VQcm94eSh2
aWV3SW50ZXJmYWNlLCBjb250ZXh0LCBwYWdlR3JvdXBSZWYpCi0gICAgLCBtX3Bhbkdlc3R1cmVS
ZWNvZ25pemVyKHZpZXdJbnRlcmZhY2UpCi0gICAgLCBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIo
dmlld0ludGVyZmFjZSkKKyAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIodmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSkKKyAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKQogewogICAgIGluaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuaAppbmRleCA3OWViMGU2NmRlZGJjMjVj
YTI2YWJhZGM5NzM0M2IwMjdlYmEyNTdmLi5kYTViMjcxMDI3NjM1NjU2YjQ1ZjVhYzE3M2RkMjNl
NTNmNWZiOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNo
d2VicGFnZXByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdl
YnBhZ2Vwcm94eS5oCkBAIC0zMCwxMiArMzAsMTYgQEAKICNpbmNsdWRlICJUb3VjaFZpZXdJbnRl
cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU7Cit9CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBhZ2VQ
cm94eQogewogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJbnRlcmZh
Y2UqLCBRV0tDb250ZXh0KiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBRVG91Y2hXZWJQYWdl
UHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiwgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSosIFFX
S0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZUV2ZW50KFFFdmVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDQ0ZWJiNjljZGMyZGRkMjVhYTEy
NTgzYWJkYjk1ZGYxMTM4YzYyNzQuLjVjYzIwNTBiZGFmMjQ2ZjZjZTI5MGQ0Y2UwOTYyZjI5Y2U0
M2M0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yNTIsNiArMjUyLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL3F0L1NHQWdlbnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUu
aCBcCiAgICAgVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBcCisgICAgVUlQcm9jZXNzL3F0
L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9D
b21tYW5kUXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwK
ICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oIFwKQEAgLTQ4Myw2ICs0ODQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5
UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVRpbGVRdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9UZXh0Q2hlY2tlclF0LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1Zp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29udGV4
dE1lbnVQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcCBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>