<?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>107424</bug_id>
          
          <creation_ts>2013-01-21 00:10:08 -0800</creation_ts>
          <short_desc>Make page scale shrink FrameView in applyPageScaleInCompositor mode</short_desc>
          <delta_ts>2013-03-06 00:09:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111532</blocked>
    
    <blocked>105978</blocked>
    
    <blocked>107391</blocked>
    
    <blocked>108561</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>fmalita</cc>
    
    <cc>ilevy</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>leviw</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tdanderson</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>trchen</cc>
    
    <cc>wangxianzhu</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811887</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-21 00:10:08 -0800</bug_when>
    <thetext>Make page scale shrink FrameView in applyPageScaleInCompositor mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811897</commentid>
    <comment_count>1</comment_count>
      <attachid>183725</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-21 00:19:49 -0800</bug_when>
    <thetext>Created attachment 183725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812733</commentid>
    <comment_count>2</comment_count>
      <attachid>183725</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-22 00:48:15 -0800</bug_when>
    <thetext>Comment on attachment 183725
Patch

Hi, this patch improves the functionality of pageScaleFactor when the setting applyPageScaleInCompositor is true.  This is a setting we introduced for Chromium in http://trac.webkit.org/changeset/130321 that disables the document-level CSS scale transform associated with pageScaleFactor and makes frameScaleFactor() always return 1 (since that function is generally used to cancel the effect of the scale transform).  The CSS transform has proven to be a source of complexity and bugs for us so we prefer to have our compositor manage scaling.  However, this setting will be even more useful if the FrameView understands that the viewport size shrinks in response to scale and can therefore scroll normally, thus this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812736</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 00:52:10 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812809</commentid>
    <comment_count>4</comment_count>
      <attachid>183725</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-22 02:00:52 -0800</bug_when>
    <thetext>Comment on attachment 183725
Patch

Attachment 183725 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16010890

New failing tests:
compositing/iframes/scrolling-iframe.html
compositing/iframes/connect-compositing-iframe.html
compositing/iframes/overlapped-iframe.html
compositing/iframes/enter-compositing-iframe.html
compositing/iframes/become-overlapped-iframe.html
compositing/visible-rect/iframe-and-layers.html
compositing/iframes/composited-parent-iframe.html
compositing/iframes/invisible-nested-iframe-show.html
compositing/iframes/connect-compositing-iframe-delayed.html
compositing/iframes/page-cache-layer-tree.html
compositing/iframes/resizer.html
compositing/iframes/connect-compositing-iframe2.html
compositing/iframes/iframe-resize.html
compositing/iframes/connect-compositing-iframe3.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813077</commentid>
    <comment_count>5</comment_count>
      <attachid>183725</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2013-01-22 09:09:03 -0800</bug_when>
    <thetext>Comment on attachment 183725
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2815
&gt; +    if (!m_frame-&gt;settings()-&gt;applyPageScaleFactorInCompositor() || m_frame != m_frame-&gt;page()-&gt;mainFrame())

Will we ever have a frame that&apos;s not a main frame that sets scale in the compositor? Perhaps a comment here would explain that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813225</commentid>
    <comment_count>6</comment_count>
      <attachid>183725</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-22 11:06:33 -0800</bug_when>
    <thetext>Comment on attachment 183725
Patch

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

&gt; Source/WebCore/platform/ScrollView.h:155
&gt; +    IntSize unscaledContentSize(bool includeScrollbars) const;
&gt; +    virtual float visibleContentScaleFactor() const { return 1; }

You need some comments here to say how these are different from the existing, related methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813380</commentid>
    <comment_count>7</comment_count>
      <attachid>184043</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-22 13:43:23 -0800</bug_when>
    <thetext>Created attachment 184043
Patch

Rename to unscaledVisibleContentSize and add comment; fix HistoryController with our setting; ceil instead of flooring the scaled size; make unscaledVisibleContentSize consider platformVisibleContentRect and fixedVisibleContentRect special cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816363</commentid>
    <comment_count>8</comment_count>
      <attachid>184693</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-25 01:11:16 -0800</bug_when>
    <thetext>Created attachment 184693
Patch

Add tests; fix layoutSize() in non-fixed-layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816480</commentid>
    <comment_count>9</comment_count>
      <attachid>184693</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 04:37:12 -0800</bug_when>
    <thetext>Comment on attachment 184693
Patch

Attachment 184693 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16111524

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816663</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-25 09:40:45 -0800</bug_when>
    <thetext>Who is the right person to review this change?  I could potentially review the parts in  WebKit/chromium/src, but I&apos;m not sure I understand the changes to WebCore in enough detail to review them well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817022</commentid>
    <comment_count>11</comment_count>
      <attachid>184836</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-25 16:20:21 -0800</bug_when>
    <thetext>Created attachment 184836
Patch

Rebase to 140872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817032</commentid>
    <comment_count>12</comment_count>
      <attachid>184836</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-25 16:34:36 -0800</bug_when>
    <thetext>Comment on attachment 184836
Patch

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

&gt; Source/WebCore/loader/HistoryController.cpp:92
&gt; +    Page* page = m_frame-&gt;page();
&gt; +    if (page &amp;&amp; page-&gt;mainFrame() == m_frame)
&gt; +        item-&gt;setPageScaleFactor(page-&gt;pageScaleFactor());

Your change log says &quot;Since all behavior changes are tied to applyPageScaleFactorInCompositor&quot;, but that doesn&apos;t seem to be the case here. Is this a bug fix? Can it be tested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817038</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-25 16:39:42 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 184836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184836&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/HistoryController.cpp:92
&gt; &gt; +    Page* page = m_frame-&gt;page();
&gt; &gt; +    if (page &amp;&amp; page-&gt;mainFrame() == m_frame)
&gt; &gt; +        item-&gt;setPageScaleFactor(page-&gt;pageScaleFactor());
&gt; 
&gt; Your change log says &quot;Since all behavior changes are tied to applyPageScaleFactorInCompositor&quot;, but that doesn&apos;t seem to be the case here. Is this a bug fix? Can it be tested?

This is a fix specific to applyPageScaleFactorInCompositor, as frameScaleFactor() on the main frame returns pageScaleFactor() when that setting is false and 1 when the setting is true (and subframe values are ignored at read time).  I have a test for it in WebFrameTest::pageScaleFactorWrittenToHistoryItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817864</commentid>
    <comment_count>14</comment_count>
      <attachid>185005</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-28 10:41:25 -0800</bug_when>
    <thetext>Created attachment 185005
Patch

Rebase to 140978</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818033</commentid>
    <comment_count>15</comment_count>
      <attachid>185005</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-28 13:17:18 -0800</bug_when>
    <thetext>Comment on attachment 185005
Patch

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        New unit tests in WebFrameTest.cpp.

I&apos;m a little worried about this. Do the Chromium EWS bots run these tests? If not, it&apos;ll be easy for other ports to break this and have it not caught until its downstream.

&gt; Source/WebKit/chromium/ChangeLog:40
&gt; +        (WebKit::WebViewImpl::scaledSize):
&gt; +        (WebKit::WebViewImpl::size):
&gt; +        (WebKit::WebViewImpl::resize):
&gt; +        (WebKit::WebViewImpl::handleInputEvent):
&gt; +        (WebKit::WebViewImpl::clampOffsetAtScale):
&gt; +        (WebKit::WebViewImpl::setPageScaleFactorPreservingScrollOffset):
&gt; +        (WebKit::WebViewImpl::setPageScaleFactor):
&gt; +        (WebKit::WebViewImpl::unscaledContentsSize):
&gt; +        (WebKit::WebViewImpl::layoutSize):
&gt; +        (WebKit::WebViewImpl::computePageScaleFactorLimits):
&gt; +        (WebKit::WebViewImpl::didChangeContentsSize):
&gt; +        (WebKit::WebViewImpl::updateLayerTreeViewport):

It&apos;d be great to get a sentence or two describing what&apos;s getting changed here to make it easier to review this. I&apos;m not the most familiar with WebViewImpl code. It couldn&apos;t hurt for the WebCore changes either.

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:106
&gt; +    // FIXME: remove this after WebKit roll
&gt; +    virtual WebFloatPoint adjustEventPointForPinchZoom(const WebFloatPoint&amp; p) const { return p; }

You may want to file a bug to make sure this gets tracked.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3063
&gt; +    if (!m_page-&gt;settings()-&gt;applyPageScaleFactorInCompositor())
&gt; +        return root-&gt;unscaledDocumentRect().size();
&gt; +    return root-&gt;documentRect().size();

If we&apos;re using applyPageScaleFactorInCompositor, this code seems a little confusing. Will documentRect == unscaledDocumentRect? If so, can we ASSERT that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818076</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-28 14:03:43 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 185005 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185005&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; +        New unit tests in WebFrameTest.cpp.
&gt; 
&gt; I&apos;m a little worried about this. Do the Chromium EWS bots run these tests? If not, it&apos;ll be easy for other ports to break this and have it not caught until its downstream.

Thanks to jamesr, the EWS does run these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818112</commentid>
    <comment_count>17</comment_count>
      <attachid>185064</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-28 14:32:32 -0800</bug_when>
    <thetext>Created attachment 185064
Patch

Added detailed ChangeLogs; simplified unscaledContentsSize and rename to contentsSize()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818187</commentid>
    <comment_count>18</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-28 15:30:34 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 185005 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185005&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; &gt; +        New unit tests in WebFrameTest.cpp.
&gt; &gt; 
&gt; &gt; I&apos;m a little worried about this. Do the Chromium EWS bots run these tests? If not, it&apos;ll be easy for other ports to break this and have it not caught until its downstream.
&gt; 
&gt; Thanks to jamesr, the EWS does run these tests.

Super awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818200</commentid>
    <comment_count>19</comment_count>
      <attachid>185064</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-28 15:41:25 -0800</bug_when>
    <thetext>Comment on attachment 185064
Patch

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

Okay. This looks good to me.

&gt; Source/WebCore/ChangeLog:31
&gt; +        (WebCore::HistoryController::saveScrollPositionAndViewStateToItem): Use pageScaleFactor here because frameScaleFactor always returns 1 with our setting.

Nit: consistent line wrapping.

&gt; Source/WebCore/ChangeLog:53
&gt; +        (WebCore::RenderLayerCompositor::updateRootLayerPosition): Clip layer should use unscaled size.
&gt; +        * rendering/TextAutosizer.cpp:
&gt; +        (WebCore::TextAutosizer::processSubtree): Text autosizer should use unscaled size.

Saying &quot;why&quot; would be nice, though I understand these cases.

&gt; Source/WebKit/chromium/ChangeLog:40
&gt; +        (WebKit::WebViewImpl::scaledSize): Returns the post page-scale size similar to what visibleContentRect() now returns, except that it may be at a different scale than the current one.
&gt; +        (WebKit::WebViewImpl::size): Back to returning density-independent size without any tricks, not the &quot;layoutSize()&quot; fake viewport.
&gt; +        (WebKit::WebViewImpl::resize):
&gt; +        (WebKit::WebViewImpl::handleInputEvent): No need to apply implTransform anymore as WebKit knows the true scroll offset; just divide event coords by pageScaleFactor.
&gt; +        (WebKit::WebViewImpl::clampOffsetAtScale): Make this method support applyPageScaleFactorInCompositor.  This is used to pre-clamp scroll offsets at a given viewport size.
&gt; +        (WebKit::WebViewImpl::setPageScaleFactorPreservingScrollOffset): Make this method support applyPageScaleFactorInCompositor (don&apos;t scale scroll offsets as they are now scale-independent).
&gt; +        (WebKit::WebViewImpl::setPageScaleFactor): Make this method always use clampOffsetAtScale instead of bypassing it, since it&apos;s now supported.  Also notify the compositor to update its state.
&gt; +        (WebKit::WebViewImpl::contentsSize): Convenience method, removed difference between scaled and unscaled.
&gt; +        (WebKit::WebViewImpl::layoutSize): This method returned the &quot;fake&quot; size we used to give FrameView.  Now no longer used for much.
&gt; +        (WebKit::WebViewImpl::computePageScaleFactorLimits):
&gt; +        (WebKit::WebViewImpl::didChangeContentsSize): Remove unnecessary resize() now that we can give the true size to FrameView.
&gt; +        (WebKit::WebViewImpl::updateLayerTreeViewport): Use layoutSize() directly now that FrameView no longer uses it.

Thanks! This makes it a lot easier to follow. nit: super long lines.

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:106
&gt; +    // FIXME: remove this after WebKit roll
&gt; +    virtual WebFloatPoint adjustEventPointForPinchZoom(const WebFloatPoint&amp; p) const { return p; }

Make sure we get this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818262</commentid>
    <comment_count>20</comment_count>
      <attachid>185103</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-28 16:43:42 -0800</bug_when>
    <thetext>Created attachment 185103
Patch

Fix Changelogs; Fix DivAutoZoomScaleFontScaleFactorTestCompositorScaling not to use &gt;1 minimum scale</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818266</commentid>
    <comment_count>21</comment_count>
      <attachid>185103</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-28 16:49:06 -0800</bug_when>
    <thetext>Comment on attachment 185103
Patch

I take it back, these are still really long :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818274</commentid>
    <comment_count>22</comment_count>
      <attachid>185107</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-28 16:54:26 -0800</bug_when>
    <thetext>Created attachment 185107
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818275</commentid>
    <comment_count>23</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-28 16:55:35 -0800</bug_when>
    <thetext>Done.  Sorry, I git stashed those ChangeLog fixes accidentally in my last upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818527</commentid>
    <comment_count>24</comment_count>
      <attachid>185107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 22:20:42 -0800</bug_when>
    <thetext>Comment on attachment 185107
Patch for landing

Clearing flags on attachment: 185107

Committed r141053: &lt;http://trac.webkit.org/changeset/141053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818528</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 22:20:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818974</commentid>
    <comment_count>26</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-01-29 08:34:56 -0800</bug_when>
    <thetext>This is causing webkit_unit_tests failures on the Android canary bots: http://build.chromium.org/p/chromium.webkit/builders/Android%20Tests%20%28dbg%29/builds/5935/steps/webkit_unit_tests/logs/stdio

CRITICAL:root:Failed:
CRITICAL:root:WebFrameTest.pageScaleFactorShrinksViewport
CRITICAL:root:third_party/WebKit/Source/WebKit/chromium/tests/WebFrameTest.cpp:384: Failure
Value of: unscaledSizeMinusScrollbar.width()
  Actual: 640
Expected: viewportWidthMinusScrollbar
Which is: 625
third_party/WebKit/Source/WebKit/chromium/tests/WebFrameTest.cpp:385: Failure
Value of: unscaledSizeMinusScrollbar.height()
  Actual: 480
Expected: viewportHeightMinusScrollbar
Which is: 465
third_party/WebKit/Source/WebKit/chromium/tests/WebFrameTest.cpp:388: Failure
Value of: scaledSize.width()
  Actual: 320
Expected: ceil(viewportWidthMinusScrollbar / 2.0)
Which is: 313
third_party/WebKit/Source/WebKit/chromium/tests/WebFrameTest.cpp:389: Failure
Value of: scaledSize.height()
  Actual: 240
Expected: ceil(viewportHeightMinusScrollbar / 2.0)
Which is: 233


Please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819003</commentid>
    <comment_count>27</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-29 09:13:37 -0800</bug_when>
    <thetext>Thanks, I&apos;ll investigate.  Let&apos;s not revert over that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819056</commentid>
    <comment_count>28</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-01-29 10:11:44 -0800</bug_when>
    <thetext>Also: http://build.chromium.org/p/chromium.webkit/builders/Android%20Tests%20%28dbg%29/builds/5935/steps/contentshell_instrumentation_tests/logs/stdio

CRITICAL:root:Failed:
CRITICAL:root:org.chromium.content.browser.ViewportTest#testDefaultViewportSize
CRITICAL:root:junit.framework.AssertionFailedError
	at org.chromium.content.browser.ViewportTest.testDefaultViewportSize(ViewportTest.java:66)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
	at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
	at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
	at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
	at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
	at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:545)
	at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)
CRITICAL:root:********************************************************************************</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820576</commentid>
    <comment_count>29</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 14:31:18 -0800</bug_when>
    <thetext>Hi Alexandre, it is a great work.

Now EFL and QT use applyPageScaleInCompositor. See Bug 105978
I&apos;ll ask you something frequently :)
Good luck!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820834</commentid>
    <comment_count>30</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-01-30 17:05:08 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Hi Alexandre, it is a great work.
&gt; 
&gt; Now EFL and QT use applyPageScaleInCompositor. See Bug 105978
&gt; I&apos;ll ask you something frequently :)
&gt; Good luck!

Already?  Nice :).

If you need to make any further patches that change WebCore scaling behavior when the setting is enabled, please cc me on them.  Hopefully those would be fixing bugs affecting both platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820989</commentid>
    <comment_count>31</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 19:34:00 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; Already?  Nice :).
&gt; 
&gt; If you need to make any further patches that change WebCore scaling behavior when the setting is enabled, please cc me on them.  Hopefully those would be fixing bugs affecting both platforms.

Sure, I&apos;ll cc you and Levi.

When I implemented Bug 105978, I thought recalcStyle and layout is not necessary, so I filed Bug 107361.
You resolved it. great! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825055</commentid>
    <comment_count>32</comment_count>
      <attachid>185107</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-04 20:12:35 -0800</bug_when>
    <thetext>Comment on attachment 185107
Patch for landing

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1172
&gt; +        m_clipLayer-&gt;setSize(frameView-&gt;unscaledVisibleContentSize(false /* exclude scrollbars */));

Hi!
Could you please explain why clip-layer size is exception?
In my understand, we should clip the size of viewport, and from the view of m_clipLayer, the size of viewport is frameView-&gt;visibleContentRect().

For instance, let assume the following case,
contentsSize (100, 200)
deviceViewport (100, 100)
pageScaleFactor 2

And then
frameView-&gt;visibleContentRect : (50, 50)
frameView-&gt;unscaledVisibleContentSize : (100, 100)

In this case, clipping with (50, 50) is enough because we finally draw (50, 50), not (100, 100).


In addition, Qt and EFL use m_fixedVisibleContentRect in ScrollView. It means visibleContentRect() and unscaledVisibleContentSize() return the same value : shrinked viewport.
It is why I ask. This is the only case that Qt and EFL use unscaledVisibleContentSize(). (Qt and EFL use fixed-layout mode)

BTW, I agree that in non-fixed-layout mode, we should use unscaledVisibleContentSize() for getting layout rect to avoid frequent layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825068</commentid>
    <comment_count>33</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-04 20:24:07 -0800</bug_when>
    <thetext>Hi Huang,

The reason is that in Chromium, pageScaleFactor is applied on the root scroll layer.  (This is the same place pageScaleFactor is applied by WebCore when applyPageScaleFactorInCompositor == false).  The clip layer is the parent of the root scroll layer, therefore it needs to be in physical pixels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825111</commentid>
    <comment_count>34</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-04 21:26:05 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Hi Huang,
&gt; 
&gt; The reason is that in Chromium, pageScaleFactor is applied on the root scroll layer.  (This is the same place pageScaleFactor is applied by WebCore when applyPageScaleFactorInCompositor == false).  The clip layer is the parent of the root scroll layer, therefore it needs to be in physical pixels.

Thank you for explanation! However, I don&apos;t fully understand yet.

We always call GraphicsLayer::setSize() with the size in the css units.
For example, let&apos;s consider that &lt;div width=&apos;100&apos; height=&apos;50&apos; /&gt;.
we always call GraphicsLayer::setSize(IntSize(100, 50)) regardless of page scale factor and device scale factor.

However, chromium calls setSize() of the clip layer with the size in physical pixel unit, right?
If so, I think it is a bit confused, and we need some refactoring...

btw, I think ScrollView::visibleContentRect() is enough for the clip layer on EFL and Qt, because compositor of EFL and Qt will draw contents with the effective scale ( = page scale X device scale).
Do you think am I right? (even though already ScrollView::visibleContentRect() is the same to ScrollView::unscaledVisibleContentSize() on EFL and Qt.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183725</attachid>
            <date>2013-01-21 00:19:49 -0800</date>
            <delta_ts>2013-01-22 13:43:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130121001645.patch</filename>
            <type>text/plain</type>
            <size>25950</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNTE4M2ZkNTk5MjFh
ZWE4OGI5MzFhMjkzZjg1ZDhlNDZjZjBhYTUxLi5kMDc1YjgyMzQyYjUzYjBiYzAwOGEwYjViMWIw
MWY1YTBhYTlhOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMS0yMSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0
dGluZyksCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcg
YXMgdGhlIHVzZXIgcGluY2ggem9vbXMsIHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGlu
c3RlYWQuIFRoaXMgcGF0Y2ggYXBwbGllcyB0aGUgcGFnZSBzY2FsZSB0bworICAgICAgICB2aXNp
YmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlmaWVkIENocm9t
aXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0cnVlIHZpZXdw
b3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgd2VudCB0aHJvdWdoIGFsbCB0aGUg
Y2FsbGVycyBvZiB2aXNpYmxlQ29udGVudFJlY3QgYW5kIHZlcmlmaWVkIHRoYXQKKyAgICAgICAg
dGhpcyBzY2FsaW5nIG1ha2VzIHNlbnNlIGZvciB0aGVtLiBUaGUgZXhjZXB0aW9ucyBhcmUgY2xp
cC1sYXllciBzaXppbmcKKyAgICAgICAgYW5kIHRleHQgYXV0b3NpemluZywgd2hpY2ggbmVlZCB0
aGUgb3JpZ2luYWwgdW5zY2FsZWQgc2l6ZS4gVGhlcmVmb3JlCisgICAgICAgIEkgYWRkZWQgYSBu
ZXcgbWV0aG9kIHVuc2NhbGVkQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4K
KworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAg
IChXZWJMYXllclRyZWVWaWV3KToKKwogMjAxMy0wMS0xOCAgQWxpIEp1bWEgIDxhanVtYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlRyYW5zZm9ybU9wZXJh
dGlvbnMgaW50byBwdXJlIHZpcnR1YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTVkYWU2NzAxOTJjOGFhOTMw
MThiMDU0ZTBkYjAzNTAwNzU1NGQzLi42N2VjN2I3OGY3MDYxN2U1MjNjOTRlOWRiNmE3NWM5MTQw
MzdhOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMtMDEtMjEgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBwYWdlIHNjYWxl
IHNocmluayBGcmFtZVZpZXcgaW4gYXBwbHlQYWdlU2NhbGVJbkNvbXBvc2l0b3IgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDI0CisKKyAg
ICAgICAgV2hlbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1
bS1vbmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQg
ZXhwYW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQg
c2hyaW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2Ugc2NhbGUgdG8KKyAg
ICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0IHRvIGdldCB0aGlzIGJlaGF2aW9yLCBhbmQgc2ltcGxp
ZmllZCBDaHJvbWl1bSdzCisgICAgICAgIHJlc2l6ZSBsb2dpYyB0byBzdG9wIGhpZGluZyB0aGUg
dHJ1ZSB2aWV3cG9ydCBzaXplIGZyb20gV2ViQ29yZS4KKworICAgICAgICBJIHdlbnQgdGhyb3Vn
aCBhbGwgdGhlIGNhbGxlcnMgb2YgdmlzaWJsZUNvbnRlbnRSZWN0IGFuZCB2ZXJpZmllZCB0aGF0
CisgICAgICAgIHRoaXMgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgdGhlbS4gVGhlIGV4Y2VwdGlv
bnMgYXJlIGNsaXAtbGF5ZXIgc2l6aW5nCisgICAgICAgIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdo
aWNoIG5lZWQgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZQorICAgICAgICBJ
IGFkZGVkIGEgbmV3IG1ldGhvZCB1bnNjYWxlZENvbnRlbnRTaXplKCkgdG8gU2Nyb2xsVmlldy9G
cmFtZVZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1bnNjYWxlZENvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29u
dGVudFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFNjcm9sbFZpZXcpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFuZ2VTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKToKKwogMjAxMy0wMS0xOCAgVG9ueSBHZW50aWxj
b3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJ1biBkZWZlciBzY3JpcHRzIGlu
IHRoZSB0aHJlYWRlZCBIVE1MIHBhcnNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
NzZhOTJkODE4ZjdmYjE2MWQ1Mjc1Njk2MzUzZTJkOTVjMjczNjAxLi40NjAyYmRmZThlN2E2NGY2
ZWQ4ZTc3MjNjNmIwNjU4ZTZiOWUzYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM3IEBACisyMDEzLTAxLTIxICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3IGluIGFw
cGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFdoZW4gYXBwbHlQYWdlU2Nh
bGVJbkNvbXBvc2l0b3IgaXMgZW5hYmxlZCAoQ2hyb21pdW0tb25seSBzZXR0aW5nKSwKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGRvY3VtZW50IGV4cGFuZGluZyBhcyB0aGUgdXNlciBw
aW5jaCB6b29tcywgdGhlCisgICAgICAgIHZpZXdwb3J0IHNocmlua3MgaW5zdGVhZC4gVGhpcyBw
YXRjaCBhcHBsaWVzIHRoZSBwYWdlIHNjYWxlIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVj
dCB0byBnZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZWQgQ2hyb21pdW0ncworICAgICAg
ICByZXNpemUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9t
IFdlYkNvcmUuCisKKyAgICAgICAgSSB3ZW50IHRocm91Z2ggYWxsIHRoZSBjYWxsZXJzIG9mIHZp
c2libGVDb250ZW50UmVjdCBhbmQgdmVyaWZpZWQgdGhhdAorICAgICAgICB0aGlzIHNjYWxpbmcg
bWFrZXMgc2Vuc2UgZm9yIHRoZW0uIFRoZSBleGNlcHRpb25zIGFyZSBjbGlwLWxheWVyIHNpemlu
ZworICAgICAgICBhbmQgdGV4dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkIHRoZSBvcmlnaW5hbCB1
bnNjYWxlZCBzaXplLiBUaGVyZWZvcmUKKyAgICAgICAgSSBhZGRlZCBhIG5ldyBtZXRob2QgdW5z
Y2FsZWRDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZpZXcvRnJhbWVWaWV3LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2Vydmlu
Z1Njcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2Nh
bGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50
c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIw
MTMtMDEtMTggIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFJvbGwgQ2hyb21pdW0gREVQUyB0byAxNzc2NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggM2Y4MmIwYmQwYTI3
ZTI5ZGQ1YjgzZGUzYzZkZGIxN2ExNjM4NTFkYi4uZTM3YWQ2NGJkNmJmYTY5YzAyYmE3ZDUxOTRl
ZDJkMDNiMThiNDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEwMiwxMCArMTAyLDYgQEAgcHVibGljOgogICAgIC8v
IG1vZGUpLgogICAgIHZpcnR1YWwgV2ViU2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9
IDA7CiAKLSAgICAvLyBHaXZlcyB0aGUgY29ycmVjdGVkIGxvY2F0aW9uIGZvciBhbiBldmVudCwg
YWNjb3VudGluZyBmb3IgdGhlIHBpbmNoLXpvb20gdHJhbnNmb3JtYXRpb24KLSAgICAvLyBpbiB0
aGUgY29tcG9zaXRvci4KLSAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbShjb25zdCBXZWJGbG9hdFBvaW50JikgY29uc3QgPSAwOwotCiAgICAgdmly
dHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IGMyMGIwMzg3MDM3ZjgzODRkNzhjNmNjMDRiY2YzMjM5Y2NjMmE4ZWMuLmJh
ZGUwMDk2MTkxYjdkMzEwZTU1M2ZiNTlkNDg3NDFkZDllZjViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTI4MDcsNiArMjgwNywxNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2lu
ZG93UmVzaXplclJlY3QoKSBjb25zdAogICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+d2luZG93
UmVzaXplclJlY3QoKTsKIH0KIAorZmxvYXQgRnJhbWVWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxl
RmFjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoIW1fZnJhbWUtPnNldHRpbmdzKCktPmFwcGx5
UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgfHwgbV9mcmFtZSAhPSBtX2ZyYW1lLT5wYWdl
KCktPm1haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHJldHVybiBtX2ZyYW1l
LT5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOworfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0Vmlz
aWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiB7CiAg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IGE5OGU4OGYxYjUwNGI2MGFmN2YzOTBlYmEyNzEwYWU5YTBhYzZhNWQuLjdhYTcyZTUwZGYw
ZmQzZjM1NjhiMjYyODcwNTI4NjczMzg4MTEzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtMTgzLDYgKzE4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dS
ZXNpemVyUmVjdCgpIGNvbnN0OwogCisgICAgdmlydHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNj
YWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRW
aXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOwogICAgIHZv
aWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDNhMzkxOTZhZTRmNmE0OTY3YjdjYWIxOWMwNjE3ZWJhNjhmZTYxMTIuLjRjNzMx
YTVkYzhlODkwZTI2ZTlhYTJjOWQwY2I2ZGZhNDgyYjQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtNzMzLDEzICs3MzMsMTUgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQg
c2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9
IHNjYWxlOwogCi0gICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAgICBkb2N1bWVu
dC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKCFtX3NldHRpbmdz
LT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGlmIChkb2N1
bWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKIAotICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3Jj
ZSk7CisgICAgICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKLSAgICAv
LyBUcmFuc2Zvcm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQg
b24gbm9uLWNvbXBvc2l0ZWQgY29udGVudHMuCi0gICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworICAgICAg
ICAvLyBUcmFuc2Zvcm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFp
bnQgb24gbm9uLWNvbXBvc2l0ZWQgY29udGVudHMuCisgICAgICAgIG1haW5GcmFtZSgpLT52aWV3
KCktPmludmFsaWRhdGVSZWN0KEludFJlY3QoTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpKTsK
KyAgICB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbWFpbkZyYW1l
KCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAppbmRleCA4MmEwZGFiNGIzNzhhZWY4ZjlkZjc4YzBhMTU2MGY0Zjg3
NDg3N2E5Li5kN2YxYThjYTE0MTI1NTE0YTJkYWZmOGU4NjhlMmY4NjViY2U0NzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMjI1LDE1ICsyMjUsOCBAQCB2b2lk
IFNjcm9sbFZpZXc6OnNldERlbGVnYXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9sbGlu
ZykKICAgICBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKTsKIH0KIAotI2lmICFQTEFURk9S
TShHVEspCi1JbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1
ZGVTY3JvbGxiYXJzKSBjb25zdAorSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZENvbnRlbnRT
aXplKGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7Ci0gICAgaWYgKHBsYXRmb3JtV2lk
Z2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChpbmNsdWRl
U2Nyb2xsYmFycyk7Ci0KLSAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsKLQogICAgIGlu
dCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsKICAgICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJh
ckhlaWdodCA9IDA7CiAKQEAgLTI0NCwxMSArMjM3LDIzIEBAIEludFJlY3QgU2Nyb2xsVmlldzo6
dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiAgICAgICAg
ICAgICBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gIWhvcml6b250YWxCYXItPmlzT3Zlcmxh
eVNjcm9sbGJhcigpID8gaG9yaXpvbnRhbEJhci0+aGVpZ2h0KCkgOiAwOwogICAgIH0KIAotICAg
IHJldHVybiBJbnRSZWN0KG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCksCi0gICAgICAgICAgICAgICAg
ICAgbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgbWF4KDAsIHdp
ZHRoKCkgLSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwgCisgICAgcmV0dXJuIEludFNpemUobWF4
KDAsIHdpZHRoKCkgLSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwKICAgICAgICAgICAgICAgICAg
ICBtYXgoMCwgaGVpZ2h0KCkgLSBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KSk7CiB9CisKKyNp
ZiAhUExBVEZPUk0oR1RLKQorSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3Qo
Ym9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQo
KSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3Jv
bGxiYXJzKTsKKworICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworCisgICAgSW50U2l6
ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZENvbnRlbnRTaXplKGluY2x1ZGVTY3JvbGxi
YXJzKTsKKyAgICB2aXNpYmxlQ29udGVudFNpemUuc2NhbGUoMSAvIHZpc2libGVDb250ZW50U2Nh
bGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQp
LCB2aXNpYmxlQ29udGVudFNpemUpOworfQogI2VuZGlmCiAKIEludFNpemUgU2Nyb2xsVmlldzo6
bGF5b3V0U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXgg
ZTA0M2Y2ZTlmNzQ4M2RjNDFjNDg1YmMxZDVmMWEwNTQwODY0Yzc0Ni4uZTlkZTc4YzZiN2UwNGEy
NzlmZjgyMzkwNTY3YjFiNmI1YTU0ZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaApAQCAtMTUxLDYgKzE1MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB2aXNpYmxl
V2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0
aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmhlaWdodCgpOyB9CiAKKyAgICBJbnRTaXplIHVu
c2NhbGVkQ29udGVudFNpemUoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CisgICAgdmly
dHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsg
fQorCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0
IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRo
ZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8gY29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNl
dHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxsIGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0ZWFkLgogICAgIEludFNpemUgbGF5b3V0U2l6
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCA3ZDU2YTUxODFkYmI3ZTA4YjM2ZTNhOTFjM2RjYTAzNDNjYjVi
ZmMzLi40YWM2MzUyM2FmZDM5MzdlZDZlNGMwZmNkNDkzOTJkZjBkODcxMTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
MTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0Rp
ZENoYW5nZVNpemUoKQogewogICAgIGlmIChtX2NsaXBMYXllcikgewogICAgICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIG1fY2xp
cExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlIC8qIGV4
Y2x1ZGUgc2Nyb2xsYmFycyAqLykuc2l6ZSgpKTsKKyAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNp
emUoZnJhbWVWaWV3LT51bnNjYWxlZENvbnRlbnRTaXplKGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xs
YmFycyAqLykpOwogCiAgICAgICAgIGZyYW1lVmlld0RpZFNjcm9sbCgpOwogICAgICAgICB1cGRh
dGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCk7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24oKQogICAgIH0KICAg
ICBpZiAobV9jbGlwTGF5ZXIpIHsKICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3Jl
bmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFt
ZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8p
LnNpemUoKSk7CisgICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2Fs
ZWRDb250ZW50U2l6ZShmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pKTsKICAgICB9CiAK
ICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9zaXplci5jcHAKaW5kZXggYjE4YjcwMmI1MWIyZDFmYzA5ODhlM2VlZDM4YjYyZTNhYmQ1
MzQ0OS4uNmYyZjdjYWM4YzA0Nzk2NjMwMGVhM2NlZWVjOWUwMmNlOWY1MmZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcApAQCAtODQsNyArODQsNyBAQCBi
b29sIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKFJlbmRlck9iamVjdCogbGF5b3V0Um9v
dCkKICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtX2RvY3VtZW50LT5zZXR0aW5ncygpLT50
ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSgpOwogICAgIGlmICh3aW5kb3dJbmZvLndp
bmRvd1NpemUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSAh
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRBcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUo
bWFpbkZyYW1lKTsKLSAgICAgICAgd2luZG93SW5mby53aW5kb3dTaXplID0gbWFpbkZyYW1lLT52
aWV3KCktPnZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOworICAg
ICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtYWluRnJhbWUtPnZpZXcoKS0+dW5zY2FsZWRD
b250ZW50U2l6ZShpbmNsdWRlU2Nyb2xsYmFycyk7CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+
c2V0dGluZ3MoKS0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQogICAgICAg
ICAgICAgd2luZG93SW5mby53aW5kb3dTaXplLnNjYWxlKDEgLyBtX2RvY3VtZW50LT5wYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCBiNDFmNjAwODEyZTFjZmFjY2U0MTU3YjExNjY4YjdiNjAz
YzNlYmIyLi40NzdkMWIyNzYzY2VmOWFmOTNjOThlYjU0NTMxODMzNDI2NWJiNDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNjAyLDExICsxNjAy
LDE1IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbGxTdGFydExpdmVSZXNpemUoKQogICAgICAgICBw
bHVnaW5Db250YWluZXItPndpbGxTdGFydExpdmVSZXNpemUoKTsKIH0KIAotV2ViU2l6ZSBXZWJW
aWV3SW1wbDo6c2l6ZSgpCitJbnRTaXplIFdlYlZpZXdJbXBsOjpzY2FsZWRTaXplKGZsb2F0IHBh
Z2VTY2FsZUZhY3RvcikgY29uc3QKIHsKLSAgICBpZiAoaXNGaXhlZExheW91dE1vZGVFbmFibGVk
KCkgJiYgc2V0dGluZ3NJbXBsKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkp
Ci0gICAgICAgIHJldHVybiBsYXlvdXRTaXplKCk7CisgICAgRmxvYXRTaXplIHNjYWxlZFNpemUg
PSBkaXBTaXplKCk7CisgICAgc2NhbGVkU2l6ZS5zY2FsZSgxIC8gcGFnZVNjYWxlRmFjdG9yKTsK
KyAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpOworfQogCitXZWJTaXplIFdl
YlZpZXdJbXBsOjpzaXplKCkKK3sKICAgICByZXR1cm4gbV9zaXplOwogfQogCkBAIC0xNjM3LDcg
KzE2NDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6
ZSkKICAgICBpZiAoIWFnZW50UHJpdmF0ZSB8fCAhYWdlbnRQcml2YXRlLT5tZXRyaWNzT3ZlcnJp
ZGRlbigpKSB7CiAgICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBtYWluRnJhbWVJbXBs
KCk7CiAgICAgICAgIGlmICh3ZWJGcmFtZS0+ZnJhbWVWaWV3KCkpCi0gICAgICAgICAgICB3ZWJG
cmFtZS0+ZnJhbWVWaWV3KCktPnJlc2l6ZShzaXplKCkpOworICAgICAgICAgICAgd2ViRnJhbWUt
PmZyYW1lVmlldygpLT5yZXNpemUobV9zaXplKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVklFV1BP
UlQpCkBAIC0yMDczLDMwICsyMDc3LDI0IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0
RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaWYgKCFtX2xheWVyVHJlZVZpZXcpCi0gICAgICAgIHJldHVybiBQ
YWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywg
aW5wdXRFdmVudCk7Ci0KICAgICBjb25zdCBXZWJJbnB1dEV2ZW50KiBpbnB1dEV2ZW50VHJhbnNm
b3JtZWQgPSAmaW5wdXRFdmVudDsKLSAgICBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQ7Ci0gICAg
V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudDsKLSAgICBpZiAoV2ViSW5wdXRFdmVudDo6aXNN
b3VzZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAgICAgIG1vdXNlRXZlbnQgPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KTsKLQotICAgICAg
ICBJbnRQb2ludCB0cmFuc2Zvcm1lZExvY2F0aW9uID0gcm91bmRlZEludFBvaW50KG1fbGF5ZXJU
cmVlVmlldy0+YWRqdXN0RXZlbnRQb2ludEZvclBpbmNoWm9vbShXZWJGbG9hdFBvaW50KG1vdXNl
RXZlbnQueCwgbW91c2VFdmVudC55KSkpOwotICAgICAgICBtb3VzZUV2ZW50LnggPSB0cmFuc2Zv
cm1lZExvY2F0aW9uLngoKTsKLSAgICAgICAgbW91c2VFdmVudC55ID0gdHJhbnNmb3JtZWRMb2Nh
dGlvbi55KCk7Ci0gICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYklucHV0RXZlbnQqPigmbW91c2VFdmVudCk7Ci0gICAgfSBlbHNlIGlmIChXZWJJbnB1
dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgewotICAgICAgICBn
ZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0
RXZlbnQpOwotCi0gICAgICAgIEludFBvaW50IHRyYW5zZm9ybWVkTG9jYXRpb24gPSByb3VuZGVk
SW50UG9pbnQobV9sYXllclRyZWVWaWV3LT5hZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKFdl
YkZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSkpOwotICAgICAgICBn
ZXN0dXJlRXZlbnQueCA9IHRyYW5zZm9ybWVkTG9jYXRpb24ueCgpOwotICAgICAgICBnZXN0dXJl
RXZlbnQueSA9IHRyYW5zZm9ybWVkTG9jYXRpb24ueSgpOwotICAgICAgICBpbnB1dEV2ZW50VHJh
bnNmb3JtZWQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJmdlc3R1cmVFdmVu
dCk7CisgICAgaWYgKG1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IoKSkgeworICAgICAgICBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQ7CisgICAgICAg
IFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQ7CisgICAgICAgIGlmIChXZWJJbnB1dEV2ZW50
Ojppc01vdXNlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKKyAgICAgICAgICAgIG1vdXNl
RXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KTsK
KyAgICAgICAgICAgIG1vdXNlRXZlbnQueCA9IG1vdXNlRXZlbnQueCAvIHBhZ2VTY2FsZUZhY3Rv
cigpOworICAgICAgICAgICAgbW91c2VFdmVudC55ID0gbW91c2VFdmVudC55IC8gcGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBzdGF0aWNfY2Fz
dDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJm1vdXNlRXZlbnQpOworICAgICAgICB9IGVsc2UgaWYg
KFdlYklucHV0RXZlbnQ6OmlzR2VzdHVyZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Cisg
ICAgICAgICAgICBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2
ZW50Kj4oJmlucHV0RXZlbnQpOworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSBnZXN0dXJl
RXZlbnQueCAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50Lnkg
PSBnZXN0dXJlRXZlbnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgaW5wdXRF
dmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZnZXN0
dXJlRXZlbnQpOworICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBoYW5kbGVkID0gUGFnZVdp
ZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFnZS5nZXQoKSwgKnRoaXMsICppbnB1
dEV2ZW50VHJhbnNmb3JtZWQpOwotICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBQYWdl
V2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKmlu
cHV0RXZlbnRUcmFuc2Zvcm1lZCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlQ2FwdHVy
ZUxvc3QoKQpAQCAtMjkxMSwzNCArMjkwOSw0MCBAQCBmbG9hdCBXZWJWaWV3SW1wbDo6Y2xhbXBQ
YWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZUZhY3RvcikKICAgICByZXR1cm4gbWlu
KG1heChzY2FsZUZhY3RvciwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKSwgbV9tYXhpbXVtUGFn
ZVNjYWxlRmFjdG9yKTsKIH0KIAotV2ViUG9pbnQgV2ViVmlld0ltcGw6OmNsYW1wT2Zmc2V0QXRT
Y2FsZShjb25zdCBXZWJQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkKK0ludFBvaW50IFdlYlZp
ZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgSW50UG9pbnQmIG9mZnNldCwgZmxvYXQg
c2NhbGUpIGNvbnN0CiB7Ci0gICAgLy8gVGhpcyBpcyB0aGUgc2NhbGVkIGNvbnRlbnQgc2l6ZS4g
V2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvIHRoZSBuZXcgc2NhbGUgZmFjdG9yLgotICAgIFdlYlNp
emUgY29udGVudFNpemUgPSBtYWluRnJhbWUoKS0+Y29udGVudHNTaXplKCk7Ci0gICAgZmxvYXQg
ZGVsdGFTY2FsZSA9IHNjYWxlIC8gcGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgaW50IGRvY1dpZHRo
QXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLndpZHRoICogZGVsdGFTY2FsZTsKLSAgICBpbnQgZG9j
SGVpZ2h0QXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLmhlaWdodCAqIGRlbHRhU2NhbGU7Ci0gICAg
aW50IHZpZXdXaWR0aCA9IG1fc2l6ZS53aWR0aDsKLSAgICBpbnQgdmlld0hlaWdodCA9IG1fc2l6
ZS5oZWlnaHQ7Ci0KLSAgICAvLyBFbmZvcmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHNjcm9s
bCBwb3NpdGlvbnMgYXQgdGhlIG5ldyBzY2FsZS4KICAgICBJbnRQb2ludCBjbGFtcGVkT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIGNsYW1wZWRPZmZzZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKElu
dFBvaW50KGRvY1dpZHRoQXROZXdTY2FsZSAtIHZpZXdXaWR0aCwgZG9jSGVpZ2h0QXROZXdTY2Fs
ZSAtIHZpZXdIZWlnaHQpKTsKLSAgICBjbGFtcGVkT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKKyAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IoKSkgeworICAgICAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXpl
LiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCisgICAgICAg
IFdlYlNpemUgY29udGVudFNpemUgPSB1bnNjYWxlZENvbnRlbnRzU2l6ZSgpOworICAgICAgICBp
bnQgZG9jV2lkdGhBdE5ld1NjYWxlID0gY29udGVudFNpemUud2lkdGggKiBzY2FsZTsKKyAgICAg
ICAgaW50IGRvY0hlaWdodEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS5oZWlnaHQgKiBzY2FsZTsK
KyAgICAgICAgaW50IHZpZXdXaWR0aCA9IG1fc2l6ZS53aWR0aDsKKyAgICAgICAgaW50IHZpZXdI
ZWlnaHQgPSBtX3NpemUuaGVpZ2h0OworCisgICAgICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0g
YW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgorICAgICAgICBj
bGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9mZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0
TmV3U2NhbGUgLSB2aWV3V2lkdGgsIGRvY0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7
CisgICAgICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGNsYW1wZWRPZmZzZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBv
aW50KHVuc2NhbGVkQ29udGVudHNTaXplKCkgLSBzY2FsZWRTaXplKHNjYWxlKSkpOworICAgICAg
ICBjbGFtcGVkT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICB9CisKICAgICByZXR1
cm4gY2xhbXBlZE9mZnNldDsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFj
dG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldChmbG9hdCBzY2FsZUZhY3RvcikKIHsKLSAgICAvLyBQ
aWNrIGEgc2NhbGUgZmFjdG9yIHRoYXQgaXMgd2l0aGluIHRoZSBleHBlY3RlZCBsaW1pdHMKICAg
ICBzY2FsZUZhY3RvciA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMoc2NhbGVGYWN0b3Ip
OwogCi0gICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZShtYWluRnJhbWUoKS0+c2Ny
b2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQpOwot
ICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZhY3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgIHNjcm9sbE9mZnNldEF0TmV3U2NhbGUuc2NhbGUoZGVsdGFTY2FsZSwgZGVsdGFTY2FsZSk7
CisgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0KG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53
aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhlaWdodCk7CisgICAgaWYgKCFtX3Bh
Z2UtPnNldHRpbmdzKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAg
ICAgICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgICAgIHNjcm9sbE9mZnNldC5zY2FsZShkZWx0YVNjYWxlLCBkZWx0YVNjYWxlKTsKKyAg
ICB9CisgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwg
c2NhbGVGYWN0b3IpOwogCi0gICAgV2ViUG9pbnQgY2xhbXBlZE9mZnNldEF0TmV3U2NhbGUgPSBj
bGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZSwgc2NhbGVGYWN0b3IpOwot
ICAgIHNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgY2xhbXBlZE9mZnNldEF0TmV3U2Nh
bGUpOworICAgIHNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwgc2Nyb2xsT2Zmc2V0KTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFj
dG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQpAQCAtMjk0OSwyMiArMjk1MywxNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0
IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFzY2FsZUZhY3RvcikKICAgICAgICAgc2NhbGVG
YWN0b3IgPSAxOwogCisgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gb3JpZ2luOwogICAgIHNj
YWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZUZhY3Rvcik7Ci0g
ICAgV2ViUG9pbnQgc2Nyb2xsT2Zmc2V0OwotICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5h
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Ci0gICAgICAgIC8vIElmIHBhZ2Ug
c2NhbGUgaXMgbm90IGFwcGxpZWQgaW4gdGhlIGNvbXBvc2l0b3IsIHRoZW4gdGhlIHNjcm9sbCBv
ZmZzZXRzIHNob3VsZAotICAgICAgICAvLyBiZSBtb2RpZmllZCBieSB0aGUgc2NhbGUgZmFjdG9y
LgotICAgICAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUob3JpZ2luLCBzY2Fs
ZUZhY3Rvcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSW50UG9pbnQgb2Zmc2V0ID0gb3JpZ2lu
OwotICAgICAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gbWFpbkZyYW1lKCktPmNvbnRlbnRzU2l6
ZSgpOwotICAgICAgICBvZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoY29udGVudFNpemUud2lkdGgg
LSBtX3NpemUud2lkdGgsIGNvbnRlbnRTaXplLmhlaWdodCAtIG1fc2l6ZS5oZWlnaHQpKTsKLSAg
ICAgICAgb2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAgc2Nyb2xsT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIH0KKyAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUo
c2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rvcik7CisKKyAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZh
Y3RvcihzY2FsZUZhY3RvciwgSW50UG9pbnQoc2Nyb2xsT2Zmc2V0KSk7CiAKLSAgICBwYWdlKCkt
PnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwgc2Nyb2xsT2Zmc2V0KTsKICAgICBtX3Bh
Z2VTY2FsZUZhY3RvcklzU2V0ID0gdHJ1ZTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOworI2VuZGlmCiB9CiAKIGZsb2F0
IFdlYlZpZXdJbXBsOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMDQ4LDEyICszMDQ3
LDE2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9yZVZpZXdwb3J0VGFnTWF4aW11bVNjYWxl
KGJvb2wgZmxhZykKICAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlzcGF0Y2hWaWV3
cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UocGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+
dmlld3BvcnRBcmd1bWVudHMoKSk7CiB9CiAKLXN0YXRpYyBJbnRTaXplIHVuc2NhbGVkQ29udGVu
dHNTaXplKEZyYW1lKiBmcmFtZSkKK0ludFNpemUgV2ViVmlld0ltcGw6OnVuc2NhbGVkQ29udGVu
dHNTaXplKCkgY29uc3QKIHsKKyAgICBGcmFtZSogZnJhbWUgPSBwYWdlKCktPm1haW5GcmFtZSgp
OwogICAgIFJlbmRlclZpZXcqIHJvb3QgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CiAgICAg
aWYgKCFyb290KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwotICAgIHJldHVybiByb290LT51
bnNjYWxlZERvY3VtZW50UmVjdCgpLnNpemUoKTsKKworICAgIGlmICghbV9wYWdlLT5zZXR0aW5n
cygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQorICAgICAgICByZXR1cm4g
cm9vdC0+dW5zY2FsZWREb2N1bWVudFJlY3QoKS5zaXplKCk7CisgICAgcmV0dXJuIHJvb3QtPmRv
Y3VtZW50UmVjdCgpLnNpemUoKTsKIH0KIAogSW50U2l6ZSBXZWJWaWV3SW1wbDo6bGF5b3V0U2l6
ZSgpIGNvbnN0CkBAIC0zMDYxLDcgKzMwNjQsOCBAQCBJbnRTaXplIFdlYlZpZXdJbXBsOjpsYXlv
dXRTaXplKCkgY29uc3QKICAgICBpZiAoIWlzRml4ZWRMYXlvdXRNb2RlRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gbV9zaXplOwogCi0gICAgSW50U2l6ZSBjb250ZW50U2l6ZSA9IHVuc2NhbGVk
Q29udGVudHNTaXplKHBhZ2UoKS0+bWFpbkZyYW1lKCkpOworICAgIEludFNpemUgY29udGVudFNp
emUgPSB1bnNjYWxlZENvbnRlbnRzU2l6ZSgpOworCiAgICAgaWYgKGZpeGVkTGF5b3V0U2l6ZSgp
LndpZHRoID49IGNvbnRlbnRTaXplLndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmaXhlZExheW91
dFNpemUoKTsKIApAQCAtMzA4OSw3ICszMDkzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcHV0
ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygpCiAgICAgaW50IHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Nj
cm9sbGJhcnMgPSBtX3NpemUud2lkdGg7CiAgICAgaWYgKHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Nj
cm9sbGJhcnMgJiYgdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAhdmlldy0+dmVydGljYWxT
Y3JvbGxiYXIoKS0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCiAgICAgICAgIHZpZXdXaWR0aE5vdElu
Y2x1ZGluZ1Njcm9sbGJhcnMgLT0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsK
LSAgICBpbnQgdW5zY2FsZWRDb250ZW50c1dpZHRoID0gdW5zY2FsZWRDb250ZW50c1NpemUocGFn
ZSgpLT5tYWluRnJhbWUoKSkud2lkdGgoKTsKKyAgICBpbnQgdW5zY2FsZWRDb250ZW50c1dpZHRo
ID0gdW5zY2FsZWRDb250ZW50c1NpemUoKS53aWR0aCgpOwogICAgIGlmICh2aWV3V2lkdGhOb3RJ
bmNsdWRpbmdTY3JvbGxiYXJzICYmIHVuc2NhbGVkQ29udGVudHNXaWR0aCkgewogICAgICAgICAv
LyBMaW1pdCBwYWdlIHNjYWxpbmcgZG93biB0byB0aGUgZG9jdW1lbnQgd2lkdGguCiAgICAgICAg
IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciA9IG1heChtX21pbmltdW1QYWdlU2NhbGVGYWN0b3Is
IHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3V2lkdGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzKSAvIHVu
c2NhbGVkQ29udGVudHNXaWR0aCk7CkBAIC0zNzUwLDE1ICszNzU0LDEwIEBAIHZvaWQgV2ViVmll
d0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSgpCiAgICAgfSBlbHNlCiAgICAgICAgIG1heU5l
ZWRMYXlvdXQgPSBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwotICAgIGlmIChzZXR0aW5n
c0ltcGwoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiB2aWV3ICYmIHZp
ZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKS53aWR0aCgpICE9IGxheW91dFNpemUoKS53aWR0
aCgpKSB7Ci0gICAgICAgIHZpZXctPnJlc2l6ZShsYXlvdXRTaXplKCkpOwotICAgICAgICBtYXlO
ZWVkTGF5b3V0ID0gdHJ1ZTsKLSAgICB9Ci0KICAgICAvLyBkaWRDaGFuZ2VDb250ZW50c1NpemUo
KSBtYXkgYmUgY2FsbGVkIGZyb20gRnJhbWVWaWV3OjpsYXlvdXQ7IHdlIG5lZWQgdG8KICAgICAv
LyByZWxheW91dCB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZSBhc3NlcnRpb24gdGhhdCBuZWVkc0xh
eW91dCgpIGlzbid0IHNldAogICAgIC8vIGF0IHRoZSBlbmQgb2YgYSBsYXlvdXQuCisgICAgRnJh
bWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKTsKICAgICBpZiAobWF5
TmVlZExheW91dCAmJiB2aWV3ICYmIHZpZXctPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHZpZXct
PmxheW91dCgpOwogI2VuZGlmCkBAIC00MjMwLDE2ICs0MjI5LDE0IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAgIEludFJlY3Qg
dmlzaWJsZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNj
cm9sbGJhcnMgKi8pOwotICAgIEludFBvaW50IHNjcm9sbCh2aWV3LT5zY3JvbGxYKCksIHZpZXct
PnNjcm9sbFkoKSk7CiAKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3Bv
cnQodmlzaWJsZVJlY3Quc2l6ZSgpLCB2aWV3LT5jb250ZW50c1NpemUoKSwgc2Nyb2xsLCB2aWV3
LT5zY3JvbGxPcmlnaW4oKSk7Ci0KLSAgICBJbnRTaXplIGxheW91dFZpZXdwb3J0U2l6ZSA9IHZp
c2libGVSZWN0LnNpemUoKTsKKyAgICBJbnRTaXplIGxheW91dFZpZXdwb3J0U2l6ZSA9IGxheW91
dFNpemUoKTsKICAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6ZSA9IG1fc2l6ZTsKICAgICBp
ZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQog
ICAgICAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAK
KyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQoZGV2aWNlVmlld3Bv
cnRTaXplLCB2aWV3LT5jb250ZW50c1NpemUoKSwgdmlldy0+c2Nyb2xsUG9zaXRpb24oKSwgdmll
dy0+c2Nyb2xsT3JpZ2luKCkpOworCiAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRWaWV3cG9ydFNp
emUobGF5b3V0Vmlld3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwogICAgIG1fbGF5ZXJU
cmVlVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvcigpLCBt
X21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAzZThkY2Q0YjgyZWUx
ZjBiZWVjMjc1OTI4MjM5ZTc4MTkxYzY2Yjk2Li5iYTNkMTJjYWQxZGFhOTMwZDhiNzRhYjc0Njcx
NmI5MzRkYmIyMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIGRpcFNp
emUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIHNjYWxlZFNpemUoZmxvYXQpIGNvbnN0OwogCiAgICAgLy8gU2V0
IHRoZSBkaXNwb3NpdGlvbiBmb3IgaG93IHRoaXMgd2VidmlldyBpcyB0byBiZSBpbml0aWFsbHkg
c2hvd24uCiAgICAgdm9pZCBzZXRJbml0aWFsTmF2aWdhdGlvblBvbGljeShXZWJOYXZpZ2F0aW9u
UG9saWN5IHBvbGljeSkKQEAgLTYxMSw3ICs2MTIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGJvb2wgY29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygpOwogICAgIGZsb2F0IGNsYW1wUGFn
ZVNjYWxlRmFjdG9yVG9MaW1pdHMoZmxvYXQgc2NhbGUpOwotICAgIFdlYlBvaW50IGNsYW1wT2Zm
c2V0QXRTY2FsZShjb25zdCBXZWJQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSk7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBvZmZzZXQsIGZsb2F0IHNjYWxlKSBjb25zdDsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHVuc2Nh
bGVkQ29udGVudHNTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRT
Y2FsZVN0YXRlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184043</attachid>
            <date>2013-01-22 13:43:23 -0800</date>
            <delta_ts>2013-01-25 01:11:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130122134018.patch</filename>
            <type>text/plain</type>
            <size>27551</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNTE4M2ZkNTk5MjFh
ZWE4OGI5MzFhMjkzZjg1ZDhlNDZjZjBhYTUxLi5kMDc1YjgyMzQyYjUzYjBiYzAwOGEwYjViMWIw
MWY1YTBhYTlhOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMS0yMSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0
dGluZyksCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcg
YXMgdGhlIHVzZXIgcGluY2ggem9vbXMsIHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGlu
c3RlYWQuIFRoaXMgcGF0Y2ggYXBwbGllcyB0aGUgcGFnZSBzY2FsZSB0bworICAgICAgICB2aXNp
YmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlmaWVkIENocm9t
aXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0cnVlIHZpZXdw
b3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgd2VudCB0aHJvdWdoIGFsbCB0aGUg
Y2FsbGVycyBvZiB2aXNpYmxlQ29udGVudFJlY3QgYW5kIHZlcmlmaWVkIHRoYXQKKyAgICAgICAg
dGhpcyBzY2FsaW5nIG1ha2VzIHNlbnNlIGZvciB0aGVtLiBUaGUgZXhjZXB0aW9ucyBhcmUgY2xp
cC1sYXllciBzaXppbmcKKyAgICAgICAgYW5kIHRleHQgYXV0b3NpemluZywgd2hpY2ggbmVlZCB0
aGUgb3JpZ2luYWwgdW5zY2FsZWQgc2l6ZS4gVGhlcmVmb3JlCisgICAgICAgIEkgYWRkZWQgYSBu
ZXcgbWV0aG9kIHVuc2NhbGVkQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4K
KworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAg
IChXZWJMYXllclRyZWVWaWV3KToKKwogMjAxMy0wMS0xOCAgQWxpIEp1bWEgIDxhanVtYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlRyYW5zZm9ybU9wZXJh
dGlvbnMgaW50byBwdXJlIHZpcnR1YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTVkYWU2NzAxOTJjOGFhOTMw
MThiMDU0ZTBkYjAzNTAwNzU1NGQzLi42N2VjN2I3OGY3MDYxN2U1MjNjOTRlOWRiNmE3NWM5MTQw
MzdhOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMtMDEtMjEgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBwYWdlIHNjYWxl
IHNocmluayBGcmFtZVZpZXcgaW4gYXBwbHlQYWdlU2NhbGVJbkNvbXBvc2l0b3IgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDI0CisKKyAg
ICAgICAgV2hlbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1
bS1vbmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQg
ZXhwYW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQg
c2hyaW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2Ugc2NhbGUgdG8KKyAg
ICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0IHRvIGdldCB0aGlzIGJlaGF2aW9yLCBhbmQgc2ltcGxp
ZmllZCBDaHJvbWl1bSdzCisgICAgICAgIHJlc2l6ZSBsb2dpYyB0byBzdG9wIGhpZGluZyB0aGUg
dHJ1ZSB2aWV3cG9ydCBzaXplIGZyb20gV2ViQ29yZS4KKworICAgICAgICBJIHdlbnQgdGhyb3Vn
aCBhbGwgdGhlIGNhbGxlcnMgb2YgdmlzaWJsZUNvbnRlbnRSZWN0IGFuZCB2ZXJpZmllZCB0aGF0
CisgICAgICAgIHRoaXMgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgdGhlbS4gVGhlIGV4Y2VwdGlv
bnMgYXJlIGNsaXAtbGF5ZXIgc2l6aW5nCisgICAgICAgIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdo
aWNoIG5lZWQgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZQorICAgICAgICBJ
IGFkZGVkIGEgbmV3IG1ldGhvZCB1bnNjYWxlZENvbnRlbnRTaXplKCkgdG8gU2Nyb2xsVmlldy9G
cmFtZVZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1bnNjYWxlZENvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29u
dGVudFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFNjcm9sbFZpZXcpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFuZ2VTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKToKKwogMjAxMy0wMS0xOCAgVG9ueSBHZW50aWxj
b3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJ1biBkZWZlciBzY3JpcHRzIGlu
IHRoZSB0aHJlYWRlZCBIVE1MIHBhcnNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4
NzZhOTJkODE4ZjdmYjE2MWQ1Mjc1Njk2MzUzZTJkOTVjMjczNjAxLi40NjAyYmRmZThlN2E2NGY2
ZWQ4ZTc3MjNjNmIwNjU4ZTZiOWUzYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM3IEBACisyMDEzLTAxLTIxICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3IGluIGFw
cGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFdoZW4gYXBwbHlQYWdlU2Nh
bGVJbkNvbXBvc2l0b3IgaXMgZW5hYmxlZCAoQ2hyb21pdW0tb25seSBzZXR0aW5nKSwKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGRvY3VtZW50IGV4cGFuZGluZyBhcyB0aGUgdXNlciBw
aW5jaCB6b29tcywgdGhlCisgICAgICAgIHZpZXdwb3J0IHNocmlua3MgaW5zdGVhZC4gVGhpcyBw
YXRjaCBhcHBsaWVzIHRoZSBwYWdlIHNjYWxlIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVj
dCB0byBnZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZWQgQ2hyb21pdW0ncworICAgICAg
ICByZXNpemUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9t
IFdlYkNvcmUuCisKKyAgICAgICAgSSB3ZW50IHRocm91Z2ggYWxsIHRoZSBjYWxsZXJzIG9mIHZp
c2libGVDb250ZW50UmVjdCBhbmQgdmVyaWZpZWQgdGhhdAorICAgICAgICB0aGlzIHNjYWxpbmcg
bWFrZXMgc2Vuc2UgZm9yIHRoZW0uIFRoZSBleGNlcHRpb25zIGFyZSBjbGlwLWxheWVyIHNpemlu
ZworICAgICAgICBhbmQgdGV4dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkIHRoZSBvcmlnaW5hbCB1
bnNjYWxlZCBzaXplLiBUaGVyZWZvcmUKKyAgICAgICAgSSBhZGRlZCBhIG5ldyBtZXRob2QgdW5z
Y2FsZWRDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZpZXcvRnJhbWVWaWV3LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2Vydmlu
Z1Njcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2Nh
bGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50
c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIw
MTMtMDEtMTggIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFJvbGwgQ2hyb21pdW0gREVQUyB0byAxNzc2NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggM2Y4MmIwYmQwYTI3
ZTI5ZGQ1YjgzZGUzYzZkZGIxN2ExNjM4NTFkYi4uZTM3YWQ2NGJkNmJmYTY5YzAyYmE3ZDUxOTRl
ZDJkMDNiMThiNDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEwMiwxMCArMTAyLDYgQEAgcHVibGljOgogICAgIC8v
IG1vZGUpLgogICAgIHZpcnR1YWwgV2ViU2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9
IDA7CiAKLSAgICAvLyBHaXZlcyB0aGUgY29ycmVjdGVkIGxvY2F0aW9uIGZvciBhbiBldmVudCwg
YWNjb3VudGluZyBmb3IgdGhlIHBpbmNoLXpvb20gdHJhbnNmb3JtYXRpb24KLSAgICAvLyBpbiB0
aGUgY29tcG9zaXRvci4KLSAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbShjb25zdCBXZWJGbG9hdFBvaW50JikgY29uc3QgPSAwOwotCiAgICAgdmly
dHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYTJmNzJkMDhkNWM5ZDU1MGE2MzM4YTkz
MjY2OWZkZjdkNTY4MmE2YS4uMWEzOTI3YmU3ZTlhOGIzNTliYmI0ZDZlZTliOGZhNjg5M2EwNDdh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC04
Nyw4ICs4NywxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25B
bmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgZWxzZQogICAgICAgICBp
dGVtLT5zZXRTY3JvbGxQb2ludChtX2ZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwog
Ci0gICAgaXRlbS0+c2V0UGFnZVNjYWxlRmFjdG9yKG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3Io
KSk7Ci0gICAgCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAocGFn
ZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBtX2ZyYW1lKQorICAgICAgICBpdGVtLT5zZXRQYWdl
U2NhbGVGYWN0b3IocGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIGVsc2UKKyAgICAgICAg
aXRlbS0+c2V0UGFnZVNjYWxlRmFjdG9yKDEpOworCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGdyZWF0IHRvIHdvcmsgb3V0IGEgd2F5IHRvIHB1dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0
ZWFkIG9mIGNhbGxpbmcgdGhyb3VnaCB0byB0aGUgY2xpZW50LgogICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+c2F2ZVZpZXdTdGF0ZVRvSXRlbShpdGVtKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCBjMjBiMDM4NzAzN2Y4Mzg0ZDc4YzZjYzA0YmNmMzIzOWNjYzJh
OGVjLi5iYWRlMDA5NjE5MWI3ZDMxMGU1NTNmYjU5ZDQ4NzQxZGQ5ZWY1YjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yODA3LDYgKzI4MDcsMTcgQEAgSW50UmVjdCBGcmFtZVZp
ZXc6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkt
PndpbmRvd1Jlc2l6ZXJSZWN0KCk7CiB9CiAKK2Zsb2F0IEZyYW1lVmlldzo6dmlzaWJsZUNvbnRl
bnRTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5w
YWdlKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygp
LT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIHx8IG1fZnJhbWUgIT0gbV9mcmFt
ZS0+cGFnZSgpLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4g
bV9mcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6
OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1i
KQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCBhOThlODhmMWI1MDRiNjBhZjdmMzkwZWJhMjcxMGFlOWEwYWM2YTVkLi43YWE3
MmU1MGRmMGZkM2YzNTY4YjI2Mjg3MDUyODY3MzM4ODExMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTE4Myw2ICsxODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
d2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgZmxvYXQgdmlzaWJsZUNv
bnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHNl
dEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCAzYTM5MTk2YWU0ZjZhNDk2N2I3Y2FiMTljMDYxN2ViYTY4ZmU2MTEy
Li40YzczMWE1ZGM4ZTg5MGUyNmU5YWEyYzlkMGNiNmRmYTQ4MmI0NTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTczMywxMyArNzMzLDE1IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9y
KGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogCiAgICAgbV9wYWdlU2NhbGVG
YWN0b3IgPSBzY2FsZTsKIAotICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ZG9jdW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIGlmICghbV9z
ZXR0aW5ncy0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkgeworICAgICAgICBp
ZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBkb2N1bWVudC0+cmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAKLSAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoTm9k
ZTo6Rm9yY2UpOworICAgICAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwog
Ci0gICAgLy8gVHJhbnNmb3JtIGNoYW5nZSBvbiBSZW5kZXJWaWV3IGRvZXNuJ3QgdHJpZ2dlciBy
ZXBhaW50IG9uIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRzLgotICAgIG1haW5GcmFtZSgpLT52aWV3
KCktPmludmFsaWRhdGVSZWN0KEludFJlY3QoTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpKTsK
KyAgICAgICAgLy8gVHJhbnNmb3JtIGNoYW5nZSBvbiBSZW5kZXJWaWV3IGRvZXNuJ3QgdHJpZ2dl
ciByZXBhaW50IG9uIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRzLgorICAgICAgICBtYWluRnJhbWUo
KS0+dmlldygpLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KExheW91dFJlY3Q6OmluZmluaXRlUmVj
dCgpKSk7CisgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1h
aW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggODJhMGRhYjRiMzc4YWVmOGY5ZGY3OGMwYTE1
NjBmNGY4NzQ4NzdhOS4uNjNmMTg2MjRiYTUwYThiNDE2ZDFhNThkNWFkYmEyOTk4MjM0MTBlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTIyNSwxNCArMjI1LDEz
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVsZWdhdGVz
U2Nyb2xsaW5nKQogICAgIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpOwogfQogCi0jaWYg
IVBMQVRGT1JNKEdUSykKLUludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KGJv
b2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2NhbGVk
VmlzaWJsZUNvbnRlbnRTaXplKGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7CiAgICAg
aWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250
ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2li
bGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOwogCiAgICAgaWYgKCFtX2Zp
eGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fZml4ZWRW
aXNpYmxlQ29udGVudFJlY3Q7CisgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0LnNpemUoKTsKIAogICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsKICAgICBp
bnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9IDA7CkBAIC0yNDQsMTEgKzI0MywyMyBAQCBJ
bnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxi
YXJzKSBjb25zdAogICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFob3Jp
em9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdodCgp
IDogMDsKICAgICB9CiAKLSAgICByZXR1cm4gSW50UmVjdChtX3Njcm9sbE9mZnNldC53aWR0aCgp
LAotICAgICAgICAgICAgICAgICAgIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAotICAgICAgICAg
ICAgICAgICAgIG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCksIAorICAg
IHJldHVybiBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCks
CiAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJh
ckhlaWdodCkpOwogfQorCisjaWYgIVBMQVRGT1JNKEdUSykKK0ludFJlY3QgU2Nyb2xsVmlldzo6
dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0Cit7CisgICAg
aWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250
ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CisKKyAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50
UmVjdDsKKworICAgIEZsb2F0U2l6ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2li
bGVDb250ZW50U2l6ZShpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgdmlzaWJsZUNvbnRlbnRTaXpl
LnNjYWxlKDEgLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBJbnRS
ZWN0KEludFBvaW50KG1fc2Nyb2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2libGVDb250
ZW50U2l6ZSkpOworfQogI2VuZGlmCiAKIEludFNpemUgU2Nyb2xsVmlldzo6bGF5b3V0U2l6ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggZTA0M2Y2ZTlmNzQ4
M2RjNDFjNDg1YmMxZDVmMWEwNTQwODY0Yzc0Ni4uYTA0ZGM4MjlmNzNlMWMwNTRjMGI1ODA0ZDkw
NzdlOGUzMDRmYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMTUx
LDYgKzE1MSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQogICAg
IHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKTsgfQogCisgICAgLy8gdmlzaWJsZUNvbnRlbnRSZWN0
KCkuc2l6ZSgpIGlzIGNvbXB1dGVkIGZyb20gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoKSBk
aXZpZGVkIGJ5IHRoZSB2YWx1ZSBvZiB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yLgorICAgIC8v
IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IgaXMgdXN1YWxseSAxLCBleGNlcHQgd2hlbiB0aGUg
c2V0dGluZyBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlIGFuZCB0aGUK
KyAgICAvLyBTY3JvbGxWaWV3IGlzIHRoZSBtYWluIGZyYW1lOyBpbiB0aGF0IGNhc2UsIHZpc2li
bGVDb250ZW50U2NhbGVGYWN0b3IgaXMgZXF1YWwgdG8gdGhlIHBhZ2UncyBwYWdlU2NhbGVGYWN0
b3IuCisgICAgLy8gUG9ydHMgdGhhdCBkb24ndCB1c2UgcGFnZVNjYWxlRmFjdG9yIGNhbiB0cmVh
dCB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSBhbmQgdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6
ZSgpIGFzIGVxdWl2YWxlbnQuCisgICAgSW50U2l6ZSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6
ZShib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHZpc2li
bGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9CisKICAgICAvLyBGdW5j
dGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBs
YXlvdXQgdGhlIGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZp
c2libGUKICAgICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBz
aXplIHZhbHVlIHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcg
dGhpcyBzaXplIGluc3RlYWQuCiAgICAgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmlu
ZGV4IDdkNTZhNTE4MWRiYjdlMDhiMzZlM2E5MWMzZGNhMDM0M2NiNWJmYzMuLjBiODIwMDQ0ZjJk
ZmZjNmQ4NzBhZjA1ZGFjZjkyODZkOGM3NThjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMTYzLDcgKzExNjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpCiB7
CiAgICAgaWYgKG1fY2xpcExheWVyKSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
bV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKTsKLSAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUo
ZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJz
ICovKS5zaXplKCkpOworICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnVu
c2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAqLykp
OwogCiAgICAgICAgIGZyYW1lVmlld0RpZFNjcm9sbCgpOwogICAgICAgICB1cGRhdGVPdmVyZmxv
d0NvbnRyb2xzTGF5ZXJzKCk7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24oKQogICAgIH0KICAgICBpZiAobV9j
bGlwTGF5ZXIpIHsKICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXct
PmZyYW1lVmlldygpOwotICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdChmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7
CisgICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKSk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvc2l6ZXIuY3BwCmluZGV4IGIxOGI3MDJiNTFiMmQxZmMwOTg4ZTNlZWQzOGI2MmUzYWJkNTM0
NDkuLjQyMWIyOTc0OGUwMWE2MjJhMDI3Njk5NDNkMzVjM2YwY2U5Zjk4NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9v
bCBUZXh0QXV0b3NpemVyOjpwcm9jZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3Qp
CiAgICAgd2luZG93SW5mby53aW5kb3dTaXplID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKS0+dGV4
dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGUoKTsKICAgICBpZiAod2luZG93SW5mby53aW5k
b3dTaXplLmlzRW1wdHkoKSkgewogICAgICAgICBib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gIUlu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkQXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKG1h
aW5GcmFtZSk7Ci0gICAgICAgIHdpbmRvd0luZm8ud2luZG93U2l6ZSA9IG1haW5GcmFtZS0+dmll
dygpLT52aXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAg
ICAgd2luZG93SW5mby53aW5kb3dTaXplID0gbWFpbkZyYW1lLT52aWV3KCktPnVuc2NhbGVkVmlz
aWJsZUNvbnRlbnRTaXplKGluY2x1ZGVTY3JvbGxiYXJzKTsKICAgICAgICAgaWYgKCFtX2RvY3Vt
ZW50LT5zZXR0aW5ncygpLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAg
ICAgICAgICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUuc2NhbGUoMSAvIG1fZG9jdW1lbnQtPnBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGI0MWY2MDA4MTJlMWNmYWNjZTQxNTdiMTE2Njhi
N2I2MDNjM2ViYjIuLjQ3N2QxYjI3NjNjZWY5YWY5M2M5OGViNTQ1MzE4MzM0MjY1YmI0MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE2MDIsMTEg
KzE2MDIsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAg
ICAgIHBsdWdpbkNvbnRhaW5lci0+d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogfQogCi1XZWJTaXpl
IFdlYlZpZXdJbXBsOjpzaXplKCkKK0ludFNpemUgV2ViVmlld0ltcGw6OnNjYWxlZFNpemUoZmxv
YXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdAogewotICAgIGlmIChpc0ZpeGVkTGF5b3V0TW9kZUVu
YWJsZWQoKSAmJiBzZXR0aW5nc0ltcGwoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IoKSkKLSAgICAgICAgcmV0dXJuIGxheW91dFNpemUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGVk
U2l6ZSA9IGRpcFNpemUoKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKDEgLyBwYWdlU2NhbGVGYWN0
b3IpOworICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAKK1dlYlNp
emUgV2ViVmlld0ltcGw6OnNpemUoKQorewogICAgIHJldHVybiBtX3NpemU7CiB9CiAKQEAgLTE2
MzcsNyArMTY0MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBu
ZXdTaXplKQogICAgIGlmICghYWdlbnRQcml2YXRlIHx8ICFhZ2VudFByaXZhdGUtPm1ldHJpY3NP
dmVycmlkZGVuKCkpIHsKICAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IG1haW5GcmFt
ZUltcGwoKTsKICAgICAgICAgaWYgKHdlYkZyYW1lLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgICAg
IHdlYkZyYW1lLT5mcmFtZVZpZXcoKS0+cmVzaXplKHNpemUoKSk7CisgICAgICAgICAgICB3ZWJG
cmFtZS0+ZnJhbWVWaWV3KCktPnJlc2l6ZShtX3NpemUpOwogICAgIH0KIAogI2lmIEVOQUJMRShW
SUVXUE9SVCkKQEAgLTIwNzMsMzAgKzIwNzcsMjQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxl
SW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKLSAgICAgICAgcmV0
dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0
aGlzLCBpbnB1dEV2ZW50KTsKLQogICAgIGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZlbnRU
cmFuc2Zvcm1lZCA9ICZpbnB1dEV2ZW50OwotICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsK
LSAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZUV2ZW50OwotICAgIGlmIChXZWJJbnB1dEV2ZW50
Ojppc01vdXNlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgbW91c2VFdmVu
dCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotCi0g
ICAgICAgIEludFBvaW50IHRyYW5zZm9ybWVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobV9s
YXllclRyZWVWaWV3LT5hZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKFdlYkZsb2F0UG9pbnQo
bW91c2VFdmVudC54LCBtb3VzZUV2ZW50LnkpKSk7Ci0gICAgICAgIG1vdXNlRXZlbnQueCA9IHRy
YW5zZm9ybWVkTG9jYXRpb24ueCgpOwotICAgICAgICBtb3VzZUV2ZW50LnkgPSB0cmFuc2Zvcm1l
ZExvY2F0aW9uLnkoKTsKLSAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZtb3VzZUV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKFdl
YklucHV0RXZlbnQ6OmlzR2VzdHVyZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAg
ICAgIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigm
aW5wdXRFdmVudCk7Ci0KLSAgICAgICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJv
dW5kZWRJbnRQb2ludChtX2xheWVyVHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpv
b20oV2ViRmxvYXRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKSk7Ci0gICAg
ICAgIGdlc3R1cmVFdmVudC54ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIGdl
c3R1cmVFdmVudC55ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi55KCk7Ci0gICAgICAgIGlucHV0RXZl
bnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmZ2VzdHVy
ZUV2ZW50KTsKKyAgICBpZiAobV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKKyAg
ICAgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudDsKKyAgICAgICAgaWYgKFdlYklucHV0
RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgICAgICAg
bW91c2VFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZl
bnQpOworICAgICAgICAgICAgbW91c2VFdmVudC54ID0gbW91c2VFdmVudC54IC8gcGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgICAgICAgICBtb3VzZUV2ZW50LnkgPSBtb3VzZUV2ZW50LnkgLyBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmbW91c2VFdmVudCk7CisgICAgICAgIH0gZWxz
ZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkp
IHsKKyAgICAgICAgICAgIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0
dXJlRXZlbnQqPigmaW5wdXRFdmVudCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueCA9IGdl
c3R1cmVFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBnZXN0dXJlRXZl
bnQueSA9IGdlc3R1cmVFdmVudC55IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBp
bnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4o
Jmdlc3R1cmVFdmVudCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhbmRsZWQgPSBQ
YWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywg
KmlucHV0RXZlbnRUcmFuc2Zvcm1lZCk7Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJu
IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlz
LCAqaW5wdXRFdmVudFRyYW5zZm9ybWVkKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VD
YXB0dXJlTG9zdCgpCkBAIC0yOTExLDM0ICsyOTA5LDQwIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpj
bGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIHJldHVy
biBtaW4obWF4KHNjYWxlRmFjdG9yLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpLCBtX21heGlt
dW1QYWdlU2NhbGVGYWN0b3IpOwogfQogCi1XZWJQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZz
ZXRBdFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKQorSW50UG9pbnQg
V2ViVmlld0ltcGw6OmNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBm
bG9hdCBzY2FsZSkgY29uc3QKIHsKLSAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBz
aXplLiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCi0gICAg
V2ViU2l6ZSBjb250ZW50U2l6ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICBm
bG9hdCBkZWx0YVNjYWxlID0gc2NhbGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgZG9j
V2lkdGhBdE5ld1NjYWxlID0gY29udGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOwotICAgIGlu
dCBkb2NIZWlnaHRBdE5ld1NjYWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsK
LSAgICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOwotICAgIGludCB2aWV3SGVpZ2h0ID0g
bV9zaXplLmhlaWdodDsKLQotICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0g
c2Nyb2xsIHBvc2l0aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgogICAgIEludFBvaW50IGNsYW1wZWRP
ZmZzZXQgPSBvZmZzZXQ7Ci0gICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5r
VG8oSW50UG9pbnQoZG9jV2lkdGhBdE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5l
d1NjYWxlIC0gdmlld0hlaWdodCkpOwotICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRv
WmVybygpOworICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxlZCBjb250ZW50
IHNpemUuIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZhY3Rvci4KKyAg
ICAgICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9IHVuc2NhbGVkQ29udGVudHNTaXplKCk7CisgICAg
ICAgIGludCBkb2NXaWR0aEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS53aWR0aCAqIHNjYWxlOwor
ICAgICAgICBpbnQgZG9jSGVpZ2h0QXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLmhlaWdodCAqIHNj
YWxlOworICAgICAgICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOworICAgICAgICBpbnQg
dmlld0hlaWdodCA9IG1fc2l6ZS5oZWlnaHQ7CisKKyAgICAgICAgLy8gRW5mb3JjZSB0aGUgbWF4
aW11bSBhbmQgbWluaW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBuZXcgc2NhbGUuCisgICAg
ICAgIGNsYW1wZWRPZmZzZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGRvY1dp
ZHRoQXROZXdTY2FsZSAtIHZpZXdXaWR0aCwgZG9jSGVpZ2h0QXROZXdTY2FsZSAtIHZpZXdIZWln
aHQpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8o
SW50UG9pbnQodW5zY2FsZWRDb250ZW50c1NpemUoKSAtIHNjYWxlZFNpemUoc2NhbGUpKSk7Cisg
ICAgICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIH0KKwogICAg
IHJldHVybiBjbGFtcGVkT2Zmc2V0OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2Nh
bGVGYWN0b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0KGZsb2F0IHNjYWxlRmFjdG9yKQogewotICAg
IC8vIFBpY2sgYSBzY2FsZSBmYWN0b3IgdGhhdCBpcyB3aXRoaW4gdGhlIGV4cGVjdGVkIGxpbWl0
cwogICAgIHNjYWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZUZh
Y3Rvcik7CiAKLSAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlKG1haW5GcmFtZSgp
LT5zY3JvbGxPZmZzZXQoKS53aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhlaWdo
dCk7Ci0gICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNjYWxlRmFjdG9y
KCk7Ci0gICAgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZS5zY2FsZShkZWx0YVNjYWxlLCBkZWx0YVNj
YWxlKTsKKyAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNl
dCgpLndpZHRoLCBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKKyAgICBpZiAo
IW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkg
eworICAgICAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2NhbGVGYWN0b3IgLyBwYWdlU2NhbGVGYWN0
b3IoKTsKKyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNjYWxlKGRlbHRhU2NhbGUsIGRlbHRhU2NhbGUp
OworICAgIH0KKyAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zm
c2V0LCBzY2FsZUZhY3Rvcik7CiAKLSAgICBXZWJQb2ludCBjbGFtcGVkT2Zmc2V0QXROZXdTY2Fs
ZSA9IGNsYW1wT2Zmc2V0QXRTY2FsZShzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLCBzY2FsZUZhY3Rv
cik7Ci0gICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBjbGFtcGVkT2Zmc2V0QXRO
ZXdTY2FsZSk7CisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBzY3JvbGxPZmZz
ZXQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2Nh
bGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCkBAIC0yOTQ5LDIyICsyOTUzLDE3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgV2ViUG9pbnQmIG9yaWdpbikKICAgICBpZiAoIXNjYWxlRmFjdG9yKQogICAgICAgICBz
Y2FsZUZhY3RvciA9IDE7CiAKKyAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQgPSBvcmlnaW47CiAg
ICAgc2NhbGVGYWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9y
KTsKLSAgICBXZWJQb2ludCBzY3JvbGxPZmZzZXQ7Ci0gICAgaWYgKCFtX3BhZ2UtPnNldHRpbmdz
KCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKLSAgICAgICAgLy8gSWYg
cGFnZSBzY2FsZSBpcyBub3QgYXBwbGllZCBpbiB0aGUgY29tcG9zaXRvciwgdGhlbiB0aGUgc2Ny
b2xsIG9mZnNldHMgc2hvdWxkCi0gICAgICAgIC8vIGJlIG1vZGlmaWVkIGJ5IHRoZSBzY2FsZSBm
YWN0b3IuCi0gICAgICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRTY2FsZShvcmlnaW4s
IHNjYWxlRmFjdG9yKTsKLSAgICB9IGVsc2UgewotICAgICAgICBJbnRQb2ludCBvZmZzZXQgPSBv
cmlnaW47Ci0gICAgICAgIFdlYlNpemUgY29udGVudFNpemUgPSBtYWluRnJhbWUoKS0+Y29udGVu
dHNTaXplKCk7Ci0gICAgICAgIG9mZnNldC5zaHJ1bmtUbyhJbnRQb2ludChjb250ZW50U2l6ZS53
aWR0aCAtIG1fc2l6ZS53aWR0aCwgY29udGVudFNpemUuaGVpZ2h0IC0gbV9zaXplLmhlaWdodCkp
OwotICAgICAgICBvZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICBzY3JvbGxP
ZmZzZXQgPSBvZmZzZXQ7Ci0gICAgfQorICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRT
Y2FsZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKKworICAgIHBhZ2UoKS0+c2V0UGFnZVNj
YWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludChzY3JvbGxPZmZzZXQpKTsKIAotICAgIHBh
Z2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBzY3JvbGxPZmZzZXQpOwogICAg
IG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSB0cnVlOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisjZW5kaWYKIH0KIAog
ZmxvYXQgV2ViVmlld0ltcGw6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKQEAgLTMwNDgsMTIg
KzMwNDcsMTYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SWdub3JlVmlld3BvcnRUYWdNYXhpbXVt
U2NhbGUoYm9vbCBmbGFnKQogICAgIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kaXNwYXRj
aFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShwYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpLT52aWV3cG9ydEFyZ3VtZW50cygpKTsKIH0KIAotc3RhdGljIEludFNpemUgdW5zY2FsZWRD
b250ZW50c1NpemUoRnJhbWUqIGZyYW1lKQorSW50U2l6ZSBXZWJWaWV3SW1wbDo6dW5zY2FsZWRD
b250ZW50c1NpemUoKSBjb25zdAogeworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UoKS0+bWFpbkZy
YW1lKCk7CiAgICAgUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsK
ICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7Ci0gICAgcmV0dXJuIHJv
b3QtPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkuc2l6ZSgpOworCisgICAgaWYgKCFtX3BhZ2UtPnNl
dHRpbmdzKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCisgICAgICAgIHJl
dHVybiByb290LT51bnNjYWxlZERvY3VtZW50UmVjdCgpLnNpemUoKTsKKyAgICByZXR1cm4gcm9v
dC0+ZG9jdW1lbnRSZWN0KCkuc2l6ZSgpOwogfQogCiBJbnRTaXplIFdlYlZpZXdJbXBsOjpsYXlv
dXRTaXplKCkgY29uc3QKQEAgLTMwNjEsNyArMzA2NCw4IEBAIEludFNpemUgV2ViVmlld0ltcGw6
OmxheW91dFNpemUoKSBjb25zdAogICAgIGlmICghaXNGaXhlZExheW91dE1vZGVFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBtX3NpemU7CiAKLSAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gdW5z
Y2FsZWRDb250ZW50c1NpemUocGFnZSgpLT5tYWluRnJhbWUoKSk7CisgICAgSW50U2l6ZSBjb250
ZW50U2l6ZSA9IHVuc2NhbGVkQ29udGVudHNTaXplKCk7CisKICAgICBpZiAoZml4ZWRMYXlvdXRT
aXplKCkud2lkdGggPj0gY29udGVudFNpemUud2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZpeGVk
TGF5b3V0U2l6ZSgpOwogCkBAIC0zMDg5LDcgKzMwOTMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpj
b21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCkKICAgICBpbnQgdmlld1dpZHRoTm90SW5jbHVk
aW5nU2Nyb2xsYmFycyA9IG1fc2l6ZS53aWR0aDsKICAgICBpZiAodmlld1dpZHRoTm90SW5jbHVk
aW5nU2Nyb2xsYmFycyAmJiB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICF2aWV3LT52ZXJ0
aWNhbFNjcm9sbGJhcigpLT5pc092ZXJsYXlTY3JvbGxiYXIoKSkKICAgICAgICAgdmlld1dpZHRo
Tm90SW5jbHVkaW5nU2Nyb2xsYmFycyAtPSB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0
aCgpOwotICAgIGludCB1bnNjYWxlZENvbnRlbnRzV2lkdGggPSB1bnNjYWxlZENvbnRlbnRzU2l6
ZShwYWdlKCktPm1haW5GcmFtZSgpKS53aWR0aCgpOworICAgIGludCB1bnNjYWxlZENvbnRlbnRz
V2lkdGggPSB1bnNjYWxlZENvbnRlbnRzU2l6ZSgpLndpZHRoKCk7CiAgICAgaWYgKHZpZXdXaWR0
aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMgJiYgdW5zY2FsZWRDb250ZW50c1dpZHRoKSB7CiAgICAg
ICAgIC8vIExpbWl0IHBhZ2Ugc2NhbGluZyBkb3duIHRvIHRoZSBkb2N1bWVudCB3aWR0aC4KICAg
ICAgICAgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yID0gbWF4KG1fbWluaW11bVBhZ2VTY2FsZUZh
Y3Rvciwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMp
IC8gdW5zY2FsZWRDb250ZW50c1dpZHRoKTsKQEAgLTM3NTAsMTUgKzM3NTQsMTAgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKCkKICAgICB9IGVsc2UKICAgICAgICAg
bWF5TmVlZExheW91dCA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKIAotICAgIEZy
YW1lVmlldyogdmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHNl
dHRpbmdzSW1wbCgpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHZpZXcg
JiYgdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpLndpZHRoKCkgIT0gbGF5b3V0U2l6ZSgp
LndpZHRoKCkpIHsKLSAgICAgICAgdmlldy0+cmVzaXplKGxheW91dFNpemUoKSk7Ci0gICAgICAg
IG1heU5lZWRMYXlvdXQgPSB0cnVlOwotICAgIH0KLQogICAgIC8vIGRpZENoYW5nZUNvbnRlbnRz
U2l6ZSgpIG1heSBiZSBjYWxsZWQgZnJvbSBGcmFtZVZpZXc6OmxheW91dDsgd2UgbmVlZCB0bwog
ICAgIC8vIHJlbGF5b3V0IHRvIGF2b2lkIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiB0aGF0IG5l
ZWRzTGF5b3V0KCkgaXNuJ3Qgc2V0CiAgICAgLy8gYXQgdGhlIGVuZCBvZiBhIGxheW91dC4KKyAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwogICAgIGlm
IChtYXlOZWVkTGF5b3V0ICYmIHZpZXcgJiYgdmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAg
dmlldy0+bGF5b3V0KCk7CiAjZW5kaWYKQEAgLTQyMzAsMTYgKzQyMjksMTQgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8qIGluY2x1
ZGUgc2Nyb2xsYmFycyAqLyk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKHZpZXctPnNjcm9sbFgoKSwg
dmlldy0+c2Nyb2xsWSgpKTsKIAotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRW
aWV3cG9ydCh2aXNpYmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCBzY3JvbGws
IHZpZXctPnNjcm9sbE9yaWdpbigpKTsKLQotICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXpl
ID0gdmlzaWJsZVJlY3Quc2l6ZSgpOworICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0g
bGF5b3V0U2l6ZSgpOwogICAgIEludFNpemUgZGV2aWNlVmlld3BvcnRTaXplID0gbV9zaXplOwog
ICAgIGlmIChtX3dlYlNldHRpbmdzLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
KCkpCiAgICAgICAgIGRldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcigp
KTsKIAorICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChkZXZpY2VW
aWV3cG9ydFNpemUsIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCB2aWV3LT5zY3JvbGxQb3NpdGlvbigp
LCB2aWV3LT5zY3JvbGxPcmlnaW4oKSk7CisKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdw
b3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CiAgICAgbV9s
YXllclRyZWVWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9y
KCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDNlOGRjZDRi
ODJlZTFmMGJlZWMyNzU5MjgyMzllNzgxOTFjNjZiOTYuLmJhM2QxMmNhZDFkYWE5MzBkOGI3NGFi
NzQ2NzE2YjkzNGRiYjIyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtNDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFNpemUg
ZGlwU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0
OworICAgIFdlYkNvcmU6OkludFNpemUgc2NhbGVkU2l6ZShmbG9hdCkgY29uc3Q7CiAKICAgICAv
LyBTZXQgdGhlIGRpc3Bvc2l0aW9uIGZvciBob3cgdGhpcyB3ZWJ2aWV3IGlzIHRvIGJlIGluaXRp
YWxseSBzaG93bi4KICAgICB2b2lkIHNldEluaXRpYWxOYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmln
YXRpb25Qb2xpY3kgcG9saWN5KQpAQCAtNjExLDcgKzYxMiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgYm9vbCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxvYXQgY2xh
bXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7Ci0gICAgV2ViUG9pbnQgY2xh
bXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKTsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFNpemUg
dW5zY2FsZWRDb250ZW50c1NpemUoKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRTYXZlZFNjcm9s
bEFuZFNjYWxlU3RhdGUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184693</attachid>
            <date>2013-01-25 01:11:16 -0800</date>
            <delta_ts>2013-01-25 16:20:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130125010807.patch</filename>
            <type>text/plain</type>
            <size>36855</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjNzMyNTg3YmNlNGE5
OWQyNmJiMTI3NzkzODAzNjBmMTVkNjhjNjMwLi4wYzcyMWMyMjUxMDU1MzVlNTIwYjc5OGEwMTJk
NWNjNjI5MzJhN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yNSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjIgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYkRpc2NhcmRhYmxlTWVtb3J5IHRvIHBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDUwNzRkNGY1MDlhMmU3YzllYmU4MzU2OTczZGU0MjgxNTYw
ZWJiMy4uMjIxNzdjNjJmMjE1OGFlZWRmOTMzOTUxNDc1ZjMyZDBlMjNjNWUxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAxLTI1ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3
IGluIGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0dGluZyksCisgICAgICAgIGluc3Rl
YWQgb2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcgYXMgdGhlIHVzZXIgcGluY2ggem9v
bXMsIHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGluc3RlYWQuIFRoaXMgcGF0Y2ggYXBw
bGllcyB0aGUgcGFnZVNjYWxlRmFjdG9yIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVjdCB0
byBnZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZXMgQ2hyb21pdW0ncworICAgICAgICBy
ZXNpemUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9tIFdl
YkNvcmUuCisKKyAgICAgICAgSSB2ZXJpZmllZCB0aGF0IHRoZSBzY2FsaW5nIG1ha2VzIHNlbnNl
IGZvciBhbGwgdGhlIGNhbGxlcnMgb2YKKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0LiBUaGUg
ZXhjZXB0aW9ucyBhcmUgY2xpcC1sYXllciBzaXplLAorICAgICAgICBsYXlvdXQgc2l6ZSBpbiBu
b24tZml4ZWQtbGF5b3V0IG1vZGUsIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdoaWNoIG5lZWQKKyAg
ICAgICAgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZSBJIGFkZGVkIGEgbmV3
IG1ldGhvZAorICAgICAgICB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZp
ZXcvRnJhbWVWaWV3LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyBQYWdlOjpz
ZXRQYWdlU2NhbGVGYWN0b3IgdG8gcGVyZm9ybSBubworICAgICAgICBpbnZhbGlkYXRlcyBvciBs
YXlvdXQgd2hlbiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlLAorICAg
ICAgICBhbmQgYWxzbyB3cml0ZXMgcGFnZVNjYWxlRmFjdG9yIGludG8gSGlzdG9yeUl0ZW1zIGlu
c3RlYWQgb2YgdXNpbmcKKyAgICAgICAgZnJhbWVTY2FsZUZhY3Rvci4KKworICAgICAgICBTaW5j
ZSBhbGwgYmVoYXZpb3IgY2hhbmdlcyBhcmUgdGllZCB0byBhcHBseVBhZ2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvciwKKyAgICAgICAgdGhpcyBwYXRjaCBzaG91bGQgYmUgYSBuby1vcCBmb3Igbm9u
LUNocm9taXVtIHBvcnRzLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGluIFdlYkZyYW1lVGVz
dC5jcHAuCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdT
dGF0ZVRvSXRlbSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChGcmFtZVZpZXcp
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRQ
YWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxl
Q29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bGF5b3V0U2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChTY3JvbGxWaWV3
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OmxheW91dEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZENoYW5nZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJQb3NpdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1
dG9zaXplcjo6cHJvY2Vzc1N1YnRyZWUpOgorCiAyMDEzLTAxLTI1ICBEb21pbmljIE1henpvbmkg
IDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDA2NTgpOiBN
dWx0aXBsZSBhY2Nlc3NpYmlsaXR5IGZhaWx1cmVzIG9uIEdUSwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBiYWI0NDhjODU0NjkyZTNkZTNmNTNjMTRjZjZhZDIxZjlhMDY4NjE2Li40YWEx
ZjM5YTI2M2EzYWQxYzI4NTA2NmRmM2U5N2M4NmMyNGVhNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTI1ICBBbGV4YW5kcmUgRWxpYXMgIDxh
ZWxpYXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJh
bWVWaWV3IGluIGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0dGluZyksCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcgYXMgdGhlIHVzZXIgcGlu
Y2ggem9vbXMsIHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGluc3RlYWQuIFRoaXMgcGF0
Y2ggYXBwbGllcyB0aGUgcGFnZVNjYWxlRmFjdG9yIHRvCisgICAgICAgIHZpc2libGVDb250ZW50
UmVjdCB0byBnZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZXMgQ2hyb21pdW0ncworICAg
ICAgICByZXNpemUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBm
cm9tIFdlYkNvcmUuCisKKyAgICAgICAgSSB2ZXJpZmllZCB0aGF0IHRoZSBzY2FsaW5nIG1ha2Vz
IHNlbnNlIGZvciBhbGwgdGhlIGNhbGxlcnMgb2YKKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0
LiBUaGUgZXhjZXB0aW9ucyBhcmUgY2xpcC1sYXllciBzaXplLAorICAgICAgICBsYXlvdXQgc2l6
ZSBpbiBub24tZml4ZWQtbGF5b3V0IG1vZGUsIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdoaWNoIG5l
ZWQKKyAgICAgICAgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZSBJIGFkZGVk
IGEgbmV3IG1ldGhvZAorICAgICAgICB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIHRvIFNj
cm9sbFZpZXcvRnJhbWVWaWV3LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyBQ
YWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IgdG8gcGVyZm9ybSBubworICAgICAgICBpbnZhbGlkYXRl
cyBvciBsYXlvdXQgd2hlbiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVl
LAorICAgICAgICBhbmQgYWxzbyB3cml0ZXMgcGFnZVNjYWxlRmFjdG9yIGludG8gSGlzdG9yeUl0
ZW1zIGluc3RlYWQgb2YgdXNpbmcKKyAgICAgICAgZnJhbWVTY2FsZUZhY3Rvci4KKworICAgICAg
ICBTaW5jZSBhbGwgYmVoYXZpb3IgY2hhbmdlcyBhcmUgdGllZCB0byBhcHBseVBhZ2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvciwKKyAgICAgICAgdGhpcyBwYXRjaCBzaG91bGQgYmUgYSBuby1vcCBm
b3Igbm9uLUNocm9taXVtIHBvcnRzLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Nj
cm9sbE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVG
YWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50c1Np
emUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMy0wMS0yNCAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGp1c3QgZGVzaWduIG9mIHRoZSBDYWxl
bmRhciBQaWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgKaW5kZXggM2Y4MmIwYmQwYTI3ZTI5ZGQ1YjgzZGUzYzZkZGIxN2ExNjM4
NTFkYi4uZThjYzBjNGUyYTE1YzkxNjM4ODAyNTNiZmRjM2NmNmZlYjgzYTkzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysr
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAg
LTEwMiw5ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgLy8gbW9kZSkuCiAgICAgdmlydHVhbCBXZWJT
aXplIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIC8vIEdpdmVzIHRoZSBj
b3JyZWN0ZWQgbG9jYXRpb24gZm9yIGFuIGV2ZW50LCBhY2NvdW50aW5nIGZvciB0aGUgcGluY2gt
em9vbSB0cmFuc2Zvcm1hdGlvbgotICAgIC8vIGluIHRoZSBjb21wb3NpdG9yLgotICAgIHZpcnR1
YWwgV2ViRmxvYXRQb2ludCBhZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKGNvbnN0IFdlYkZs
b2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGFmdGVyIFdl
YktpdCByb2xsCisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFkanVzdEV2ZW50UG9pbnRGb3JQ
aW5jaFpvb20oY29uc3QgV2ViRmxvYXRQb2ludCYgcCkgY29uc3QgeyByZXR1cm4gcDsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAgICAgdmly
dHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGEyZjcyZDA4ZDVjOWQ1NTBhNjMz
OGE5MzI2NjlmZGY3ZDU2ODJhNmEuLjQ1NjYzNWMyNDc0ODgwZDIyZDhjNTgyNTE0Mzg0ZTNjZDBk
NzRkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApA
QCAtODcsOCArODcsMTAgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGVsc2UKICAgICAg
ICAgaXRlbS0+c2V0U2Nyb2xsUG9pbnQobV9mcmFtZS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigp
KTsKIAotICAgIGl0ZW0tPnNldFBhZ2VTY2FsZUZhY3RvcihtX2ZyYW1lLT5mcmFtZVNjYWxlRmFj
dG9yKCkpOwotICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYg
KHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSkKKyAgICAgICAgaXRlbS0+c2V0
UGFnZVNjYWxlRmFjdG9yKHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKKwogICAgIC8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBncmVhdCB0byB3b3JrIG91dCBhIHdheSB0byBwdXQgdGhpcyBjb2RlIGlu
IFdlYkNvcmUgaW5zdGVhZCBvZiBjYWxsaW5nIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNhdmVWaWV3U3RhdGVUb0l0ZW0oaXRlbSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZWJmZTFjODFkY2MzOTMwZDQ3ZGQ4NWY1
ZTQ1NWFiMjA2ZDA2YjBhZi4uYTU4ZDZhMDQ0NTQyYzY3MjU5NjE2MmU5M2MzZjhjOGFhMzlkNzgz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjgzNyw2ICsyODM3LDE3IEBAIElu
dFJlY3QgRnJhbWVWaWV3Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHBh
Z2UtPmNocm9tZSgpLT53aW5kb3dSZXNpemVyUmVjdCgpOwogfQogCitmbG9hdCBGcmFtZVZpZXc6
OnZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSB8
fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICghbV9mcmFt
ZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSB8fCBtX2Zy
YW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAxOwor
CisgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIHZv
aWQgRnJhbWVWaWV3OjpzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYg
c2Nyb2xsZXJUaHVtYikKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNTFjNjRmMzg0MmE3NDcxMjBlYjYwMWMxYTI1ZTZkMDNj
MzVlODExMi4uZDEzYTc2NzkwODNlZDRmZWY2OTVmOWIwZTMwMzhhYzc0ZGNiZjgzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xODMsNiArMTgzLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGZs
b2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
JikgT1ZFUlJJREU7CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdp
ZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggM2EzOTE5NmFlNGY2YTQ5NjdiN2NhYjE5YzA2
MTdlYmE2OGZlNjExMi4uYWVjYmEzMzk2MTY1NmFjNWM0MTU1M2JiZDNiOTcyMWEwYTJkZDIxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03MjUsNyArNzI1LDggQEAgdm9pZCBQYWdlOjpzZXRQYWdl
U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAKICAgICBp
ZiAoc2NhbGUgPT0gbV9wYWdlU2NhbGVGYWN0b3IpIHsKICAgICAgICAgaWYgKHZpZXcgJiYgKHZp
ZXctPnNjcm9sbFBvc2l0aW9uKCkgIT0gb3JpZ2luIHx8IHZpZXctPmRlbGVnYXRlc1Njcm9sbGlu
ZygpKSkgewotICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgICAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcigpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgICAgIHZpZXctPnNldFNj
cm9sbFBvc2l0aW9uKG9yaWdpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNzMz
LDIwICs3MzQsMjIgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUs
IGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxl
OwogCi0gICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAgICBkb2N1bWVudC0+cmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBs
eVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+
cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKIAotICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7Cisg
ICAgICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKLSAgICAvLyBUcmFu
c2Zvcm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9u
LWNvbXBvc2l0ZWQgY29udGVudHMuCi0gICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0
ZVJlY3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworICAgICAgICAvLyBU
cmFuc2Zvcm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24g
bm9uLWNvbXBvc2l0ZWQgY29udGVudHMuCisgICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpKTsKKyAgICB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbWFpbkZyYW1lKCktPmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogI2VuZGlmCiAKICAgICBpZiAodmlldyAm
JiB2aWV3LT5zY3JvbGxQb3NpdGlvbigpICE9IG9yaWdpbikgewotICAgICAgICBpZiAoZG9jdW1l
bnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYg
dmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKKyAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBh
Z2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRv
Y3VtZW50LT5yZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5b3V0
KCkpCiAgICAgICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICAgICAgICAgdmlldy0+c2V0U2Nyb2xs
UG9zaXRpb24ob3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCmluZGV4IDhhNjk3NjkwY2RmMjAzNWY0YTYwYjQyMjUyOWE5Y2NhYTBhZmZkZTAuLjA0NzI3
OTExNzIxZmRmOTk3ZDBjYWIzMjgwNjQ4OTMyNDMzY2YyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0yMjUsMTQgKzIyNSwxMyBAQCB2b2lkIFNjcm9sbFZpZXc6
OnNldERlbGVnYXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9sbGluZykKICAgICBkZWxl
Z2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKTsKIH0KIAotI2lmICFQTEFURk9STShHVEspCi1JbnRS
ZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJz
KSBjb25zdAorSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShi
b29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgp
KQotICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9s
bGJhcnMpOworICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVk
ZVNjcm9sbGJhcnMpLnNpemUoKTsKIAogICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVj
dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0Owor
ICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5zaXplKCk7CiAKICAgICBp
bnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxi
YXJIZWlnaHQgPSAwOwpAQCAtMjQ0LDI2ICsyNDMsMjggQEAgSW50UmVjdCBTY3JvbGxWaWV3Ojp2
aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKICAgICAgICAg
ICAgIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5
U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CiAgICAgfQogCi0gICAg
cmV0dXJuIEludFJlY3QobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAg
ICBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICBtYXgoMCwgd2lk
dGgoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLCAKKyAgICByZXR1cm4gSW50U2l6ZShtYXgo
MCwgd2lkdGgoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAogICAgICAgICAgICAgICAgICAg
IG1heCgwLCBoZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKIH0KLSNlbmRp
ZgogCi1JbnRTaXplIFNjcm9sbFZpZXc6OmxheW91dFNpemUoKSBjb25zdAorI2lmICFQTEFURk9S
TShHVEspCitJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1
ZGVTY3JvbGxiYXJzKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5pc0Vt
cHR5KCkgfHwgIW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlU2l6ZSgpIDogbV9maXhlZExheW91
dFNpemU7Ci19CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBwbGF0
Zm9ybVZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CiAKLWludCBTY3JvbGxW
aWV3OjpsYXlvdXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXpl
LmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVXaWR0aCgpIDogbV9maXhl
ZExheW91dFNpemUud2lkdGgoKTsKKyAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsKKwor
ICAgIEZsb2F0U2l6ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2libGVDb250ZW50
U2l6ZShpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgdmlzaWJsZUNvbnRlbnRTaXplLnNjYWxlKDEg
LyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBJbnRSZWN0KEludFBv
aW50KG1fc2Nyb2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2libGVDb250ZW50U2l6ZSkp
OwogfQorI2VuZGlmCiAKLWludCBTY3JvbGxWaWV3OjpsYXlvdXRIZWlnaHQoKSBjb25zdAorSW50
U2l6ZSBTY3JvbGxWaWV3OjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9maXhl
ZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZUhlaWdo
dCgpIDogbV9maXhlZExheW91dFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIG1fZml4ZWRMYXlv
dXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHVuc2NhbGVkVmlzaWJsZUNv
bnRlbnRTaXplKGZhbHNlKSA6IG1fZml4ZWRMYXlvdXRTaXplOwogfQogCiBJbnRTaXplIFNjcm9s
bFZpZXc6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKaW5kZXggZTA0M2Y2ZTlmNzQ4M2RjNDFjNDg1YmMxZDVmMWEwNTQwODY0Yzc0Ni4uZmU3
YjAxMDExNTI4NzFjMDIxZWVmZDE1MWI5ODYxOWI2ZGNmOTA3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaApAQCAtMTUxLDExICsxNTEsMTggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLndpZHRoKCk7IH0KICAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KIAor
ICAgIC8vIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSBpcyBjb21wdXRlZCBmcm9tIHVuc2Nh
bGVkVmlzaWJsZUNvbnRlbnRTaXplKCkgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2YgdmlzaWJsZUNv
bnRlbnRTY2FsZUZhY3Rvci4KKyAgICAvLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIHVz
dWFsbHkgMSwgZXhjZXB0IHdoZW4gdGhlIHNldHRpbmcgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IgaXMgdHJ1ZSBhbmQgdGhlCisgICAgLy8gU2Nyb2xsVmlldyBpcyB0aGUgbWFpbiBm
cmFtZTsgaW4gdGhhdCBjYXNlLCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIGVxdWFsIHRv
IHRoZSBwYWdlJ3MgcGFnZVNjYWxlRmFjdG9yLgorICAgIC8vIFBvcnRzIHRoYXQgZG9uJ3QgdXNl
IHBhZ2VTY2FsZUZhY3RvciBjYW4gdHJlYXQgdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUgYW5k
IHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSBhcyBlcXVpdmFsZW50LgorICAgIEludFNpemUg
dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3Q7
CisgICAgdmlydHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gMTsgfQorCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNp
emUgd2Via2l0IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250ZW50cy4gQnkgZGVmYXVsdCB0
aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8gY29udGVudCBzaXplLiBFeHBs
aWNpdGx5IHNldHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxsIGNhdXNlIHdlYmtpdCB0byBs
YXlvdXQgdGhlIGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0ZWFkLgogICAgIEludFNpemUg
bGF5b3V0U2l6ZSgpIGNvbnN0OwotICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0OwotICAgIGlu
dCBsYXlvdXRIZWlnaHQoKSBjb25zdDsKKyAgICBpbnQgbGF5b3V0V2lkdGgoKSBjb25zdCB7IHJl
dHVybiBsYXlvdXRTaXplKCkud2lkdGgoKTsgfQorICAgIGludCBsYXlvdXRIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBsYXlvdXRTaXplKCkuaGVpZ2h0KCk7IH0KICAgICBJbnRTaXplIGZpeGVkTGF5
b3V0U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNp
emUmKTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDZiMjk3YWVk
NjVkMDIzNzY3MzdiMDU1ZDQ4NzdlYjE3OWE1MDI4NzQuLjlhNTNkYTE1NWEyYjM1YTE5MjMwNGVm
NGM1MjBkNjdlOWQ1NjZlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpCiB7CiAgICAgaWYgKG1f
Y2xpcExheWVyKSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3
LT5mcmFtZVZpZXcoKTsKLSAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUoZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKS5zaXplKCkp
OworICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAqLykpOwogCiAgICAgICAg
IGZyYW1lVmlld0RpZFNjcm9sbCgpOwogICAgICAgICB1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5
ZXJzKCk7CkBAIC0xNTQzLDcgKzE1NDMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlUm9vdExheWVyUG9zaXRpb24oKQogICAgIH0KICAgICBpZiAobV9jbGlwTGF5ZXIpIHsK
ICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygp
OwotICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50
UmVjdChmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1f
Y2xpcExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUo
ZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvc2l6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3Bw
CmluZGV4IGIxOGI3MDJiNTFiMmQxZmMwOTg4ZTNlZWQzOGI2MmUzYWJkNTM0NDkuLjQyMWIyOTc0
OGUwMWE2MjJhMDI3Njk5NDNkMzVjM2YwY2U5Zjk4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBUZXh0QXV0b3Np
emVyOjpwcm9jZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpCiAgICAgd2luZG93
SW5mby53aW5kb3dTaXplID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKS0+dGV4dEF1dG9zaXppbmdX
aW5kb3dTaXplT3ZlcnJpZGUoKTsKICAgICBpZiAod2luZG93SW5mby53aW5kb3dTaXplLmlzRW1w
dHkoKSkgewogICAgICAgICBib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gIUluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkQXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKG1haW5GcmFtZSk7Ci0g
ICAgICAgIHdpbmRvd0luZm8ud2luZG93U2l6ZSA9IG1haW5GcmFtZS0+dmlldygpLT52aXNpYmxl
Q29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAgICAgd2luZG93SW5m
by53aW5kb3dTaXplID0gbWFpbkZyYW1lLT52aWV3KCktPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRT
aXplKGluY2x1ZGVTY3JvbGxiYXJzKTsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5zZXR0aW5n
cygpLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAgICAgICAgICB3
aW5kb3dJbmZvLndpbmRvd1NpemUuc2NhbGUoMSAvIG1fZG9jdW1lbnQtPnBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDJjMDMwZTgyNTNlMDYyYmVlZWJkZTExNmM4OWRlYzExZTkyZjQ2MDgu
LjE0YzI3ZmE3NDUxNjA1NGUyYzk0MTFiMDEzNzc4ZjViMTZmNTVjNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1OTIsMTEgKzE1OTIsMTUgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHBsdWdpbkNv
bnRhaW5lci0+d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogfQogCi1XZWJTaXplIFdlYlZpZXdJbXBs
OjpzaXplKCkKK0ludFNpemUgV2ViVmlld0ltcGw6OnNjYWxlZFNpemUoZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKSBjb25zdAogewotICAgIGlmIChpc0ZpeGVkTGF5b3V0TW9kZUVuYWJsZWQoKSAmJiBz
ZXR0aW5nc0ltcGwoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKLSAgICAg
ICAgcmV0dXJuIGxheW91dFNpemUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IGRpcFNp
emUoKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKDEgLyBwYWdlU2NhbGVGYWN0b3IpOworICAgIHJl
dHVybiBleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAKK1dlYlNpemUgV2ViVmlld0lt
cGw6OnNpemUoKQorewogICAgIHJldHVybiBtX3NpemU7CiB9CiAKQEAgLTE2MjcsNyArMTYzMSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQogICAg
IGlmICghYWdlbnRQcml2YXRlIHx8ICFhZ2VudFByaXZhdGUtPm1ldHJpY3NPdmVycmlkZGVuKCkp
IHsKICAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKICAg
ICAgICAgaWYgKHdlYkZyYW1lLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIHdlYkZyYW1lLT5m
cmFtZVZpZXcoKS0+cmVzaXplKHNpemUoKSk7CisgICAgICAgICAgICB3ZWJGcmFtZS0+ZnJhbWVW
aWV3KCktPnJlc2l6ZShtX3NpemUpOwogICAgIH0KIAogI2lmIEVOQUJMRShWSUVXUE9SVCkKQEAg
LTIwNDcsMzAgKzIwNTEsMjQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChj
b25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKLSAgICAgICAgcmV0dXJuIFBhZ2VXaWRn
ZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2
ZW50KTsKLQogICAgIGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9
ICZpbnB1dEV2ZW50OwotICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKLSAgICBXZWJHZXN0
dXJlRXZlbnQgZ2VzdHVyZUV2ZW50OwotICAgIGlmIChXZWJJbnB1dEV2ZW50Ojppc01vdXNlRXZl
bnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotCi0gICAgICAgIEludFBv
aW50IHRyYW5zZm9ybWVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobV9sYXllclRyZWVWaWV3
LT5hZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKFdlYkZsb2F0UG9pbnQobW91c2VFdmVudC54
LCBtb3VzZUV2ZW50LnkpKSk7Ci0gICAgICAgIG1vdXNlRXZlbnQueCA9IHRyYW5zZm9ybWVkTG9j
YXRpb24ueCgpOwotICAgICAgICBtb3VzZUV2ZW50LnkgPSB0cmFuc2Zvcm1lZExvY2F0aW9uLnko
KTsKLSAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
SW5wdXRFdmVudCo+KCZtb3VzZUV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYklucHV0RXZlbnQ6
OmlzR2VzdHVyZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAgICAgIGdlc3R1cmVF
dmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCk7
Ci0KLSAgICAgICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2lu
dChtX2xheWVyVHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oV2ViRmxvYXRQ
b2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKSk7Ci0gICAgICAgIGdlc3R1cmVF
dmVudC54ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIGdlc3R1cmVFdmVudC55
ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi55KCk7Ci0gICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1l
ZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAg
ICBpZiAobV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
cigpKSB7CisgICAgICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKKyAgICAgICAgV2ViR2Vz
dHVyZUV2ZW50IGdlc3R1cmVFdmVudDsKKyAgICAgICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91
c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgICAgICAgbW91c2VFdmVudCA9
ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOworICAgICAg
ICAgICAgbW91c2VFdmVudC54ID0gbW91c2VFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7Cisg
ICAgICAgICAgICBtb3VzZUV2ZW50LnkgPSBtb3VzZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3Io
KTsKKyAgICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0
IFdlYklucHV0RXZlbnQqPigmbW91c2VFdmVudCk7CisgICAgICAgIH0gZWxzZSBpZiAoV2ViSW5w
dXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKKyAgICAgICAg
ICAgIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigm
aW5wdXRFdmVudCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueCA9IGdlc3R1cmVFdmVudC54
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueSA9IGdlc3R1
cmVFdmVudC55IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBpbnB1dEV2ZW50VHJh
bnNmb3JtZWQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJmdlc3R1cmVFdmVu
dCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhbmRsZWQgPSBQYWdlV2lkZ2V0RGVs
ZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKmlucHV0RXZlbnRU
cmFuc2Zvcm1lZCk7Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXRE
ZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCAqaW5wdXRFdmVu
dFRyYW5zZm9ybWVkKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgp
CkBAIC0yODg1LDM0ICsyODgzLDQwIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpjbGFtcFBhZ2VTY2Fs
ZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIHJldHVybiBtaW4obWF4KHNj
YWxlRmFjdG9yLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpLCBtX21heGltdW1QYWdlU2NhbGVG
YWN0b3IpOwogfQogCi1XZWJQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNjYWxlKGNv
bnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKQorSW50UG9pbnQgV2ViVmlld0ltcGw6
OmNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkg
Y29uc3QKIHsKLSAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXplLiBXZSBuZWVk
IHRvIGNvbnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCi0gICAgV2ViU2l6ZSBjb250
ZW50U2l6ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICBmbG9hdCBkZWx0YVNj
YWxlID0gc2NhbGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgZG9jV2lkdGhBdE5ld1Nj
YWxlID0gY29udGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOwotICAgIGludCBkb2NIZWlnaHRB
dE5ld1NjYWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsKLSAgICBpbnQgdmll
d1dpZHRoID0gbV9zaXplLndpZHRoOwotICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdo
dDsKLQotICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0
aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgogICAgIEludFBvaW50IGNsYW1wZWRPZmZzZXQgPSBvZmZz
ZXQ7Ci0gICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQo
ZG9jV2lkdGhBdE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0gdmll
d0hlaWdodCkpOwotICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAg
IGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
cigpKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxlZCBjb250ZW50IHNpemUuIFdlIG5l
ZWQgdG8gY29udmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZhY3Rvci4KKyAgICAgICAgV2ViU2l6
ZSBjb250ZW50U2l6ZSA9IHVuc2NhbGVkQ29udGVudHNTaXplKCk7CisgICAgICAgIGludCBkb2NX
aWR0aEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS53aWR0aCAqIHNjYWxlOworICAgICAgICBpbnQg
ZG9jSGVpZ2h0QXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLmhlaWdodCAqIHNjYWxlOworICAgICAg
ICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOworICAgICAgICBpbnQgdmlld0hlaWdodCA9
IG1fc2l6ZS5oZWlnaHQ7CisKKyAgICAgICAgLy8gRW5mb3JjZSB0aGUgbWF4aW11bSBhbmQgbWlu
aW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBuZXcgc2NhbGUuCisgICAgICAgIGNsYW1wZWRP
ZmZzZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGRvY1dpZHRoQXROZXdTY2Fs
ZSAtIHZpZXdXaWR0aCwgZG9jSGVpZ2h0QXROZXdTY2FsZSAtIHZpZXdIZWlnaHQpKTsKKyAgICAg
ICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQodW5z
Y2FsZWRDb250ZW50c1NpemUoKSAtIHNjYWxlZFNpemUoc2NhbGUpKSk7CisgICAgICAgIGNsYW1w
ZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIH0KKwogICAgIHJldHVybiBjbGFt
cGVkT2Zmc2V0OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JQcmVz
ZXJ2aW5nU2Nyb2xsT2Zmc2V0KGZsb2F0IHNjYWxlRmFjdG9yKQogewotICAgIC8vIFBpY2sgYSBz
Y2FsZSBmYWN0b3IgdGhhdCBpcyB3aXRoaW4gdGhlIGV4cGVjdGVkIGxpbWl0cwogICAgIHNjYWxl
RmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZUZhY3Rvcik7CiAKLSAg
ICBJbnRQb2ludCBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlKG1haW5GcmFtZSgpLT5zY3JvbGxPZmZz
ZXQoKS53aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhlaWdodCk7Ci0gICAgZmxv
YXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgc2Ny
b2xsT2Zmc2V0QXROZXdTY2FsZS5zY2FsZShkZWx0YVNjYWxlLCBkZWx0YVNjYWxlKTsKKyAgICBJ
bnRQb2ludCBzY3JvbGxPZmZzZXQobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBt
YWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKKyAgICBpZiAoIW1fcGFnZS0+c2V0
dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkgeworICAgICAgICBm
bG9hdCBkZWx0YVNjYWxlID0gc2NhbGVGYWN0b3IgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgc2Nyb2xsT2Zmc2V0LnNjYWxlKGRlbHRhU2NhbGUsIGRlbHRhU2NhbGUpOworICAgIH0KKyAg
ICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0LCBzY2FsZUZh
Y3Rvcik7CiAKLSAgICBXZWJQb2ludCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSA9IGNsYW1wT2Zm
c2V0QXRTY2FsZShzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLCBzY2FsZUZhY3Rvcik7Ci0gICAgc2V0
UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSk7Cisg
ICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBzY3JvbGxPZmZzZXQpOwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYlBvaW50JiBvcmlnaW4pCkBAIC0yOTIzLDIyICsyOTI3LDE3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9p
bnQmIG9yaWdpbikKICAgICBpZiAoIXNjYWxlRmFjdG9yKQogICAgICAgICBzY2FsZUZhY3RvciA9
IDE7CiAKKyAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQgPSBvcmlnaW47CiAgICAgc2NhbGVGYWN0
b3IgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKLSAgICBXZWJQ
b2ludCBzY3JvbGxPZmZzZXQ7Ci0gICAgaWYgKCFtX3BhZ2UtPnNldHRpbmdzKCktPmFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKLSAgICAgICAgLy8gSWYgcGFnZSBzY2FsZSBp
cyBub3QgYXBwbGllZCBpbiB0aGUgY29tcG9zaXRvciwgdGhlbiB0aGUgc2Nyb2xsIG9mZnNldHMg
c2hvdWxkCi0gICAgICAgIC8vIGJlIG1vZGlmaWVkIGJ5IHRoZSBzY2FsZSBmYWN0b3IuCi0gICAg
ICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRTY2FsZShvcmlnaW4sIHNjYWxlRmFjdG9y
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBJbnRQb2ludCBvZmZzZXQgPSBvcmlnaW47Ci0gICAg
ICAgIFdlYlNpemUgY29udGVudFNpemUgPSBtYWluRnJhbWUoKS0+Y29udGVudHNTaXplKCk7Ci0g
ICAgICAgIG9mZnNldC5zaHJ1bmtUbyhJbnRQb2ludChjb250ZW50U2l6ZS53aWR0aCAtIG1fc2l6
ZS53aWR0aCwgY29udGVudFNpemUuaGVpZ2h0IC0gbV9zaXplLmhlaWdodCkpOwotICAgICAgICBv
ZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgICAgICBzY3JvbGxPZmZzZXQgPSBvZmZz
ZXQ7Ci0gICAgfQorICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRTY2FsZShzY3JvbGxP
ZmZzZXQsIHNjYWxlRmFjdG9yKTsKKworICAgIHBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNj
YWxlRmFjdG9yLCBJbnRQb2ludChzY3JvbGxPZmZzZXQpKTsKIAotICAgIHBhZ2UoKS0+c2V0UGFn
ZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBzY3JvbGxPZmZzZXQpOwogICAgIG1fcGFnZVNjYWxl
RmFjdG9ySXNTZXQgPSB0cnVlOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisjZW5kaWYKIH0KIAogZmxvYXQgV2ViVmll
d0ltcGw6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKQEAgLTMwMjIsMTIgKzMwMjEsMTYgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0SWdub3JlVmlld3BvcnRUYWdNYXhpbXVtU2NhbGUoYm9vbCBm
bGFnKQogICAgIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kaXNwYXRjaFZpZXdwb3J0UHJv
cGVydGllc0RpZENoYW5nZShwYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT52aWV3cG9y
dEFyZ3VtZW50cygpKTsKIH0KIAotc3RhdGljIEludFNpemUgdW5zY2FsZWRDb250ZW50c1NpemUo
RnJhbWUqIGZyYW1lKQorSW50U2l6ZSBXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50c1NpemUo
KSBjb25zdAogeworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAg
UmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXJv
b3QpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7Ci0gICAgcmV0dXJuIHJvb3QtPnVuc2NhbGVk
RG9jdW1lbnRSZWN0KCkuc2l6ZSgpOworCisgICAgaWYgKCFtX3BhZ2UtPnNldHRpbmdzKCktPmFw
cGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCisgICAgICAgIHJldHVybiByb290LT51
bnNjYWxlZERvY3VtZW50UmVjdCgpLnNpemUoKTsKKyAgICByZXR1cm4gcm9vdC0+ZG9jdW1lbnRS
ZWN0KCkuc2l6ZSgpOwogfQogCiBJbnRTaXplIFdlYlZpZXdJbXBsOjpsYXlvdXRTaXplKCkgY29u
c3QKQEAgLTMwMzUsNyArMzAzOCw4IEBAIEludFNpemUgV2ViVmlld0ltcGw6OmxheW91dFNpemUo
KSBjb25zdAogICAgIGlmICghaXNGaXhlZExheW91dE1vZGVFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBtX3NpemU7CiAKLSAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gdW5zY2FsZWRDb250ZW50
c1NpemUocGFnZSgpLT5tYWluRnJhbWUoKSk7CisgICAgSW50U2l6ZSBjb250ZW50U2l6ZSA9IHVu
c2NhbGVkQ29udGVudHNTaXplKCk7CisKICAgICBpZiAoZml4ZWRMYXlvdXRTaXplKCkud2lkdGgg
Pj0gY29udGVudFNpemUud2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZpeGVkTGF5b3V0U2l6ZSgp
OwogCkBAIC0zMDYzLDcgKzMwNjcsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNj
YWxlRmFjdG9yTGltaXRzKCkKICAgICBpbnQgdmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFy
cyA9IG1fc2l6ZS53aWR0aDsKICAgICBpZiAodmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFy
cyAmJiB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICF2aWV3LT52ZXJ0aWNhbFNjcm9sbGJh
cigpLT5pc092ZXJsYXlTY3JvbGxiYXIoKSkKICAgICAgICAgdmlld1dpZHRoTm90SW5jbHVkaW5n
U2Nyb2xsYmFycyAtPSB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0aCgpOwotICAgIGlu
dCB1bnNjYWxlZENvbnRlbnRzV2lkdGggPSB1bnNjYWxlZENvbnRlbnRzU2l6ZShwYWdlKCktPm1h
aW5GcmFtZSgpKS53aWR0aCgpOworICAgIGludCB1bnNjYWxlZENvbnRlbnRzV2lkdGggPSB1bnNj
YWxlZENvbnRlbnRzU2l6ZSgpLndpZHRoKCk7CiAgICAgaWYgKHZpZXdXaWR0aE5vdEluY2x1ZGlu
Z1Njcm9sbGJhcnMgJiYgdW5zY2FsZWRDb250ZW50c1dpZHRoKSB7CiAgICAgICAgIC8vIExpbWl0
IHBhZ2Ugc2NhbGluZyBkb3duIHRvIHRoZSBkb2N1bWVudCB3aWR0aC4KICAgICAgICAgbV9taW5p
bXVtUGFnZVNjYWxlRmFjdG9yID0gbWF4KG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvciwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMpIC8gdW5zY2FsZWRD
b250ZW50c1dpZHRoKTsKQEAgLTM3MTIsMTUgKzM3MTYsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkQ2hhbmdlQ29udGVudHNTaXplKCkKICAgICB9IGVsc2UKICAgICAgICAgbWF5TmVlZExheW91
dCA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKIAotICAgIEZyYW1lVmlldyogdmll
dyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHNldHRpbmdzSW1wbCgp
LT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHZpZXcgJiYgdmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KHRydWUpLndpZHRoKCkgIT0gbGF5b3V0U2l6ZSgpLndpZHRoKCkpIHsK
LSAgICAgICAgdmlldy0+cmVzaXplKGxheW91dFNpemUoKSk7Ci0gICAgICAgIG1heU5lZWRMYXlv
dXQgPSB0cnVlOwotICAgIH0KLQogICAgIC8vIGRpZENoYW5nZUNvbnRlbnRzU2l6ZSgpIG1heSBi
ZSBjYWxsZWQgZnJvbSBGcmFtZVZpZXc6OmxheW91dDsgd2UgbmVlZCB0bwogICAgIC8vIHJlbGF5
b3V0IHRvIGF2b2lkIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiB0aGF0IG5lZWRzTGF5b3V0KCkg
aXNuJ3Qgc2V0CiAgICAgLy8gYXQgdGhlIGVuZCBvZiBhIGxheW91dC4KKyAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwogICAgIGlmIChtYXlOZWVkTGF5
b3V0ICYmIHZpZXcgJiYgdmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5b3V0
KCk7CiAjZW5kaWYKQEAgLTQxODksMTYgKzQxODgsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBk
YXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVjdCB2aXNpYmxl
UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8qIGluY2x1ZGUgc2Nyb2xsYmFy
cyAqLyk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKHZpZXctPnNjcm9sbFgoKSwgdmlldy0+c2Nyb2xs
WSgpKTsKIAotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydCh2aXNp
YmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCBzY3JvbGwsIHZpZXctPnNjcm9s
bE9yaWdpbigpKTsKLQotICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gdmlzaWJsZVJl
Y3Quc2l6ZSgpOworICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gbGF5b3V0U2l6ZSgp
OwogICAgIEludFNpemUgZGV2aWNlVmlld3BvcnRTaXplID0gbV9zaXplOwogICAgIGlmIChtX3dl
YlNldHRpbmdzLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAgICAg
IGRldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKIAorICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChkZXZpY2VWaWV3cG9ydFNpemUs
IHZpZXctPmNvbnRlbnRzU2l6ZSgpLCB2aWV3LT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3LT5zY3Jv
bGxPcmlnaW4oKSk7CisKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdwb3J0U2l6ZShsYXlv
dXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CiAgICAgbV9sYXllclRyZWVWaWV3
LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11
bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDk0NjdmODQwNGZmY2Y2ZGUzZjY3
NzMzZDgyNzc4OTU1ZjNhMDExNzguLmZiYTcxNmE3ZGJkMjZlZGEwOTk5YzFlZjM0MGFkNjA0OWI2
ODllYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDU3
LDYgKzQ1Nyw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFNpemUgZGlwU2l6ZSgpIGNv
bnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0OworICAgIFdlYkNv
cmU6OkludFNpemUgc2NhbGVkU2l6ZShmbG9hdCkgY29uc3Q7CiAKICAgICAvLyBTZXQgdGhlIGRp
c3Bvc2l0aW9uIGZvciBob3cgdGhpcyB3ZWJ2aWV3IGlzIHRvIGJlIGluaXRpYWxseSBzaG93bi4K
ICAgICB2b2lkIHNldEluaXRpYWxOYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Qb2xpY3kg
cG9saWN5KQpAQCAtNjA3LDcgKzYwOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBj
b21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxvYXQgY2xhbXBQYWdlU2NhbGVG
YWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7Ci0gICAgV2ViUG9pbnQgY2xhbXBPZmZzZXRBdFNj
YWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKTsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNl
dCwgZmxvYXQgc2NhbGUpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFNpemUgdW5zY2FsZWRDb250
ZW50c1NpemUoKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRTYXZlZFNjcm9sbEFuZFNjYWxlU3Rh
dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3Bw
CmluZGV4IDgyOTljMDg2MDQ4MTUyZDU5YzVjYmNlMDE3ODVjMDdlODIyZjRlOTQuLjg2Y2NmMmZh
NjRmZmRkNmFmNjZiMWY3ZTE5NWYzM2IwNzFhMDk5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJGcmFtZVRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
UmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIK
QEAgLTMwNyw2ICszMDgsMTEwIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNjYWxlRmFjdG9yU2hv
dWxkTm90T3NjaWxsYXRlKQogICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKIH0KIAorVEVTVF9G
KFdlYkZyYW1lVGVzdCwgc2V0UGFnZVNjYWxlRmFjdG9yRG9lc05vdExheW91dCkKK3sKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4
ZWRMYXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5m
by5kZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7Cisg
ICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJ
bXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVX
ZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAm
Y2xpZW50KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCkt
PnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJ
bXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRp
bmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXpl
KFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1w
bC0+bGF5b3V0KCk7CisKKyAgICBpbnQgcHJldkxheW91dENvdW50ID0gd2ViVmlld0ltcGwtPm1h
aW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dENvdW50KCk7CisgICAgd2ViVmlld0lt
cGwtPnNldFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQb2ludCgpKTsKKyAgICBFWFBFQ1RfRVEoZmFs
c2UsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5uZWVkc0xheW91
dCgpKTsKKyAgICBFWFBFQ1RfRVEocHJldkxheW91dENvdW50LCB3ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0Q291bnQoKSk7Cit9CisKK1RFU1RfRihXZWJG
cmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvcldyaXR0ZW5Ub0hpc3RvcnlJdGVtKQoreworICAgIHJl
Z2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpeGVkX2xheW91dC5odG1sIik7CisKKyAgICBGaXhl
ZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZv
LmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAg
ICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0lt
cGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZj
bGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+
c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0lt
cGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGlu
Z3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUo
V2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBs
LT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMywgV2Vi
UG9pbnQoKSk7CisgICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigp
LT5oaXN0b3J5KCktPnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CisgICAgd2ViVmlld0lt
cGwtPnNldFBhZ2VTY2FsZUZhY3RvcigxLCBXZWJQb2ludCgpKTsKKyAgICB3ZWJWaWV3SW1wbC0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVzdG9yZVNjcm9sbFBv
c2l0aW9uQW5kVmlld1N0YXRlKCk7CisgICAgRVhQRUNUX0VRKDMsIHdlYlZpZXdJbXBsLT5wYWdl
U2NhbGVGYWN0b3IoKSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3Rv
clNocmlua3NWaWV3cG9ydCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhl
ZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGll
bnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAg
aW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOwor
ICAgIGludCB2aWV3cG9ydFdpZHRoTWludXNTY3JvbGxiYXIgPSA2NDAgLSAxNTsKKyAgICBpbnQg
dmlld3BvcnRIZWlnaHRNaW51c1Njcm9sbGJhciA9IDQ4MCAtIDE1OworCisgICAgV2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxw
ZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwi
LCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFw
cGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwt
PnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
ICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmll
d0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3
SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxl
RmFjdG9yKDIsIFdlYlBvaW50KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSB1bnNjYWxlZFNp
emUgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+dW5zY2FsZWRW
aXNpYmxlQ29udGVudFNpemUodHJ1ZSk7CisgICAgRVhQRUNUX0VRKHZpZXdwb3J0V2lkdGgsIHVu
c2NhbGVkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEodmlld3BvcnRIZWlnaHQsIHVuc2Nh
bGVkU2l6ZS5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHVuc2NhbGVkU2l6ZU1p
bnVzU2Nyb2xsYmFyID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkt
PnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEodmlld3Bv
cnRXaWR0aE1pbnVzU2Nyb2xsYmFyLCB1bnNjYWxlZFNpemVNaW51c1Njcm9sbGJhci53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEodmlld3BvcnRIZWlnaHRNaW51c1Njcm9sbGJhciwgdW5zY2FsZWRT
aXplTWludXNTY3JvbGxiYXIuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBzY2Fs
ZWRTaXplID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnZpc2li
bGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBFWFBFQ1RfRVEoY2VpbCh2aWV3cG9ydFdpZHRo
TWludXNTY3JvbGxiYXIgLyAyLjApLCBzY2FsZWRTaXplLndpZHRoKCkpOworICAgIEVYUEVDVF9F
UShjZWlsKHZpZXdwb3J0SGVpZ2h0TWludXNTY3JvbGxiYXIgLyAyLjApLCBzY2FsZWRTaXplLmhl
aWdodCgpKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFnZVNjYWxlRmFjdG9yRG9lc05v
dEFwcGx5Q3NzVHJhbnNmb3JtKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZp
eGVkX2xheW91dC5odG1sIik7CisKKyAgICBGaXhlZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNs
aWVudDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZvLmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAg
ICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7
CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1w
bCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJm
aXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+
c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsK
KyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0
cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRy
dWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3
cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJ
bXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgV2ViUG9pbnQoKSk7CisKKyAgICBFWFBFQ1RfRVEo
MSwgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKSk7
CisgICAgRVhQRUNUX0VRKDk4MCwgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmNv
bnRlbnRSZW5kZXJlcigpLT51bnNjYWxlZERvY3VtZW50UmVjdCgpLndpZHRoKCkpOworICAgIEVY
UEVDVF9FUSg5ODAsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5j
b250ZW50c1NpemUoKS53aWR0aCgpKTsKK30KICNlbmRpZgogCiBURVNUX0YoV2ViRnJhbWVUZXN0
LCBDYW5PdmVycmlkZU1heGltdW1TY2FsZUZhY3RvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184836</attachid>
            <date>2013-01-25 16:20:21 -0800</date>
            <delta_ts>2013-01-28 10:41:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130125161712.patch</filename>
            <type>text/plain</type>
            <size>37049</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiYjdkNWFhMzE0NGMz
ZWVmMzcwN2MyYWU0MGY2MjI0YzU5OTEyNTFhLi4yYTk4MDcxOTUyNjdhODJmNDk0MmM0NDRiMGUz
N2JlYmUxZWJkNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yNSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjUgIEViZXJoYXJkIEdyYWV0aGVyICA8ZWdyYWV0
aGVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGNoZWNrYm94IGZv
ciBjb250aW51b3VzIHBhaW50aW5nIHRvIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDk2NTk0OTI4MWZjZTkyMmYxMGYzN2QyZTdjYjQ0ZGMwYTIyYjY4OTQuLjVjMGExMjVl
YTEwM2IyYjMxNWZlZGVjMTAyNWRlNTI1YTUzNzU0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1
OSBAQAogMjAxMy0wMS0yNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBNYWtlIHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VT
Y2FsZUluQ29tcG9zaXRvciBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDc0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJZiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFi
bGVkIChDaHJvbWl1bS1vbmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRp
cmUgZG9jdW1lbnQgZXhwYW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAg
ICAgdmlld3BvcnQgc2hyaW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VT
Y2FsZUZhY3RvciB0bworICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVo
YXZpb3IsIGFuZCBzaW1wbGlmaWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRv
IHN0b3AgaGlkaW5nIHRoZSB0cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAg
ICAgIEkgdmVyaWZpZWQgdGhhdCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBj
YWxsZXJzIG9mCisgICAgICAgIHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJl
IGNsaXAtbGF5ZXIgc2l6ZSwKKyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91
dCBtb2RlLCBhbmQgdGV4dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmln
aW5hbCB1bnNjYWxlZCBzaXplLiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAg
ICAgdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4K
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFj
dG9yIHRvIHBlcmZvcm0gbm8KKyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBw
bHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28g
d3JpdGVzIHBhZ2VTY2FsZUZhY3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5n
CisgICAgICAgIGZyYW1lU2NhbGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9y
IGNoYW5nZXMgYXJlIHRpZWQgdG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisg
ICAgICAgIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0
cy4KKworICAgICAgICBOZXcgdW5pdCB0ZXN0cyBpbiBXZWJGcmFtZVRlc3QuY3BwLgorCisgICAg
ICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmxheW91dFNpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZpc2li
bGVDb250ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoU2Nyb2xsVmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxWaWV3OjpsYXlvdXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpsYXlvdXRIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpm
cmFtZVZpZXdEaWRDaGFuZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0QXV0b3NpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvc2l6ZXI6OnByb2Nl
c3NTdWJ0cmVlKToKKworMjAxMy0wMS0yNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBDYWxsIEZyYW1lVmlldzo6Y29udGVudHNSZXNpemVkKCkgd2hl
biBzZXR0aW5nIGZpeGVkIGxheW91dCBzaXplCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAwMDRhMTMwZGNmZDYyNzAyN2M4YWNiOGFmZDU1M2U4NjllNDM0MTZkLi5iZTQxODIzZjdkMTQ3
ZmMxZTU5YjBjZDdhNDM4MGY2NGQxZjk4ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDQ5IEBACiAyMDEzLTAxLTI1ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hy
b21pdW0ub3JnPgogCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3IGlu
IGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0dGluZyksCisgICAgICAgIGluc3RlYWQg
b2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcgYXMgdGhlIHVzZXIgcGluY2ggem9vbXMs
IHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGluc3RlYWQuIFRoaXMgcGF0Y2ggYXBwbGll
cyB0aGUgcGFnZVNjYWxlRmFjdG9yIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVjdCB0byBn
ZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZXMgQ2hyb21pdW0ncworICAgICAgICByZXNp
emUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9tIFdlYkNv
cmUuCisKKyAgICAgICAgSSB2ZXJpZmllZCB0aGF0IHRoZSBzY2FsaW5nIG1ha2VzIHNlbnNlIGZv
ciBhbGwgdGhlIGNhbGxlcnMgb2YKKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0LiBUaGUgZXhj
ZXB0aW9ucyBhcmUgY2xpcC1sYXllciBzaXplLAorICAgICAgICBsYXlvdXQgc2l6ZSBpbiBub24t
Zml4ZWQtbGF5b3V0IG1vZGUsIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdoaWNoIG5lZWQKKyAgICAg
ICAgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZSBJIGFkZGVkIGEgbmV3IG1l
dGhvZAorICAgICAgICB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZpZXcv
RnJhbWVWaWV3LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyBQYWdlOjpzZXRQ
YWdlU2NhbGVGYWN0b3IgdG8gcGVyZm9ybSBubworICAgICAgICBpbnZhbGlkYXRlcyBvciBsYXlv
dXQgd2hlbiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlLAorICAgICAg
ICBhbmQgYWxzbyB3cml0ZXMgcGFnZVNjYWxlRmFjdG9yIGludG8gSGlzdG9yeUl0ZW1zIGluc3Rl
YWQgb2YgdXNpbmcKKyAgICAgICAgZnJhbWVTY2FsZUZhY3Rvci4KKworICAgICAgICBTaW5jZSBh
bGwgYmVoYXZpb3IgY2hhbmdlcyBhcmUgdGllZCB0byBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvciwKKyAgICAgICAgdGhpcyBwYXRjaCBzaG91bGQgYmUgYSBuby1vcCBmb3Igbm9uLUNo
cm9taXVtIHBvcnRzLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50c1NpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcDoKKworMjAxMy0wMS0yNSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFz
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBDYWxsIEZyYW1lVmlldzo6Y29udGVudHNSZXNpemVk
KCkgd2hlbiBzZXR0aW5nIGZpeGVkIGxheW91dCBzaXplCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA2MzU0NzAyZjEyOGE3
ZDE0ZTA2Njg4NTY4NWU0MDRmNTU5ZGIzNzJiLi44NTIzMWE5YjAzNmE0MWE2ZDBmNjUxM2I4YTIz
ZTMwMzZiNmU5NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMTAyLDkgKzEwMiw4IEBAIHB1YmxpYzoKICAgICAvLyBt
b2RlKS4KICAgICB2aXJ0dWFsIFdlYlNpemUgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAw
OwogCi0gICAgLy8gR2l2ZXMgdGhlIGNvcnJlY3RlZCBsb2NhdGlvbiBmb3IgYW4gZXZlbnQsIGFj
Y291bnRpbmcgZm9yIHRoZSBwaW5jaC16b29tIHRyYW5zZm9ybWF0aW9uCi0gICAgLy8gaW4gdGhl
IGNvbXBvc2l0b3IuCi0gICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFkanVzdEV2ZW50UG9pbnRG
b3JQaW5jaFpvb20oY29uc3QgV2ViRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHJvbGwKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9p
bnQgYWRqdXN0RXZlbnRQb2ludEZvclBpbmNoWm9vbShjb25zdCBXZWJGbG9hdFBvaW50JiBwKSBj
b25zdCB7IHJldHVybiBwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5k
ZXggYTJmNzJkMDhkNWM5ZDU1MGE2MzM4YTkzMjY2OWZkZjdkNTY4MmE2YS4uNDU2NjM1YzI0NzQ4
ODBkMjJkOGM1ODI1MTQzODRlM2NkMGQ3NGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC04Nyw4ICs4NywxMCBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0q
IGl0ZW0pCiAgICAgZWxzZQogICAgICAgICBpdGVtLT5zZXRTY3JvbGxQb2ludChtX2ZyYW1lLT52
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaXRlbS0+c2V0UGFnZVNjYWxlRmFjdG9y
KG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAgCisgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAocGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBtX2Zy
YW1lKQorICAgICAgICBpdGVtLT5zZXRQYWdlU2NhbGVGYWN0b3IocGFnZS0+cGFnZVNjYWxlRmFj
dG9yKCkpOworCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGdyZWF0IHRvIHdvcmsgb3V0IGEg
d2F5IHRvIHB1dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhyb3Vn
aCB0byB0aGUgY2xpZW50LgogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2F2ZVZp
ZXdTdGF0ZVRvSXRlbShpdGVtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0
MWQ1MjRjMTFkZjVmYjI4ODQyNzdkODljYzExYTM2ZWVjZGE2NGFiLi44NjYzYTEzOGUyYjZlNDkw
NjdjOWUzMjNhYWJkM2E4ODBhNzJlOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yODM3LDYgKzI4MzcsMTcgQEAgSW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd1Jlc2l6ZXJSZWN0
KCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPndpbmRvd1Jlc2l6ZXJSZWN0KCk7
CiB9CiAKK2Zsb2F0IEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVy
biAxOworCisgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpIHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdl
U2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1iKQogewogICAgIFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA1MWM2NGYzODQy
YTc0NzEyMGViNjAxYzFhMjVlNmQwM2MzNWU4MTEyLi5kMTNhNzY3OTA4M2VkNGZlZjY5NWY5YjBl
MzAzOGFjNzRkY2JmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE4Myw2ICsxODMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNv
bnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsKICAgICB2b2lkIHNjcm9sbFBvc2l0
aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzYTM5
MTk2YWU0ZjZhNDk2N2I3Y2FiMTljMDYxN2ViYTY4ZmU2MTEyLi5hZWNiYTMzOTYxNjU2YWM1YzQx
NTUzYmJkM2I5NzIxYTBhMmRkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTcyNSw3ICs3MjUs
OCBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIG9yaWdpbikKIAogICAgIGlmIChzY2FsZSA9PSBtX3BhZ2VTY2FsZUZhY3Rvcikgewog
ICAgICAgICBpZiAodmlldyAmJiAodmlldy0+c2Nyb2xsUG9zaXRpb24oKSAhPSBvcmlnaW4gfHwg
dmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgICAgICBpZiAoIW1f
c2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
ICAgICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ob3JpZ2luKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CkBAIC03MzMsMjAgKzczNCwyMiBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAogICAgIG1f
cGFnZVNjYWxlRmFjdG9yID0gc2NhbGU7CiAKLSAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAg
ICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZG9jdW1lbnQt
PnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCi0gICAgZG9jdW1lbnQtPnJlY2Fs
Y1N0eWxlKE5vZGU6OkZvcmNlKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKE5vZGU6
OkZvcmNlKTsKIAotICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ugb24gUmVuZGVyVmlldyBkb2Vzbid0
IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBjb250ZW50cy4KLSAgICBtYWluRnJh
bWUoKS0+dmlldygpLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KExheW91dFJlY3Q6OmluZmluaXRl
UmVjdCgpKSk7CisgICAgICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ugb24gUmVuZGVyVmlldyBkb2Vz
bid0IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBjb250ZW50cy4KKyAgICAgICAg
bWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdChMYXlvdXRSZWN0Ojpp
bmZpbml0ZVJlY3QoKSkpOworICAgIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBtYWluRnJhbWUoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAj
ZW5kaWYKIAogICAgIGlmICh2aWV3ICYmIHZpZXctPnNjcm9sbFBvc2l0aW9uKCkgIT0gb3JpZ2lu
KSB7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVuZGVy
ZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3LT5kaWRGaXJzdExheW91dCgpKQorICAgICAgICBp
ZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgZG9j
dW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkg
JiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAgICAgIHZpZXctPmxheW91dCgpOwog
ICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMzhlZmZjMDBmODgxMWE5MjRiYjc1YTI3
ODZmMjllNDZlYWU0MTM4Mi4uNGVkYWRmNmIyMmJmOThlOTZmNDRhNjI2YzFlMjAxNDE4MWNhODI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTIyNSwxNCArMjI1
LDEzIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVsZWdh
dGVzU2Nyb2xsaW5nKQogICAgIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpOwogfQogCi0j
aWYgIVBMQVRGT1JNKEdUSykKLUludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0
KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2Nh
bGVkVmlzaWJsZUNvbnRlbnRTaXplKGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7CiAg
ICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVD
b250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZp
c2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOwogCiAgICAgaWYgKCFt
X2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fZml4
ZWRWaXNpYmxlQ29udGVudFJlY3Q7CisgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0LnNpemUoKTsKIAogICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsKICAg
ICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9IDA7CkBAIC0yNDQsMjYgKzI0MywyOCBA
QCBJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3Jv
bGxiYXJzKSBjb25zdAogICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFo
b3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdo
dCgpIDogMDsKICAgICB9CiAKLSAgICByZXR1cm4gSW50UmVjdChtX3Njcm9sbE9mZnNldC53aWR0
aCgpLAotICAgICAgICAgICAgICAgICAgIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAotICAgICAg
ICAgICAgICAgICAgIG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCksIAor
ICAgIHJldHVybiBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0
aCksCiAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9s
bGJhckhlaWdodCkpOwogfQotI2VuZGlmCiAKLUludFNpemUgU2Nyb2xsVmlldzo6bGF5b3V0U2l6
ZSgpIGNvbnN0CisjaWYgIVBMQVRGT1JNKEdUSykKK0ludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJs
ZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2li
bGVTaXplKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZTsKLX0KKyAgICBpZiAocGxhdGZvcm1XaWRnZXQo
KSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3Jv
bGxiYXJzKTsKIAotaW50IFNjcm9sbFZpZXc6OmxheW91dFdpZHRoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8g
dmlzaWJsZVdpZHRoKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpOworICAgIGlmICghbV9m
aXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2ZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0OworCisgICAgRmxvYXRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9
IHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGluY2x1ZGVTY3JvbGxiYXJzKTsKKyAgICB2aXNp
YmxlQ29udGVudFNpemUuc2NhbGUoMSAvIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSk7Cisg
ICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQpLCBleHBhbmRlZEludFNp
emUodmlzaWJsZUNvbnRlbnRTaXplKSk7CiB9CisjZW5kaWYKIAotaW50IFNjcm9sbFZpZXc6Omxh
eW91dEhlaWdodCgpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZpZXc6OmxheW91dFNpemUoKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5pc0VtcHR5KCkgfHwgIW1fdXNlRml4
ZWRMYXlvdXQgPyB2aXNpYmxlSGVpZ2h0KCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS5oZWlnaHQoKTsK
KyAgICByZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5
b3V0ID8gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UpIDogbV9maXhlZExheW91dFNp
emU7CiB9CiAKIEludFNpemUgU2Nyb2xsVmlldzo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBlMDQzZjZlOWY3NDgzZGM0MWM0ODVi
YzFkNWYxYTA1NDA4NjRjNzQ2Li5mZTdiMDEwMTE1Mjg3MWMwMjFlZWZkMTUxYjk4NjE5YjZkY2Y5
MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xNTEsMTEgKzE1MSwx
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQogICAgIHZpcnR1YWwg
aW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoKS5oZWlnaHQoKTsgfQogCisgICAgLy8gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgp
IGlzIGNvbXB1dGVkIGZyb20gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoKSBkaXZpZGVkIGJ5
IHRoZSB2YWx1ZSBvZiB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yLgorICAgIC8vIHZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IgaXMgdXN1YWxseSAxLCBleGNlcHQgd2hlbiB0aGUgc2V0dGluZyBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlIGFuZCB0aGUKKyAgICAvLyBT
Y3JvbGxWaWV3IGlzIHRoZSBtYWluIGZyYW1lOyBpbiB0aGF0IGNhc2UsIHZpc2libGVDb250ZW50
U2NhbGVGYWN0b3IgaXMgZXF1YWwgdG8gdGhlIHBhZ2UncyBwYWdlU2NhbGVGYWN0b3IuCisgICAg
Ly8gUG9ydHMgdGhhdCBkb24ndCB1c2UgcGFnZVNjYWxlRmFjdG9yIGNhbiB0cmVhdCB1bnNjYWxl
ZFZpc2libGVDb250ZW50U2l6ZSBhbmQgdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpIGFzIGVx
dWl2YWxlbnQuCisgICAgSW50U2l6ZSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShib29sIGlu
Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHZpc2libGVDb250ZW50
U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9CisKICAgICAvLyBGdW5jdGlvbnMgZm9y
IGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUKICAg
ICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZhbHVl
IHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBzaXpl
IGluc3RlYWQuCiAgICAgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IGxheW91
dFdpZHRoKCkgY29uc3Q7Ci0gICAgaW50IGxheW91dEhlaWdodCgpIGNvbnN0OworICAgIGludCBs
YXlvdXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dFNpemUoKS53aWR0aCgpOyB9CisgICAg
aW50IGxheW91dEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dFNpemUoKS5oZWlnaHQoKTsg
fQogICAgIEludFNpemUgZml4ZWRMYXlvdXRTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaXhl
ZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNmIyOTdhZWQ2NWQwMjM3NjczN2IwNTVkNDg3N2ViMTc5YTUwMjg3NC4u
OWE1M2RhMTU1YTJiMzVhMTkyMzA0ZWY0YzUyMGQ2N2U5ZDU2NmU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTExNjks
NyArMTE2OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFu
Z2VTaXplKCkKIHsKICAgICBpZiAobV9jbGlwTGF5ZXIpIHsKICAgICAgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAgICBtX2NsaXBMYXll
ci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSAvKiBleGNsdWRl
IHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZy
YW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UgLyogZXhjbHVkZSBzY3Jv
bGxiYXJzICovKSk7CiAKICAgICAgICAgZnJhbWVWaWV3RGlkU2Nyb2xsKCk7CiAgICAgICAgIHVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKTsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpCiAgICAgfQog
ICAgIGlmIChtX2NsaXBMYXllcikgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1f
cmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAq
Lykuc2l6ZSgpKTsKKyAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUoZnJhbWVWaWV3LT51bnNj
YWxlZFZpc2libGVDb250ZW50U2l6ZShmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pKTsK
ICAgICB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKaW5kZXggYjE4YjcwMmI1MWIyZDFmYzA5ODhlM2VlZDM4
YjYyZTNhYmQ1MzQ0OS4uNDIxYjI5NzQ4ZTAxYTYyMmEwMjc2OTk0M2QzNWMzZjBjZTlmOTg1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKFJlbmRlck9iamVjdCog
bGF5b3V0Um9vdCkKICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtX2RvY3VtZW50LT5zZXR0
aW5ncygpLT50ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSgpOwogICAgIGlmICh3aW5k
b3dJbmZvLndpbmRvd1NpemUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgaW5jbHVkZVNjcm9s
bGJhcnMgPSAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRBcHBseVNjcmVlbldpZHRo
T3ZlcnJpZGUobWFpbkZyYW1lKTsKLSAgICAgICAgd2luZG93SW5mby53aW5kb3dTaXplID0gbWFp
bkZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6
ZSgpOworICAgICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtYWluRnJhbWUtPnZpZXcoKS0+
dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoaW5jbHVkZVNjcm9sbGJhcnMpOwogICAgICAgICBp
ZiAoIW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IoKSkKICAgICAgICAgICAgIHdpbmRvd0luZm8ud2luZG93U2l6ZS5zY2FsZSgxIC8gbV9k
b2N1bWVudC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjY3NzU1YzdmODJkNWNjMmI2
NzI4YWFlNzJmZmI2YTRkYWVkNjU0Mi4uZjQyNzRhMDc2MDAwNTRiZTMzNGExYWFiMDQyZDIyODg3
MjdiMWUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtMTYxMSwxMSArMTYxMSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3aWxsU3RhcnRMaXZlUmVz
aXplKCkKICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT53aWxsU3RhcnRMaXZlUmVzaXplKCk7CiB9
CiAKLVdlYlNpemUgV2ViVmlld0ltcGw6OnNpemUoKQorSW50U2l6ZSBXZWJWaWV3SW1wbDo6c2Nh
bGVkU2l6ZShmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRml4ZWRM
YXlvdXRNb2RlRW5hYmxlZCgpICYmIHNldHRpbmdzSW1wbCgpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpKQotICAgICAgICByZXR1cm4gbGF5b3V0U2l6ZSgpOworICAgIEZsb2F0
U2l6ZSBzY2FsZWRTaXplID0gZGlwU2l6ZSgpOworICAgIHNjYWxlZFNpemUuc2NhbGUoMSAvIHBh
Z2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKTsK
K30KIAorV2ViU2l6ZSBXZWJWaWV3SW1wbDo6c2l6ZSgpCit7CiAgICAgcmV0dXJuIG1fc2l6ZTsK
IH0KIApAQCAtMTY0Niw3ICsxNjUwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzaXplKGNvbnN0
IFdlYlNpemUmIG5ld1NpemUpCiAgICAgaWYgKCFhZ2VudFByaXZhdGUgfHwgIWFnZW50UHJpdmF0
ZS0+bWV0cmljc092ZXJyaWRkZW4oKSkgewogICAgICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1l
ID0gbWFpbkZyYW1lSW1wbCgpOwogICAgICAgICBpZiAod2ViRnJhbWUtPmZyYW1lVmlldygpKQot
ICAgICAgICAgICAgd2ViRnJhbWUtPmZyYW1lVmlldygpLT5yZXNpemUoc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHdlYkZyYW1lLT5mcmFtZVZpZXcoKS0+cmVzaXplKG1fc2l6ZSk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKFZJRVdQT1JUKQpAQCAtMjA3NywzMCArMjA4MSwyNCBAQCBib29sIFdlYlZpZXdJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQot
ICAgICAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFn
ZS5nZXQoKSwgKnRoaXMsIGlucHV0RXZlbnQpOwotCiAgICAgY29uc3QgV2ViSW5wdXRFdmVudCog
aW5wdXRFdmVudFRyYW5zZm9ybWVkID0gJmlucHV0RXZlbnQ7Ci0gICAgV2ViTW91c2VFdmVudCBt
b3VzZUV2ZW50OwotICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQ7Ci0gICAgaWYgKFdl
YklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgewotICAgICAg
ICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRF
dmVudCk7Ci0KLSAgICAgICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJvdW5kZWRJ
bnRQb2ludChtX2xheWVyVHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oV2Vi
RmxvYXRQb2ludChtb3VzZUV2ZW50LngsIG1vdXNlRXZlbnQueSkpKTsKLSAgICAgICAgbW91c2VF
dmVudC54ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIG1vdXNlRXZlbnQueSA9
IHRyYW5zZm9ybWVkTG9jYXRpb24ueSgpOwotICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQg
PSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJm1vdXNlRXZlbnQpOwotICAgIH0g
ZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlw
ZSkpIHsKLSAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKLQotICAgICAgICBJbnRQb2ludCB0cmFuc2Zvcm1lZExv
Y2F0aW9uID0gcm91bmRlZEludFBvaW50KG1fbGF5ZXJUcmVlVmlldy0+YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbShXZWJGbG9hdFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSkpKTsKLSAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSB0cmFuc2Zvcm1lZExvY2F0aW9uLngoKTsK
LSAgICAgICAgZ2VzdHVyZUV2ZW50LnkgPSB0cmFuc2Zvcm1lZExvY2F0aW9uLnkoKTsKLSAgICAg
ICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVu
dCo+KCZnZXN0dXJlRXZlbnQpOworICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCktPmFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgV2ViTW91c2VFdmVudCBtb3Vz
ZUV2ZW50OworICAgICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZUV2ZW50OworICAgICAgICBp
ZiAoV2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Cisg
ICAgICAgICAgICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQq
PigmaW5wdXRFdmVudCk7CisgICAgICAgICAgICBtb3VzZUV2ZW50LnggPSBtb3VzZUV2ZW50Lngg
LyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIG1vdXNlRXZlbnQueSA9IG1vdXNlRXZl
bnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9y
bWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZtb3VzZUV2ZW50KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5cGUoaW5wdXRF
dmVudC50eXBlKSkgeworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNv
bnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKKyAgICAgICAgICAgIGdlc3R1cmVF
dmVudC54ID0gZ2VzdHVyZUV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAg
IGdlc3R1cmVFdmVudC55ID0gZ2VzdHVyZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklu
cHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wg
aGFuZGxlZCA9IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0
KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9ybWVkKTsKLSAgICByZXR1cm4gaGFuZGxlZDsK
KyAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFnZS5n
ZXQoKSwgKnRoaXMsICppbnB1dEV2ZW50VHJhbnNmb3JtZWQpOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjptb3VzZUNhcHR1cmVMb3N0KCkKQEAgLTI5MTUsMzQgKzI5MTMsNDAgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMoZmxvYXQgc2NhbGVGYWN0b3Ip
CiAgICAgcmV0dXJuIG1pbihtYXgoc2NhbGVGYWN0b3IsIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rv
ciksIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiB9CiAKLVdlYlBvaW50IFdlYlZpZXdJbXBs
OjpjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUp
CitJbnRQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IEludFBvaW50
JiBvZmZzZXQsIGZsb2F0IHNjYWxlKSBjb25zdAogewotICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxl
ZCBjb250ZW50IHNpemUuIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZh
Y3Rvci4KLSAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gbWFpbkZyYW1lKCktPmNvbnRlbnRzU2l6
ZSgpOwotICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZSAvIHBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgIGludCBkb2NXaWR0aEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS53aWR0aCAqIGRlbHRhU2Nh
bGU7Ci0gICAgaW50IGRvY0hlaWdodEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS5oZWlnaHQgKiBk
ZWx0YVNjYWxlOwotICAgIGludCB2aWV3V2lkdGggPSBtX3NpemUud2lkdGg7Ci0gICAgaW50IHZp
ZXdIZWlnaHQgPSBtX3NpemUuaGVpZ2h0OwotCi0gICAgLy8gRW5mb3JjZSB0aGUgbWF4aW11bSBh
bmQgbWluaW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBuZXcgc2NhbGUuCiAgICAgSW50UG9p
bnQgY2xhbXBlZE9mZnNldCA9IG9mZnNldDsKLSAgICBjbGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9m
ZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0TmV3U2NhbGUgLSB2aWV3V2lkdGgsIGRv
Y0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7Ci0gICAgY2xhbXBlZE9mZnNldC5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgaWYgKCFtX3BhZ2UtPnNldHRpbmdzKCktPmFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Nh
bGVkIGNvbnRlbnQgc2l6ZS4gV2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvIHRoZSBuZXcgc2NhbGUg
ZmFjdG9yLgorICAgICAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gdW5zY2FsZWRDb250ZW50c1Np
emUoKTsKKyAgICAgICAgaW50IGRvY1dpZHRoQXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLndpZHRo
ICogc2NhbGU7CisgICAgICAgIGludCBkb2NIZWlnaHRBdE5ld1NjYWxlID0gY29udGVudFNpemUu
aGVpZ2h0ICogc2NhbGU7CisgICAgICAgIGludCB2aWV3V2lkdGggPSBtX3NpemUud2lkdGg7Cisg
ICAgICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdodDsKKworICAgICAgICAvLyBFbmZv
cmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHNjcm9sbCBwb3NpdGlvbnMgYXQgdGhlIG5ldyBz
Y2FsZS4KKyAgICAgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50
UG9pbnQoZG9jV2lkdGhBdE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxl
IC0gdmlld0hlaWdodCkpOworICAgICAgICBjbGFtcGVkT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1pl
cm8oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjbGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9mZnNl
dC5zaHJ1bmtUbyhJbnRQb2ludCh1bnNjYWxlZENvbnRlbnRzU2l6ZSgpIC0gc2NhbGVkU2l6ZShz
Y2FsZSkpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Cisg
ICAgfQorCiAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQ7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6
OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoZmxvYXQgc2NhbGVGYWN0
b3IpCiB7Ci0gICAgLy8gUGljayBhIHNjYWxlIGZhY3RvciB0aGF0IGlzIHdpdGhpbiB0aGUgZXhw
ZWN0ZWQgbGltaXRzCiAgICAgc2NhbGVGYWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGlt
aXRzKHNjYWxlRmFjdG9yKTsKIAotICAgIEludFBvaW50IHNjcm9sbE9mZnNldEF0TmV3U2NhbGUo
bWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zm
c2V0KCkuaGVpZ2h0KTsKLSAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2NhbGVGYWN0b3IgLyBwYWdl
U2NhbGVGYWN0b3IoKTsKLSAgICBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLnNjYWxlKGRlbHRhU2Nh
bGUsIGRlbHRhU2NhbGUpOworICAgIEludFBvaW50IHNjcm9sbE9mZnNldChtYWluRnJhbWUoKS0+
c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQp
OworICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvcigpKSB7CisgICAgICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZhY3RvciAvIHBh
Z2VTY2FsZUZhY3RvcigpOworICAgICAgICBzY3JvbGxPZmZzZXQuc2NhbGUoZGVsdGFTY2FsZSwg
ZGVsdGFTY2FsZSk7CisgICAgfQorICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRTY2Fs
ZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKIAotICAgIFdlYlBvaW50IGNsYW1wZWRPZmZz
ZXRBdE5ld1NjYWxlID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldEF0TmV3U2NhbGUs
IHNjYWxlRmFjdG9yKTsKLSAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIGNsYW1w
ZWRPZmZzZXRBdE5ld1NjYWxlKTsKKyAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3Is
IHNjcm9sbE9mZnNldCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rv
cihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikKQEAgLTI5NTMsMjIg
KzI5NTcsMTcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNj
YWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQogICAgIGlmICghc2NhbGVGYWN0b3Ip
CiAgICAgICAgIHNjYWxlRmFjdG9yID0gMTsKIAorICAgIEludFBvaW50IHNjcm9sbE9mZnNldCA9
IG9yaWdpbjsKICAgICBzY2FsZUZhY3RvciA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMo
c2NhbGVGYWN0b3IpOwotICAgIFdlYlBvaW50IHNjcm9sbE9mZnNldDsKLSAgICBpZiAoIW1fcGFn
ZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkgewotICAg
ICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIG5vdCBhcHBsaWVkIGluIHRoZSBjb21wb3NpdG9yLCB0
aGVuIHRoZSBzY3JvbGwgb2Zmc2V0cyBzaG91bGQKLSAgICAgICAgLy8gYmUgbW9kaWZpZWQgYnkg
dGhlIHNjYWxlIGZhY3Rvci4KLSAgICAgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRBdFNj
YWxlKG9yaWdpbiwgc2NhbGVGYWN0b3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEludFBvaW50
IG9mZnNldCA9IG9yaWdpbjsKLSAgICAgICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9IG1haW5GcmFt
ZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgb2Zmc2V0LnNocnVua1RvKEludFBvaW50KGNv
bnRlbnRTaXplLndpZHRoIC0gbV9zaXplLndpZHRoLCBjb250ZW50U2l6ZS5oZWlnaHQgLSBtX3Np
emUuaGVpZ2h0KSk7Ci0gICAgICAgIG9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAg
ICAgIHNjcm9sbE9mZnNldCA9IG9mZnNldDsKLSAgICB9CisgICAgc2Nyb2xsT2Zmc2V0ID0gY2xh
bXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwgc2NhbGVGYWN0b3IpOworCisgICAgcGFnZSgp
LT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHNjcm9sbE9mZnNldCkp
OwogCi0gICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIHNjcm9sbE9m
ZnNldCk7CiAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9IHRydWU7CisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyNl
bmRpZgogfQogCiBmbG9hdCBXZWJWaWV3SW1wbDo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApA
QCAtMzA1MiwxMiArMzA1MSwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVWaWV3cG9y
dFRhZ01heGltdW1TY2FsZShib29sIGZsYWcpCiAgICAgbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHBhZ2UoKS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCkpOwogfQogCi1zdGF0aWMgSW50U2l6
ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZShGcmFtZSogZnJhbWUpCitJbnRTaXplIFdlYlZpZXdJbXBs
Ojp1bnNjYWxlZENvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7CisgICAgRnJhbWUqIGZyYW1lID0gcGFn
ZSgpLT5tYWluRnJhbWUoKTsKICAgICBSZW5kZXJWaWV3KiByb290ID0gZnJhbWUtPmNvbnRlbnRS
ZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKLSAg
ICByZXR1cm4gcm9vdC0+dW5zY2FsZWREb2N1bWVudFJlY3QoKS5zaXplKCk7CisKKyAgICBpZiAo
IW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkK
KyAgICAgICAgcmV0dXJuIHJvb3QtPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkuc2l6ZSgpOworICAg
IHJldHVybiByb290LT5kb2N1bWVudFJlY3QoKS5zaXplKCk7CiB9CiAKIEludFNpemUgV2ViVmll
d0ltcGw6OmxheW91dFNpemUoKSBjb25zdApAQCAtMzA2NSw3ICszMDY4LDggQEAgSW50U2l6ZSBX
ZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFpc0ZpeGVkTGF5b3V0TW9k
ZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKIAotICAgIEludFNpemUgY29udGVu
dFNpemUgPSB1bnNjYWxlZENvbnRlbnRzU2l6ZShwYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICBJ
bnRTaXplIGNvbnRlbnRTaXplID0gdW5zY2FsZWRDb250ZW50c1NpemUoKTsKKwogICAgIGlmIChm
aXhlZExheW91dFNpemUoKS53aWR0aCA+PSBjb250ZW50U2l6ZS53aWR0aCgpKQogICAgICAgICBy
ZXR1cm4gZml4ZWRMYXlvdXRTaXplKCk7CiAKQEAgLTMwOTcsNyArMzEwMSw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKQogICAgIGludCB2aWV3V2lk
dGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzID0gbV9zaXplLndpZHRoOwogICAgIGlmICh2aWV3V2lk
dGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzICYmIHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYg
IXZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAg
ICB2aWV3V2lkdGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzIC09IHZpZXctPnZlcnRpY2FsU2Nyb2xs
YmFyKCktPndpZHRoKCk7Ci0gICAgaW50IHVuc2NhbGVkQ29udGVudHNXaWR0aCA9IHVuc2NhbGVk
Q29udGVudHNTaXplKHBhZ2UoKS0+bWFpbkZyYW1lKCkpLndpZHRoKCk7CisgICAgaW50IHVuc2Nh
bGVkQ29udGVudHNXaWR0aCA9IHVuc2NhbGVkQ29udGVudHNTaXplKCkud2lkdGgoKTsKICAgICBp
ZiAodmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFycyAmJiB1bnNjYWxlZENvbnRlbnRzV2lk
dGgpIHsKICAgICAgICAgLy8gTGltaXQgcGFnZSBzY2FsaW5nIGRvd24gdG8gdGhlIGRvY3VtZW50
IHdpZHRoLgogICAgICAgICBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgPSBtYXgobV9taW5pbXVt
UGFnZVNjYWxlRmFjdG9yLCBzdGF0aWNfY2FzdDxmbG9hdD4odmlld1dpZHRoTm90SW5jbHVkaW5n
U2Nyb2xsYmFycykgLyB1bnNjYWxlZENvbnRlbnRzV2lkdGgpOwpAQCAtMzc0OSwxNSArMzc1Mywx
MCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoKQogICAgIH0gZWxz
ZQogICAgICAgICBtYXlOZWVkTGF5b3V0ID0gY29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygp
OwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKTsK
LSAgICBpZiAoc2V0dGluZ3NJbXBsKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
KCkgJiYgdmlldyAmJiB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSkud2lkdGgoKSAhPSBs
YXlvdXRTaXplKCkud2lkdGgoKSkgewotICAgICAgICB2aWV3LT5yZXNpemUobGF5b3V0U2l6ZSgp
KTsKLSAgICAgICAgbWF5TmVlZExheW91dCA9IHRydWU7Ci0gICAgfQotCiAgICAgLy8gZGlkQ2hh
bmdlQ29udGVudHNTaXplKCkgbWF5IGJlIGNhbGxlZCBmcm9tIEZyYW1lVmlldzo6bGF5b3V0OyB3
ZSBuZWVkIHRvCiAgICAgLy8gcmVsYXlvdXQgdG8gYXZvaWQgdHJpZ2dlcmluZyB0aGUgYXNzZXJ0
aW9uIHRoYXQgbmVlZHNMYXlvdXQoKSBpc24ndCBzZXQKICAgICAvLyBhdCB0aGUgZW5kIG9mIGEg
bGF5b3V0LgorICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3
KCk7CiAgICAgaWYgKG1heU5lZWRMYXlvdXQgJiYgdmlldyAmJiB2aWV3LT5uZWVkc0xheW91dCgp
KQogICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICNlbmRpZgpAQCAtNDIzMywxNiArNDIzMiwxNCBA
QCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXco
KTsKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KHRy
dWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJbnRQb2ludCBzY3JvbGwodmlldy0+
c2Nyb2xsWCgpLCB2aWV3LT5zY3JvbGxZKCkpOwogCi0gICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29udGVudHNTaXpl
KCksIHNjcm9sbCwgdmlldy0+c2Nyb2xsT3JpZ2luKCkpOwotCi0gICAgSW50U2l6ZSBsYXlvdXRW
aWV3cG9ydFNpemUgPSB2aXNpYmxlUmVjdC5zaXplKCk7CisgICAgSW50U2l6ZSBsYXlvdXRWaWV3
cG9ydFNpemUgPSBsYXlvdXRTaXplKCk7CiAgICAgSW50U2l6ZSBkZXZpY2VWaWV3cG9ydFNpemUg
PSBtX3NpemU7CiAgICAgaWYgKG1fd2ViU2V0dGluZ3MtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoKSkKICAgICAgICAgZGV2aWNlVmlld3BvcnRTaXplLnNjYWxlKGRldmljZVNj
YWxlRmFjdG9yKCkpOwogCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFZpZXdw
b3J0KGRldmljZVZpZXdwb3J0U2l6ZSwgdmlldy0+Y29udGVudHNTaXplKCksIHZpZXctPnNjcm9s
bFBvc2l0aW9uKCksIHZpZXctPnNjcm9sbE9yaWdpbigpKTsKKwogICAgIG1fbGF5ZXJUcmVlVmll
dy0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSwgZGV2aWNlVmlld3BvcnRTaXpl
KTsKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdl
U2NhbGVGYWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2Nh
bGVGYWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNGM3YTkyZTNmZjMxNmYzMWIzNzIwZGU1ODg2YTY2MDdlNjM3MjhjZC4uOWNiODExYmIyM2Zj
MTc3MzVjMWMxOTFjMDcyNTU3NDFjNWQwNDRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC00NjEsNiArNDYxLDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBkaXBTaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBsYXlvdXRT
aXplKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzY2FsZWRTaXplKGZsb2F0KSBjb25z
dDsKIAogICAgIC8vIFNldCB0aGUgZGlzcG9zaXRpb24gZm9yIGhvdyB0aGlzIHdlYnZpZXcgaXMg
dG8gYmUgaW5pdGlhbGx5IHNob3duLgogICAgIHZvaWQgc2V0SW5pdGlhbE5hdmlnYXRpb25Qb2xp
Y3koV2ViTmF2aWdhdGlvblBvbGljeSBwb2xpY3kpCkBAIC02MTEsNyArNjEyLDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKICAg
ICBmbG9hdCBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlKTsKLSAgICBX
ZWJQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQg
c2NhbGUpOworICAgIFdlYkNvcmU6OkludFBvaW50IGNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkgY29uc3Q7CisgICAgV2ViQ29y
ZTo6SW50U2l6ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCByZXNl
dFNhdmVkU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggYWJmOTE4NjViODQyYzk3YzczNzA3NmE5YmMz
YjZiNWUwMTkxMTA1Ny4uNmI2YzM4ZDRiZTFiOWYzOTJhYjdlOTQ3ZjdlNjg4MWNhODY5ZjRlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJVUkxUZXN0SGVscGVycy5oIgpAQCAtMzA5LDYgKzMxMCwxMTAgQEAgVEVTVF9GKFdlYkZy
YW1lVGVzdCwgU2NhbGVGYWN0b3JTaG91bGROb3RPc2NpbGxhdGUpCiAgICAgd2ViVmlld0ltcGwt
PmxheW91dCgpOwogfQogCitURVNUX0YoV2ViRnJhbWVUZXN0LCBzZXRQYWdlU2NhbGVGYWN0b3JE
b2VzTm90TGF5b3V0KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpeGVkX2xh
eW91dC5odG1sIik7CisKKyAgICBGaXhlZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsK
KyAgICBjbGllbnQubV9zY3JlZW5JbmZvLmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpbnQg
dmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisKKyAg
ICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9s
YXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGlu
Z3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3
ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsK
KyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOwor
ICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhl
aWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKworICAgIGludCBwcmV2TGF5b3V0
Q291bnQgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0
Q291bnQoKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDMsIFdlYlBvaW50
KCkpOworICAgIEVYUEVDVF9FUShmYWxzZSwgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCktPm5lZWRzTGF5b3V0KCkpOworICAgIEVYUEVDVF9FUShwcmV2TGF5b3V0Q291
bnQsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXRDb3Vu
dCgpKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFnZVNjYWxlRmFjdG9yV3JpdHRlblRv
SGlzdG9yeUl0ZW0pCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5
b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50Owor
ICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2
aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKworICAg
IFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJh
bWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xh
eW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5n
cygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdl
YlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
cih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOwor
ICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7Cisg
ICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVp
Z2h0KSk7CisgICAgd2ViVmlld0ltcGwtPmxheW91dCgpOworCisgICAgd2ViVmlld0ltcGwtPnNl
dFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQb2ludCgpKTsKKyAgICB3ZWJWaWV3SW1wbC0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+c2F2ZURvY3VtZW50QW5kU2Nyb2xs
U3RhdGUoKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDEsIFdlYlBvaW50
KCkpOworICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKKyAgICBFWFBFQ1Rf
RVEoMywgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKK30KKworVEVTVF9GKFdlYkZy
YW1lVGVzdCwgcGFnZVNjYWxlRmFjdG9yU2hyaW5rc1ZpZXdwb3J0KQoreworICAgIHJlZ2lzdGVy
TW9ja2VkSHR0cFVSTExvYWQoImZpeGVkX2xheW91dC5odG1sIik7CisKKyAgICBGaXhlZExheW91
dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZvLmRldmlj
ZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQg
dmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgaW50IHZpZXdwb3J0V2lkdGhNaW51c1Njcm9sbGJh
ciA9IDY0MCAtIDE1OworICAgIGludCB2aWV3cG9ydEhlaWdodE1pbnVzU2Nyb2xsYmFyID0gNDgw
IC0gMTU7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJW
aWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVS
TCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3
SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0
TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFi
bGVkKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRo
LCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKworICAgIHdl
YlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgV2ViUG9pbnQoKSk7CisKKyAgICBXZWJD
b3JlOjpJbnRTaXplIHVuc2NhbGVkU2l6ZSA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLT51bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSh0cnVlKTsKKyAgICBFWFBF
Q1RfRVEodmlld3BvcnRXaWR0aCwgdW5zY2FsZWRTaXplLndpZHRoKCkpOworICAgIEVYUEVDVF9F
USh2aWV3cG9ydEhlaWdodCwgdW5zY2FsZWRTaXplLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6
OkludFNpemUgdW5zY2FsZWRTaXplTWludXNTY3JvbGxiYXIgPSB3ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2Up
OworICAgIEVYUEVDVF9FUSh2aWV3cG9ydFdpZHRoTWludXNTY3JvbGxiYXIsIHVuc2NhbGVkU2l6
ZU1pbnVzU2Nyb2xsYmFyLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSh2aWV3cG9ydEhlaWdodE1p
bnVzU2Nyb2xsYmFyLCB1bnNjYWxlZFNpemVNaW51c1Njcm9sbGJhci5oZWlnaHQoKSk7CisKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIHNjYWxlZFNpemUgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIEVYUEVD
VF9FUShjZWlsKHZpZXdwb3J0V2lkdGhNaW51c1Njcm9sbGJhciAvIDIuMCksIHNjYWxlZFNpemUu
d2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKGNlaWwodmlld3BvcnRIZWlnaHRNaW51c1Njcm9sbGJh
ciAvIDIuMCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBwYWdlU2NhbGVGYWN0b3JEb2VzTm90QXBwbHlDc3NUcmFuc2Zvcm0pCit7CisgICAgcmVnaXN0
ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5
b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2
aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGlu
dCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9
IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRB
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygp
LT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJT
aXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPmxh
eW91dCgpOworCisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigyLCBXZWJQb2lu
dCgpKTsKKworICAgIEVYUEVDVF9FUSgxLCB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICBFWFBFQ1RfRVEoOTgwLCB3ZWJWaWV3SW1wbC0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCktPnVuc2NhbGVkRG9jdW1lbnRS
ZWN0KCkud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDk4MCwgd2ViVmlld0ltcGwtPm1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzU2l6ZSgpLndpZHRoKCkpOworfQogI2VuZGlm
CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIENhbk92ZXJyaWRlTWF4aW11bVNjYWxlRmFjdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185005</attachid>
            <date>2013-01-28 10:41:25 -0800</date>
            <delta_ts>2013-01-28 14:32:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130128103813.patch</filename>
            <type>text/plain</type>
            <size>37013</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZDQ4NDY0Y2QzMTYy
M2Y2ZWE0NWZkYTUxMGQ0MThmZTBhMTkzMGFjLi5jMmRhYTUzMDgyMTNhYjBiODg0ZDZlMzgyYjc0
ZDZkNjRlNTM5ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yOCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3J0IFJlc291cmNlUmVxdWVz
dCdzIHByaW9yaXR5IHRocm91Z2ggV2ViVVJMUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYxN2EzNGY2
ZTg4ZDJjYzljOTE2OTI4M2Q1ODQzOTk0MTllYmQ4YTguLmUxYzUxNjc0YjUzMDk2MTlkNDA2NDAw
MjIzMmViNTRmYzA0ZTdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMy0wMS0y
OCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtl
IHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRv
ciBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
ZiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1v
bmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhw
YW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hy
aW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bwor
ICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1w
bGlmaWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRo
ZSB0cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQg
dGhhdCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAg
ICAgIHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6
ZSwKKyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4
dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBz
aXplLiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNp
YmxlQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0g
bm8KKyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2Fs
ZUZhY3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1l
U2NhbGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRp
ZWQgdG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0
Y2ggc2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICBO
ZXcgdW5pdCB0ZXN0cyBpbiBXZWJGcmFtZVRlc3QuY3BwLgorCisgICAgICAgICogbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmlzaWJsZUNvbnRl
bnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVu
c2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OmxheW91dFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50U2NhbGVG
YWN0b3IpOgorICAgICAgICAoU2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpsYXlvdXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpsYXlvdXRI
ZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFu
Z2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
Um9vdExheWVyUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKToKKwog
MjAxMy0wMS0yOCAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAg
W0NTUyBFeGNsdXNpb25zXSBSZWZhY3RvciBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8gdG8gbW9y
ZSBnZW5lcmFsIEV4Y2x1c2lvblNoYXBlSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAwY2ViYWY2M2I0ZmUzOTQwZWM3YjkxMDRmYzExMWJhM2QxNTNjY2U0Li40NWI2ZjgzYWE5ODU0
YzdhM2QzYTNiZDE1MzMxMjczMDU3MmExZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTI4ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3IGlu
IGFwcGx5UGFnZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yIGlzIGVuYWJsZWQgKENocm9taXVtLW9ubHkgc2V0dGluZyksCisgICAgICAgIGluc3RlYWQg
b2YgdGhlIGVudGlyZSBkb2N1bWVudCBleHBhbmRpbmcgYXMgdGhlIHVzZXIgcGluY2ggem9vbXMs
IHRoZQorICAgICAgICB2aWV3cG9ydCBzaHJpbmtzIGluc3RlYWQuIFRoaXMgcGF0Y2ggYXBwbGll
cyB0aGUgcGFnZVNjYWxlRmFjdG9yIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVjdCB0byBn
ZXQgdGhpcyBiZWhhdmlvciwgYW5kIHNpbXBsaWZpZXMgQ2hyb21pdW0ncworICAgICAgICByZXNp
emUgbG9naWMgdG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9tIFdlYkNv
cmUuCisKKyAgICAgICAgSSB2ZXJpZmllZCB0aGF0IHRoZSBzY2FsaW5nIG1ha2VzIHNlbnNlIGZv
ciBhbGwgdGhlIGNhbGxlcnMgb2YKKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0LiBUaGUgZXhj
ZXB0aW9ucyBhcmUgY2xpcC1sYXllciBzaXplLAorICAgICAgICBsYXlvdXQgc2l6ZSBpbiBub24t
Zml4ZWQtbGF5b3V0IG1vZGUsIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdoaWNoIG5lZWQKKyAgICAg
ICAgdGhlIG9yaWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZSBJIGFkZGVkIGEgbmV3IG1l
dGhvZAorICAgICAgICB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZpZXcv
RnJhbWVWaWV3LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyBQYWdlOjpzZXRQ
YWdlU2NhbGVGYWN0b3IgdG8gcGVyZm9ybSBubworICAgICAgICBpbnZhbGlkYXRlcyBvciBsYXlv
dXQgd2hlbiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlLAorICAgICAg
ICBhbmQgYWxzbyB3cml0ZXMgcGFnZVNjYWxlRmFjdG9yIGludG8gSGlzdG9yeUl0ZW1zIGluc3Rl
YWQgb2YgdXNpbmcKKyAgICAgICAgZnJhbWVTY2FsZUZhY3Rvci4KKworICAgICAgICBTaW5jZSBh
bGwgYmVoYXZpb3IgY2hhbmdlcyBhcmUgdGllZCB0byBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvciwKKyAgICAgICAgdGhpcyBwYXRjaCBzaG91bGQgYmUgYSBuby1vcCBmb3Igbm9uLUNo
cm9taXVtIHBvcnRzLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dW5zY2FsZWRDb250ZW50c1NpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMy0wMS0yOCAgSmFtZXMgQ3JhaWcgIDxqYW1lc0Bjb29r
aWVjcm9vay5jb20+CiAKICAgICAgICAgSFRNTDUgcHJvbW90ZXMgREwgZnJvbSBzcGVjaWZpYyAn
ZGVmaW5pdGlvbiBsaXN0JyB0byBzdXBlcnNldCAnZGVzY3JpcHRpb24gbGlzdCc7IGFjY2Vzc2li
aWxpdHkgc3RyaW5ncyBhbmQgYWNjZXNzb3JzIHNob3VsZCBiZSB1cGRhdGVkIHRvIG1hdGNoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aAppbmRleCA2MzU0NzAyZjEyOGE3ZDE0ZTA2Njg4NTY4NWU0MDRmNTU5ZGIzNzJiLi44NTIzMWE5
YjAzNmE0MWE2ZDBmNjUxM2I4YTIzZTMwMzZiNmU5NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMTAyLDkgKzEwMiw4
IEBAIHB1YmxpYzoKICAgICAvLyBtb2RlKS4KICAgICB2aXJ0dWFsIFdlYlNpemUgZGV2aWNlVmll
d3BvcnRTaXplKCkgY29uc3QgPSAwOwogCi0gICAgLy8gR2l2ZXMgdGhlIGNvcnJlY3RlZCBsb2Nh
dGlvbiBmb3IgYW4gZXZlbnQsIGFjY291bnRpbmcgZm9yIHRoZSBwaW5jaC16b29tIHRyYW5zZm9y
bWF0aW9uCi0gICAgLy8gaW4gdGhlIGNvbXBvc2l0b3IuCi0gICAgdmlydHVhbCBXZWJGbG9hdFBv
aW50IGFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oY29uc3QgV2ViRmxvYXRQb2ludCYpIGNv
bnN0ID0gMDsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHJvbGwKKyAg
ICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYWRqdXN0RXZlbnRQb2ludEZvclBpbmNoWm9vbShjb25z
dCBXZWJGbG9hdFBvaW50JiBwKSBjb25zdCB7IHJldHVybiBwOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYTJmNzJkMDhkNWM5ZDU1MGE2MzM4YTkzMjY2OWZkZjdk
NTY4MmE2YS4uNDU2NjM1YzI0NzQ4ODBkMjJkOGM1ODI1MTQzODRlM2NkMGQ3NGRhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC04Nyw4ICs4Nywx
MCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3Rh
dGVUb0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgZWxzZQogICAgICAgICBpdGVtLT5zZXRT
Y3JvbGxQb2ludChtX2ZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaXRl
bS0+c2V0UGFnZVNjYWxlRmFjdG9yKG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAg
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAocGFnZSAmJiBwYWdl
LT5tYWluRnJhbWUoKSA9PSBtX2ZyYW1lKQorICAgICAgICBpdGVtLT5zZXRQYWdlU2NhbGVGYWN0
b3IocGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGdyZWF0IHRvIHdvcmsgb3V0IGEgd2F5IHRvIHB1dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0
ZWFkIG9mIGNhbGxpbmcgdGhyb3VnaCB0byB0aGUgY2xpZW50LgogICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+c2F2ZVZpZXdTdGF0ZVRvSXRlbShpdGVtKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCA0MWQ1MjRjMTFkZjVmYjI4ODQyNzdkODljYzExYTM2ZWVjZGE2
NGFiLi44NjYzYTEzOGUyYjZlNDkwNjdjOWUzMjNhYWJkM2E4ODBhNzJlOTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yODM3LDYgKzI4MzcsMTcgQEAgSW50UmVjdCBGcmFtZVZp
ZXc6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkt
PndpbmRvd1Jlc2l6ZXJSZWN0KCk7CiB9CiAKK2Zsb2F0IEZyYW1lVmlldzo6dmlzaWJsZUNvbnRl
bnRTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5w
YWdlKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygp
LT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIHx8IG1fZnJhbWUgIT0gbV9mcmFt
ZS0+cGFnZSgpLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4g
bV9mcmFtZS0+cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6
OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1i
KQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCA1MWM2NGYzODQyYTc0NzEyMGViNjAxYzFhMjVlNmQwM2MzNWU4MTEyLi5kMTNh
NzY3OTA4M2VkNGZlZjY5NWY5YjBlMzAzOGFjNzRkY2JmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTE4Myw2ICsxODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
d2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgZmxvYXQgdmlzaWJsZUNv
bnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHNl
dEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsK
ICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCAzYTM5MTk2YWU0ZjZhNDk2N2I3Y2FiMTljMDYxN2ViYTY4ZmU2MTEy
Li5hZWNiYTMzOTYxNjU2YWM1YzQxNTUzYmJkM2I5NzIxYTBhMmRkMjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTcyNSw3ICs3MjUsOCBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rvcihm
bG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAogICAgIGlmIChzY2FsZSA9PSBt
X3BhZ2VTY2FsZUZhY3RvcikgewogICAgICAgICBpZiAodmlldyAmJiAodmlldy0+c2Nyb2xsUG9z
aXRpb24oKSAhPSBvcmlnaW4gfHwgdmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpKSB7Ci0gICAg
ICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CisgICAgICAgICAgICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKCkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
b3JpZ2luKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC03MzMsMjAgKzczNCwyMiBA
QCB2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9p
bnQmIG9yaWdpbikKIAogICAgIG1fcGFnZVNjYWxlRmFjdG9yID0gc2NhbGU7CiAKLSAgICBpZiAo
ZG9jdW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKKyAgICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQor
ICAgICAgICAgICAgZG9jdW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
Ci0gICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKKyAgICAgICAgZG9jdW1l
bnQtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKIAotICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ug
b24gUmVuZGVyVmlldyBkb2Vzbid0IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBj
b250ZW50cy4KLSAgICBtYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KExheW91dFJlY3Q6OmluZmluaXRlUmVjdCgpKSk7CisgICAgICAgIC8vIFRyYW5zZm9ybSBjaGFu
Z2Ugb24gUmVuZGVyVmlldyBkb2Vzbid0IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRl
ZCBjb250ZW50cy4KKyAgICAgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworICAgIH0KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBtYWluRnJhbWUoKS0+ZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CiAjZW5kaWYKIAogICAgIGlmICh2aWV3ICYmIHZpZXctPnNjcm9s
bFBvc2l0aW9uKCkgIT0gb3JpZ2luKSB7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIo
KSAmJiBkb2N1bWVudC0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3LT5kaWRGaXJz
dExheW91dCgpKQorICAgICAgICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRl
cmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAg
ICAgIHZpZXctPmxheW91dCgpOwogICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmln
aW4pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMzhl
ZmZjMDBmODgxMWE5MjRiYjc1YTI3ODZmMjllNDZlYWU0MTM4Mi4uNGVkYWRmNmIyMmJmOThlOTZm
NDRhNjI2YzFlMjAxNDE4MWNhODI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKQEAgLTIyNSwxNCArMjI1LDEzIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RGVsZWdhdGVz
U2Nyb2xsaW5nKGJvb2wgZGVsZWdhdGVzU2Nyb2xsaW5nKQogICAgIGRlbGVnYXRlc1Njcm9sbGlu
Z0RpZENoYW5nZSgpOwogfQogCi0jaWYgIVBMQVRGT1JNKEdUSykKLUludFJlY3QgU2Nyb2xsVmll
dzo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CitJbnRT
aXplIFNjcm9sbFZpZXc6OnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGJvb2wgaW5jbHVkZVNj
cm9sbGJhcnMpIGNvbnN0CiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJl
dHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAg
ICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyku
c2l6ZSgpOwogCiAgICAgaWYgKCFtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7CisgICAgICAgIHJldHVy
biBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LnNpemUoKTsKIAogICAgIGludCB2ZXJ0aWNhbFNj
cm9sbGJhcldpZHRoID0gMDsKICAgICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9IDA7
CkBAIC0yNDQsMjYgKzI0MywyOCBAQCBJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50
UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAogICAgICAgICAgICAgaG9yaXpvbnRh
bFNjcm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/
IGhvcml6b250YWxCYXItPmhlaWdodCgpIDogMDsKICAgICB9CiAKLSAgICByZXR1cm4gSW50UmVj
dChtX3Njcm9sbE9mZnNldC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgIG1fc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgIG1heCgwLCB3aWR0aCgpIC0gdmVydGlj
YWxTY3JvbGxiYXJXaWR0aCksIAorICAgIHJldHVybiBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0g
dmVydGljYWxTY3JvbGxiYXJXaWR0aCksCiAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdo
dCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCkpOwogfQotI2VuZGlmCiAKLUludFNpemUg
U2Nyb2xsVmlldzo6bGF5b3V0U2l6ZSgpIGNvbnN0CisjaWYgIVBMQVRGT1JNKEdUSykKK0ludFJl
Y3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91
c2VGaXhlZExheW91dCA/IHZpc2libGVTaXplKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZTsKLX0KKyAg
ICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNv
bnRlbnRSZWN0KGluY2x1ZGVTY3JvbGxiYXJzKTsKIAotaW50IFNjcm9sbFZpZXc6OmxheW91dFdp
ZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8
ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZVdpZHRoKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS53
aWR0aCgpOworICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworCisgICAgRmxvYXRTaXpl
IHZpc2libGVDb250ZW50U2l6ZSA9IHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGluY2x1ZGVT
Y3JvbGxiYXJzKTsKKyAgICB2aXNpYmxlQ29udGVudFNpemUuc2NhbGUoMSAvIHZpc2libGVDb250
ZW50U2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxP
ZmZzZXQpLCBleHBhbmRlZEludFNpemUodmlzaWJsZUNvbnRlbnRTaXplKSk7CiB9CisjZW5kaWYK
IAotaW50IFNjcm9sbFZpZXc6OmxheW91dEhlaWdodCgpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZp
ZXc6OmxheW91dFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5p
c0VtcHR5KCkgfHwgIW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlSGVpZ2h0KCkgOiBtX2ZpeGVk
TGF5b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0
eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFs
c2UpIDogbV9maXhlZExheW91dFNpemU7CiB9CiAKIEludFNpemUgU2Nyb2xsVmlldzo6Zml4ZWRM
YXlvdXRTaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBl
MDQzZjZlOWY3NDgzZGM0MWM0ODViYzFkNWYxYTA1NDA4NjRjNzQ2Li5mZTdiMDEwMTE1Mjg3MWMw
MjFlZWZkMTUxYjk4NjE5YjZkY2Y5MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCkBAIC0xNTEsMTEgKzE1MSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJs
ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lk
dGgoKTsgfQogICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKTsgfQogCisgICAgLy8gdmlzaWJs
ZUNvbnRlbnRSZWN0KCkuc2l6ZSgpIGlzIGNvbXB1dGVkIGZyb20gdW5zY2FsZWRWaXNpYmxlQ29u
dGVudFNpemUoKSBkaXZpZGVkIGJ5IHRoZSB2YWx1ZSBvZiB2aXNpYmxlQ29udGVudFNjYWxlRmFj
dG9yLgorICAgIC8vIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IgaXMgdXN1YWxseSAxLCBleGNl
cHQgd2hlbiB0aGUgc2V0dGluZyBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0
cnVlIGFuZCB0aGUKKyAgICAvLyBTY3JvbGxWaWV3IGlzIHRoZSBtYWluIGZyYW1lOyBpbiB0aGF0
IGNhc2UsIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IgaXMgZXF1YWwgdG8gdGhlIHBhZ2UncyBw
YWdlU2NhbGVGYWN0b3IuCisgICAgLy8gUG9ydHMgdGhhdCBkb24ndCB1c2UgcGFnZVNjYWxlRmFj
dG9yIGNhbiB0cmVhdCB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSBhbmQgdmlzaWJsZUNvbnRl
bnRSZWN0KCkuc2l6ZSgpIGFzIGVxdWl2YWxlbnQuCisgICAgSW50U2l6ZSB1bnNjYWxlZFZpc2li
bGVDb250ZW50U2l6ZShib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9CisK
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hv
dWxkIHVzZSB0byBsYXlvdXQgdGhlIGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNh
bWUgYXMgdGhlIHZpc2libGUKICAgICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGlu
ZyBhIGxheW91dCBzaXplIHZhbHVlIHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29u
dGVudHMgdXNpbmcgdGhpcyBzaXplIGluc3RlYWQuCiAgICAgSW50U2l6ZSBsYXlvdXRTaXplKCkg
Y29uc3Q7Ci0gICAgaW50IGxheW91dFdpZHRoKCkgY29uc3Q7Ci0gICAgaW50IGxheW91dEhlaWdo
dCgpIGNvbnN0OworICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dFNp
emUoKS53aWR0aCgpOyB9CisgICAgaW50IGxheW91dEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxh
eW91dFNpemUoKS5oZWlnaHQoKTsgfQogICAgIEludFNpemUgZml4ZWRMYXlvdXRTaXplKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIGJv
b2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNmIyOTdhZWQ2NWQwMjM3NjczN2Iw
NTVkNDg3N2ViMTc5YTUwMjg3NC4uOWE1M2RhMTU1YTJiMzVhMTkyMzA0ZWY0YzUyMGQ2N2U5ZDU2
NmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKQEAgLTExNjksNyArMTE2OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpmcmFtZVZpZXdEaWRDaGFuZ2VTaXplKCkKIHsKICAgICBpZiAobV9jbGlwTGF5ZXIpIHsK
ICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygp
OwotICAgICAgICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50
UmVjdChmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1f
Y2xpcExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUo
ZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKSk7CiAKICAgICAgICAgZnJhbWVWaWV3RGlk
U2Nyb2xsKCk7CiAgICAgICAgIHVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKTsKQEAgLTE1
NDMsNyArMTU0Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5
ZXJQb3NpdGlvbigpCiAgICAgfQogICAgIGlmIChtX2NsaXBMYXllcikgewogICAgICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIG1f
Y2xpcExheWVyLT5zZXRTaXplKGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlIC8q
IGV4Y2x1ZGUgc2Nyb2xsYmFycyAqLykuc2l6ZSgpKTsKKyAgICAgICAgbV9jbGlwTGF5ZXItPnNl
dFNpemUoZnJhbWVWaWV3LT51bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShmYWxzZSAvKiBleGNs
dWRlIHNjcm9sbGJhcnMgKi8pKTsKICAgICB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKaW5kZXggNzllYjE5
YWM1ZWU2YjhmZTk2MmQ1ODY1ZWQ1OTM3MWU5YTcwMzY0Zi4uYmVkZTI4NDViNmM3ZTdjNGUxM2Ri
MzRlNjc4NTQ1Yjc3OTM5MDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRBdXRvc2l6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0
b3NpemVyLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NT
dWJ0cmVlKFJlbmRlck9iamVjdCogbGF5b3V0Um9vdCkKICAgICB3aW5kb3dJbmZvLndpbmRvd1Np
emUgPSBtX2RvY3VtZW50LT5zZXR0aW5ncygpLT50ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVy
cmlkZSgpOwogICAgIGlmICh3aW5kb3dJbmZvLndpbmRvd1NpemUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
aG91bGRBcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUobWFpbkZyYW1lKTsKLSAgICAgICAgd2luZG93
SW5mby53aW5kb3dTaXplID0gbWFpbkZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChp
bmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOworICAgICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUg
PSBtYWluRnJhbWUtPnZpZXcoKS0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoaW5jbHVkZVNj
cm9sbGJhcnMpOwogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPmFwcGx5RGV2
aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAgICAgICAgICAgIHdpbmRvd0luZm8ud2lu
ZG93U2l6ZS5zY2FsZSgxIC8gbV9kb2N1bWVudC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggMjY3NzU1YzdmODJkNWNjMmI2NzI4YWFlNzJmZmI2YTRkYWVkNjU0Mi4uZjQyNzRhMDc2MDAw
NTRiZTMzNGExYWFiMDQyZDIyODg3MjdiMWUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTYxMSwxMSArMTYxMSwxNSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjp3aWxsU3RhcnRMaXZlUmVzaXplKCkKICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT53aWxs
U3RhcnRMaXZlUmVzaXplKCk7CiB9CiAKLVdlYlNpemUgV2ViVmlld0ltcGw6OnNpemUoKQorSW50
U2l6ZSBXZWJWaWV3SW1wbDo6c2NhbGVkU2l6ZShmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0
CiB7Ci0gICAgaWYgKGlzRml4ZWRMYXlvdXRNb2RlRW5hYmxlZCgpICYmIHNldHRpbmdzSW1wbCgp
LT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQotICAgICAgICByZXR1cm4gbGF5
b3V0U2l6ZSgpOworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gZGlwU2l6ZSgpOworICAgIHNj
YWxlZFNpemUuc2NhbGUoMSAvIHBhZ2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGV4cGFuZGVk
SW50U2l6ZShzY2FsZWRTaXplKTsKK30KIAorV2ViU2l6ZSBXZWJWaWV3SW1wbDo6c2l6ZSgpCit7
CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KIApAQCAtMTY0Niw3ICsxNjUwLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cmVzaXplKGNvbnN0IFdlYlNpemUmIG5ld1NpemUpCiAgICAgaWYgKCFhZ2VudFBy
aXZhdGUgfHwgIWFnZW50UHJpdmF0ZS0+bWV0cmljc092ZXJyaWRkZW4oKSkgewogICAgICAgICBX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwogICAgICAgICBpZiAod2Vi
RnJhbWUtPmZyYW1lVmlldygpKQotICAgICAgICAgICAgd2ViRnJhbWUtPmZyYW1lVmlldygpLT5y
ZXNpemUoc2l6ZSgpKTsKKyAgICAgICAgICAgIHdlYkZyYW1lLT5mcmFtZVZpZXcoKS0+cmVzaXpl
KG1fc2l6ZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJRVdQT1JUKQpAQCAtMjA3NywzMCArMjA4
MSwyNCBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0
RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlm
ICghbV9sYXllclRyZWVWaWV3KQotICAgICAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpo
YW5kbGVJbnB1dEV2ZW50KG1fcGFnZS5nZXQoKSwgKnRoaXMsIGlucHV0RXZlbnQpOwotCiAgICAg
Y29uc3QgV2ViSW5wdXRFdmVudCogaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gJmlucHV0RXZlbnQ7
Ci0gICAgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50OwotICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0
dXJlRXZlbnQ7Ci0gICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRF
dmVudC50eXBlKSkgewotICAgICAgICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdl
Yk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCk7Ci0KLSAgICAgICAgSW50UG9pbnQgdHJhbnNmb3Jt
ZWRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2ludChtX2xheWVyVHJlZVZpZXctPmFkanVzdEV2ZW50
UG9pbnRGb3JQaW5jaFpvb20oV2ViRmxvYXRQb2ludChtb3VzZUV2ZW50LngsIG1vdXNlRXZlbnQu
eSkpKTsKLSAgICAgICAgbW91c2VFdmVudC54ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0g
ICAgICAgIG1vdXNlRXZlbnQueSA9IHRyYW5zZm9ybWVkTG9jYXRpb24ueSgpOwotICAgICAgICBp
bnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4o
Jm1vdXNlRXZlbnQpOwotICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZl
bnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKLQotICAgICAgICBJ
bnRQb2ludCB0cmFuc2Zvcm1lZExvY2F0aW9uID0gcm91bmRlZEludFBvaW50KG1fbGF5ZXJUcmVl
Vmlldy0+YWRqdXN0RXZlbnRQb2ludEZvclBpbmNoWm9vbShXZWJGbG9hdFBvaW50KGdlc3R1cmVF
dmVudC54LCBnZXN0dXJlRXZlbnQueSkpKTsKLSAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSB0cmFu
c2Zvcm1lZExvY2F0aW9uLngoKTsKLSAgICAgICAgZ2VzdHVyZUV2ZW50LnkgPSB0cmFuc2Zvcm1l
ZExvY2F0aW9uLnkoKTsKLSAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZnZXN0dXJlRXZlbnQpOworICAgIGlmIChtX3BhZ2Ut
PnNldHRpbmdzKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAg
ICAgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50OworICAgICAgICBXZWJHZXN0dXJlRXZlbnQgZ2Vz
dHVyZUV2ZW50OworICAgICAgICBpZiAoV2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlwZShp
bnB1dEV2ZW50LnR5cGUpKSB7CisgICAgICAgICAgICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0
PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRFdmVudCk7CisgICAgICAgICAgICBtb3VzZUV2
ZW50LnggPSBtb3VzZUV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIG1v
dXNlRXZlbnQueSA9IG1vdXNlRXZlbnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAg
ICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVu
dCo+KCZtb3VzZUV2ZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0dl
c3R1cmVFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgICAgICAgZ2VzdHVyZUV2
ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsK
KyAgICAgICAgICAgIGdlc3R1cmVFdmVudC54ID0gZ2VzdHVyZUV2ZW50LnggLyBwYWdlU2NhbGVG
YWN0b3IoKTsKKyAgICAgICAgICAgIGdlc3R1cmVFdmVudC55ID0gZ2VzdHVyZUV2ZW50LnkgLyBw
YWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0
YXRpY19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIGJvb2wgaGFuZGxlZCA9IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxl
SW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9ybWVkKTsK
LSAgICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5k
bGVJbnB1dEV2ZW50KG1fcGFnZS5nZXQoKSwgKnRoaXMsICppbnB1dEV2ZW50VHJhbnNmb3JtZWQp
OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZUNhcHR1cmVMb3N0KCkKQEAgLTI5MTUsMzQg
KzI5MTMsNDAgQEAgZmxvYXQgV2ViVmlld0ltcGw6OmNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1p
dHMoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgcmV0dXJuIG1pbihtYXgoc2NhbGVGYWN0b3IsIG1f
bWluaW11bVBhZ2VTY2FsZUZhY3RvciksIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiB9CiAK
LVdlYlBvaW50IFdlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQm
IG9mZnNldCwgZmxvYXQgc2NhbGUpCitJbnRQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRB
dFNjYWxlKGNvbnN0IEludFBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKSBjb25zdAogewotICAg
IC8vIFRoaXMgaXMgdGhlIHNjYWxlZCBjb250ZW50IHNpemUuIFdlIG5lZWQgdG8gY29udmVydCBp
dCB0byB0aGUgbmV3IHNjYWxlIGZhY3Rvci4KLSAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gbWFp
bkZyYW1lKCktPmNvbnRlbnRzU2l6ZSgpOwotICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZSAv
IHBhZ2VTY2FsZUZhY3RvcigpOwotICAgIGludCBkb2NXaWR0aEF0TmV3U2NhbGUgPSBjb250ZW50
U2l6ZS53aWR0aCAqIGRlbHRhU2NhbGU7Ci0gICAgaW50IGRvY0hlaWdodEF0TmV3U2NhbGUgPSBj
b250ZW50U2l6ZS5oZWlnaHQgKiBkZWx0YVNjYWxlOwotICAgIGludCB2aWV3V2lkdGggPSBtX3Np
emUud2lkdGg7Ci0gICAgaW50IHZpZXdIZWlnaHQgPSBtX3NpemUuaGVpZ2h0OwotCi0gICAgLy8g
RW5mb3JjZSB0aGUgbWF4aW11bSBhbmQgbWluaW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBu
ZXcgc2NhbGUuCiAgICAgSW50UG9pbnQgY2xhbXBlZE9mZnNldCA9IG9mZnNldDsKLSAgICBjbGFt
cGVkT2Zmc2V0ID0gY2xhbXBlZE9mZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0TmV3
U2NhbGUgLSB2aWV3V2lkdGgsIGRvY0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7Ci0g
ICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgaWYgKCFtX3BhZ2Ut
PnNldHRpbmdzKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgc2NhbGVkIGNvbnRlbnQgc2l6ZS4gV2UgbmVlZCB0byBjb252ZXJ0
IGl0IHRvIHRoZSBuZXcgc2NhbGUgZmFjdG9yLgorICAgICAgICBXZWJTaXplIGNvbnRlbnRTaXpl
ID0gdW5zY2FsZWRDb250ZW50c1NpemUoKTsKKyAgICAgICAgaW50IGRvY1dpZHRoQXROZXdTY2Fs
ZSA9IGNvbnRlbnRTaXplLndpZHRoICogc2NhbGU7CisgICAgICAgIGludCBkb2NIZWlnaHRBdE5l
d1NjYWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogc2NhbGU7CisgICAgICAgIGludCB2aWV3V2lk
dGggPSBtX3NpemUud2lkdGg7CisgICAgICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdo
dDsKKworICAgICAgICAvLyBFbmZvcmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHNjcm9sbCBw
b3NpdGlvbnMgYXQgdGhlIG5ldyBzY2FsZS4KKyAgICAgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1w
ZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoZG9jV2lkdGhBdE5ld1NjYWxlIC0gdmlld1dpZHRo
LCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0gdmlld0hlaWdodCkpOworICAgICAgICBjbGFtcGVkT2Zm
c2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjbGFtcGVk
T2Zmc2V0ID0gY2xhbXBlZE9mZnNldC5zaHJ1bmtUbyhJbnRQb2ludCh1bnNjYWxlZENvbnRlbnRz
U2l6ZSgpIC0gc2NhbGVkU2l6ZShzY2FsZSkpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgfQorCiAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQ7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxP
ZmZzZXQoZmxvYXQgc2NhbGVGYWN0b3IpCiB7Ci0gICAgLy8gUGljayBhIHNjYWxlIGZhY3RvciB0
aGF0IGlzIHdpdGhpbiB0aGUgZXhwZWN0ZWQgbGltaXRzCiAgICAgc2NhbGVGYWN0b3IgPSBjbGFt
cFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKIAotICAgIEludFBvaW50IHNj
cm9sbE9mZnNldEF0TmV3U2NhbGUobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBt
YWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKLSAgICBmbG9hdCBkZWx0YVNjYWxl
ID0gc2NhbGVGYWN0b3IgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBzY3JvbGxPZmZzZXRBdE5l
d1NjYWxlLnNjYWxlKGRlbHRhU2NhbGUsIGRlbHRhU2NhbGUpOworICAgIEludFBvaW50IHNjcm9s
bE9mZnNldChtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5z
Y3JvbGxPZmZzZXQoKS5oZWlnaHQpOworICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBs
eVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGZsb2F0IGRlbHRhU2Nh
bGUgPSBzY2FsZUZhY3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBzY3JvbGxPZmZz
ZXQuc2NhbGUoZGVsdGFTY2FsZSwgZGVsdGFTY2FsZSk7CisgICAgfQorICAgIHNjcm9sbE9mZnNl
dCA9IGNsYW1wT2Zmc2V0QXRTY2FsZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKIAotICAg
IFdlYlBvaW50IGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNj
cm9sbE9mZnNldEF0TmV3U2NhbGUsIHNjYWxlRmFjdG9yKTsKLSAgICBzZXRQYWdlU2NhbGVGYWN0
b3Ioc2NhbGVGYWN0b3IsIGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlKTsKKyAgICBzZXRQYWdlU2Nh
bGVGYWN0b3Ioc2NhbGVGYWN0b3IsIHNjcm9sbE9mZnNldCk7CiB9CiAKIHZvaWQgV2ViVmlld0lt
cGw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQm
IG9yaWdpbikKQEAgLTI5NTMsMjIgKzI5NTcsMTcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFn
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQog
ICAgIGlmICghc2NhbGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMTsKIAorICAgIElu
dFBvaW50IHNjcm9sbE9mZnNldCA9IG9yaWdpbjsKICAgICBzY2FsZUZhY3RvciA9IGNsYW1wUGFn
ZVNjYWxlRmFjdG9yVG9MaW1pdHMoc2NhbGVGYWN0b3IpOwotICAgIFdlYlBvaW50IHNjcm9sbE9m
ZnNldDsKLSAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoKSkgewotICAgICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIG5vdCBhcHBsaWVk
IGluIHRoZSBjb21wb3NpdG9yLCB0aGVuIHRoZSBzY3JvbGwgb2Zmc2V0cyBzaG91bGQKLSAgICAg
ICAgLy8gYmUgbW9kaWZpZWQgYnkgdGhlIHNjYWxlIGZhY3Rvci4KLSAgICAgICAgc2Nyb2xsT2Zm
c2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKG9yaWdpbiwgc2NhbGVGYWN0b3IpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIEludFBvaW50IG9mZnNldCA9IG9yaWdpbjsKLSAgICAgICAgV2ViU2l6ZSBj
b250ZW50U2l6ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgb2Zmc2V0
LnNocnVua1RvKEludFBvaW50KGNvbnRlbnRTaXplLndpZHRoIC0gbV9zaXplLndpZHRoLCBjb250
ZW50U2l6ZS5oZWlnaHQgLSBtX3NpemUuaGVpZ2h0KSk7Ci0gICAgICAgIG9mZnNldC5jbGFtcE5l
Z2F0aXZlVG9aZXJvKCk7Ci0gICAgICAgIHNjcm9sbE9mZnNldCA9IG9mZnNldDsKLSAgICB9Cisg
ICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwgc2NhbGVG
YWN0b3IpOworCisgICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIElu
dFBvaW50KHNjcm9sbE9mZnNldCkpOwogCi0gICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Io
c2NhbGVGYWN0b3IsIHNjcm9sbE9mZnNldCk7CiAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9
IHRydWU7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdXBkYXRlTGF5
ZXJUcmVlVmlld3BvcnQoKTsKKyNlbmRpZgogfQogCiBmbG9hdCBXZWJWaWV3SW1wbDo6ZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdApAQCAtMzA1MiwxMiArMzA1MSwxNiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRJZ25vcmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZShib29sIGZsYWcpCiAgICAgbV9w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hh
bmdlKHBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCkp
OwogfQogCi1zdGF0aWMgSW50U2l6ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZShGcmFtZSogZnJhbWUp
CitJbnRTaXplIFdlYlZpZXdJbXBsOjp1bnNjYWxlZENvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7Cisg
ICAgRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBSZW5kZXJWaWV3KiBy
b290ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcm9vdCkKICAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKLSAgICByZXR1cm4gcm9vdC0+dW5zY2FsZWREb2N1bWVudFJlY3Qo
KS5zaXplKCk7CisKKyAgICBpZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QtPnVuc2NhbGVkRG9jdW1l
bnRSZWN0KCkuc2l6ZSgpOworICAgIHJldHVybiByb290LT5kb2N1bWVudFJlY3QoKS5zaXplKCk7
CiB9CiAKIEludFNpemUgV2ViVmlld0ltcGw6OmxheW91dFNpemUoKSBjb25zdApAQCAtMzA2NSw3
ICszMDY4LDggQEAgSW50U2l6ZSBXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSgpIGNvbnN0CiAgICAg
aWYgKCFpc0ZpeGVkTGF5b3V0TW9kZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsK
IAotICAgIEludFNpemUgY29udGVudFNpemUgPSB1bnNjYWxlZENvbnRlbnRzU2l6ZShwYWdlKCkt
Pm1haW5GcmFtZSgpKTsKKyAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gdW5zY2FsZWRDb250ZW50
c1NpemUoKTsKKwogICAgIGlmIChmaXhlZExheW91dFNpemUoKS53aWR0aCA+PSBjb250ZW50U2l6
ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gZml4ZWRMYXlvdXRTaXplKCk7CiAKQEAgLTMwOTcs
NyArMzEwMSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1p
dHMoKQogICAgIGludCB2aWV3V2lkdGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzID0gbV9zaXplLndp
ZHRoOwogICAgIGlmICh2aWV3V2lkdGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzICYmIHZpZXctPnZl
cnRpY2FsU2Nyb2xsYmFyKCkgJiYgIXZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPmlzT3Zlcmxh
eVNjcm9sbGJhcigpKQogICAgICAgICB2aWV3V2lkdGhOb3RJbmNsdWRpbmdTY3JvbGxiYXJzIC09
IHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7Ci0gICAgaW50IHVuc2NhbGVkQ29u
dGVudHNXaWR0aCA9IHVuc2NhbGVkQ29udGVudHNTaXplKHBhZ2UoKS0+bWFpbkZyYW1lKCkpLndp
ZHRoKCk7CisgICAgaW50IHVuc2NhbGVkQ29udGVudHNXaWR0aCA9IHVuc2NhbGVkQ29udGVudHNT
aXplKCkud2lkdGgoKTsKICAgICBpZiAodmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFycyAm
JiB1bnNjYWxlZENvbnRlbnRzV2lkdGgpIHsKICAgICAgICAgLy8gTGltaXQgcGFnZSBzY2FsaW5n
IGRvd24gdG8gdGhlIGRvY3VtZW50IHdpZHRoLgogICAgICAgICBtX21pbmltdW1QYWdlU2NhbGVG
YWN0b3IgPSBtYXgobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBzdGF0aWNfY2FzdDxmbG9hdD4o
dmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFycykgLyB1bnNjYWxlZENvbnRlbnRzV2lkdGgp
OwpAQCAtMzc0OSwxNSArMzc1MywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoKQogICAgIH0gZWxzZQogICAgICAgICBtYXlOZWVkTGF5b3V0ID0gY29tcHV0ZVBh
Z2VTY2FsZUZhY3RvckxpbWl0cygpOwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKTsKLSAgICBpZiAoc2V0dGluZ3NJbXBsKCktPmFwcGx5UGFnZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgdmlldyAmJiB2aWV3LT52aXNpYmxlQ29udGVudFJl
Y3QodHJ1ZSkud2lkdGgoKSAhPSBsYXlvdXRTaXplKCkud2lkdGgoKSkgewotICAgICAgICB2aWV3
LT5yZXNpemUobGF5b3V0U2l6ZSgpKTsKLSAgICAgICAgbWF5TmVlZExheW91dCA9IHRydWU7Ci0g
ICAgfQotCiAgICAgLy8gZGlkQ2hhbmdlQ29udGVudHNTaXplKCkgbWF5IGJlIGNhbGxlZCBmcm9t
IEZyYW1lVmlldzo6bGF5b3V0OyB3ZSBuZWVkIHRvCiAgICAgLy8gcmVsYXlvdXQgdG8gYXZvaWQg
dHJpZ2dlcmluZyB0aGUgYXNzZXJ0aW9uIHRoYXQgbmVlZHNMYXlvdXQoKSBpc24ndCBzZXQKICAg
ICAvLyBhdCB0aGUgZW5kIG9mIGEgbGF5b3V0LgorICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5G
cmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7CiAgICAgaWYgKG1heU5lZWRMYXlvdXQgJiYgdmlldyAm
JiB2aWV3LT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICNlbmRpZgpA
QCAtNDIzMywxNiArNDIzMiwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVW
aWV3cG9ydCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJ
bnRQb2ludCBzY3JvbGwodmlldy0+c2Nyb2xsWCgpLCB2aWV3LT5zY3JvbGxZKCkpOwogCi0gICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUo
KSwgdmlldy0+Y29udGVudHNTaXplKCksIHNjcm9sbCwgdmlldy0+c2Nyb2xsT3JpZ2luKCkpOwot
Ci0gICAgSW50U2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUgPSB2aXNpYmxlUmVjdC5zaXplKCk7Cisg
ICAgSW50U2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUgPSBsYXlvdXRTaXplKCk7CiAgICAgSW50U2l6
ZSBkZXZpY2VWaWV3cG9ydFNpemUgPSBtX3NpemU7CiAgICAgaWYgKG1fd2ViU2V0dGluZ3MtPmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAgICAgICAgZGV2aWNlVmlld3Bv
cnRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwogCisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldFZpZXdwb3J0KGRldmljZVZpZXdwb3J0U2l6ZSwgdmlldy0+Y29udGVu
dHNTaXplKCksIHZpZXctPnNjcm9sbFBvc2l0aW9uKCksIHZpZXctPnNjcm9sbE9yaWdpbigpKTsK
KwogICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6
ZSwgZGV2aWNlVmlld3BvcnRTaXplKTsKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFj
dG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNGM3YTkyZTNmZjMxNmYzMWIzNzIwZGU1ODg2YTY2MDdl
NjM3MjhjZC4uOWNiODExYmIyM2ZjMTc3MzVjMWMxOTFjMDcyNTU3NDFjNWQwNDRlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00NjEsNiArNDYxLDcgQEAg
cHVibGljOgogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBkaXBTaXplKCkgY29uc3Q7CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBz
Y2FsZWRTaXplKGZsb2F0KSBjb25zdDsKIAogICAgIC8vIFNldCB0aGUgZGlzcG9zaXRpb24gZm9y
IGhvdyB0aGlzIHdlYnZpZXcgaXMgdG8gYmUgaW5pdGlhbGx5IHNob3duLgogICAgIHZvaWQgc2V0
SW5pdGlhbE5hdmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeSBwb2xpY3kpCkBAIC02
MTEsNyArNjEyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMoKTsKICAgICBmbG9hdCBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRz
KGZsb2F0IHNjYWxlKTsKLSAgICBXZWJQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2Vi
UG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUpOworICAgIFdlYkNvcmU6OkludFBvaW50IGNsYW1w
T2Zmc2V0QXRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2Fs
ZSkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZSgpIGNv
bnN0OwogCiAgICAgdm9pZCByZXNldFNhdmVkU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggYWJmOTE4
NjViODQyYzk3YzczNzA3NmE5YmMzYjZiNWUwMTkxMTA1Ny4uNmI2YzM4ZDRiZTFiOWYzOTJhYjdl
OTQ3ZjdlNjg4MWNhODY5ZjRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lVGVzdEhl
bHBlcnMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgpAQCAtMzA5LDYgKzMx
MCwxMTAgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgU2NhbGVGYWN0b3JTaG91bGROb3RPc2NpbGxh
dGUpCiAgICAgd2ViVmlld0ltcGwtPmxheW91dCgpOwogfQogCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBzZXRQYWdlU2NhbGVGYWN0b3JEb2VzTm90TGF5b3V0KQoreworICAgIHJlZ2lzdGVyTW9ja2Vk
SHR0cFVSTExvYWQoImZpeGVkX2xheW91dC5odG1sIik7CisKKyAgICBGaXhlZExheW91dFRlc3RX
ZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZvLmRldmljZVNjYWxl
RmFjdG9yID0gMTsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3Bv
cnRIZWlnaHQgPSA0ODA7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZp
eGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmll
d3BvcnRFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3
cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsK
KworICAgIGludCBwcmV2TGF5b3V0Q291bnQgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKS0+bGF5b3V0Q291bnQoKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yKDMsIFdlYlBvaW50KCkpOworICAgIEVYUEVDVF9FUShmYWxzZSwgd2ViVmlld0lt
cGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPm5lZWRzTGF5b3V0KCkpOworICAgIEVY
UEVDVF9FUShwcmV2TGF5b3V0Q291bnQsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZy
YW1lVmlldygpLT5sYXlvdXRDb3VudCgpKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFn
ZVNjYWxlRmFjdG9yV3JpdHRlblRvSGlzdG9yeUl0ZW0pCit7CisgICAgcmVnaXN0ZXJNb2NrZWRI
dHRwVVJMTG9hZCgiZml4ZWRfbGF5b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5b3V0VGVzdFdl
YlZpZXdDbGllbnQgY2xpZW50OworICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2aWNlU2NhbGVG
YWN0b3IgPSAxOworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9y
dEhlaWdodCA9IDQ4MDsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQo
bV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAg
IHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4
ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRWaWV3
cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdw
b3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPmxheW91dCgpOwor
CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQb2ludCgpKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+
c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yKDEsIFdlYlBvaW50KCkpOworICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5G
cmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3
U3RhdGUoKTsKKyAgICBFWFBFQ1RfRVEoMywgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3Rvcigp
KTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFnZVNjYWxlRmFjdG9yU2hyaW5rc1ZpZXdw
b3J0KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpeGVkX2xheW91dC5odG1s
Iik7CisKKyAgICBGaXhlZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBjbGll
bnQubV9zY3JlZW5JbmZvLmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpbnQgdmlld3BvcnRX
aWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgaW50IHZpZXdw
b3J0V2lkdGhNaW51c1Njcm9sbGJhciA9IDY0MCAtIDE1OworICAgIGludCB2aWV3cG9ydEhlaWdo
dE1pbnVzU2Nyb2xsYmFyID0gNDgwIC0gMTU7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0lt
cGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZj
bGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+
c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0lt
cGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGlu
Z3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUo
V2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBs
LT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgV2Vi
UG9pbnQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHVuc2NhbGVkU2l6ZSA9IHdlYlZpZXdJ
bXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT51bnNjYWxlZFZpc2libGVDb250ZW50
U2l6ZSh0cnVlKTsKKyAgICBFWFBFQ1RfRVEodmlld3BvcnRXaWR0aCwgdW5zY2FsZWRTaXplLndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUSh2aWV3cG9ydEhlaWdodCwgdW5zY2FsZWRTaXplLmhlaWdo
dCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgdW5zY2FsZWRTaXplTWludXNTY3JvbGxiYXIg
PSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+dW5zY2FsZWRWaXNp
YmxlQ29udGVudFNpemUoZmFsc2UpOworICAgIEVYUEVDVF9FUSh2aWV3cG9ydFdpZHRoTWludXNT
Y3JvbGxiYXIsIHVuc2NhbGVkU2l6ZU1pbnVzU2Nyb2xsYmFyLndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSh2aWV3cG9ydEhlaWdodE1pbnVzU2Nyb2xsYmFyLCB1bnNjYWxlZFNpemVNaW51c1Njcm9s
bGJhci5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNjYWxlZFNpemUgPSB3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCkuc2l6ZSgpOworICAgIEVYUEVDVF9FUShjZWlsKHZpZXdwb3J0V2lkdGhNaW51c1Njcm9sbGJh
ciAvIDIuMCksIHNjYWxlZFNpemUud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKGNlaWwodmlld3Bv
cnRIZWlnaHRNaW51c1Njcm9sbGJhciAvIDIuMCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpOworfQor
CitURVNUX0YoV2ViRnJhbWVUZXN0LCBwYWdlU2NhbGVGYWN0b3JEb2VzTm90QXBwbHlDc3NUcmFu
c2Zvcm0pCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5b3V0Lmh0
bWwiKTsKKworICAgIEZpeGVkTGF5b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGNs
aWVudC5tX3NjcmVlbkluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2aWV3cG9y
dFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKworICAgIFdlYlZp
ZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0
SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5o
dG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5z
ZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJ
bXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVl
KTsKKyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdl
YlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2Vi
Vmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7
CisgICAgd2ViVmlld0ltcGwtPmxheW91dCgpOworCisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VT
Y2FsZUZhY3RvcigyLCBXZWJQb2ludCgpKTsKKworICAgIEVYUEVDVF9FUSgxLCB3ZWJWaWV3SW1w
bC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICBFWFBFQ1Rf
RVEoOTgwLCB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+Y29udGVudFJlbmRlcmVy
KCktPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDk4MCwg
d2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzU2l6ZSgp
LndpZHRoKCkpOworfQogI2VuZGlmCiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIENhbk92ZXJyaWRl
TWF4aW11bVNjYWxlRmFjdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185064</attachid>
            <date>2013-01-28 14:32:32 -0800</date>
            <delta_ts>2013-01-28 16:43:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130128142919.patch</filename>
            <type>text/plain</type>
            <size>38389</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZDQ4NDY0Y2QzMTYy
M2Y2ZWE0NWZkYTUxMGQ0MThmZTBhMTkzMGFjLi5jMmRhYTUzMDgyMTNhYjBiODg0ZDZlMzgyYjc0
ZDZkNjRlNTM5ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yOCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3J0IFJlc291cmNlUmVxdWVz
dCdzIHByaW9yaXR5IHRocm91Z2ggV2ViVVJMUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYxN2EzNGY2
ZTg4ZDJjYzljOTE2OTI4M2Q1ODQzOTk0MTllYmQ4YTguLmRiZTMxMmUwZGQ4Y2NjMzAwNTNiNjg0
M2VhNjFmNDZiMmViMzE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMy0wMS0y
OCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtl
IHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRv
ciBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
ZiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1v
bmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhw
YW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hy
aW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bwor
ICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1w
bGlmaWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRo
ZSB0cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQg
dGhhdCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAg
ICAgIHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6
ZSwKKyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4
dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBz
aXplLiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNp
YmxlQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0g
bm8KKyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2Fs
ZUZhY3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1l
U2NhbGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRp
ZWQgdG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0
Y2ggc2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICBO
ZXcgdW5pdCB0ZXN0cyBpbiBXZWJGcmFtZVRlc3QuY3BwLgorCisgICAgICAgICogbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOiBVc2UgcGFnZVNjYWxlRmFj
dG9yIGhlcmUgYmVjYXVzZSBmcmFtZVNjYWxlRmFjdG9yIGFsd2F5cyByZXR1cm5zIDEgd2l0aCBv
dXIgc2V0dGluZy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnZpc2libGVDb250ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBh
Z2VTY2FsZUZhY3Rvcik6IE1ha2Ugc2V0UGFnZVNjYWxlRmFjdG9yIHN0b3AgaW52YWxpZGF0aW5n
L2xheW91dGluZyBhcyB0aGlzIGlzIGhhbmRsZWQgYnkgb3VyIGNvbXBvc2l0b3IuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSk6IFRoaXMgbmV3IG1ldGhvZCBqdXN0IHJldHVy
bnMgdGhlIG9yaWdpbmFsIHZpc2libGUgcmVjdCB3aXRob3V0IHBhZ2VTY2FsZUZhY3RvciBiZWlu
ZyBhcHBsaWVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOiBUaGlzIG5vdyBpcyBkaXZpZGVkIGJ5IHBhZ2VTY2Fs
ZUZhY3RvciBpZiBvdXIgc2V0dGluZyBpcyBhY3RpdmUuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpsYXlvdXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKTog
UmV0dXJucyBwYWdlU2NhbGVGYWN0b3IgaWYgdGhlIHZpc2libGUgcmVjdCBpcyBzY2FsZWQsIDEg
bm9ybWFsbHkuCisgICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmxheW91
dEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZENo
YW5nZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVSb290TGF5ZXJQb3NpdGlvbik6IENsaXAgbGF5ZXIgc2hvdWxkIHVzZSB1bnNjYWxlZCBzaXpl
LgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKTogVGV4dCBhdXRvc2l6ZXIgc2hvdWxk
IHVzZSB1bnNjYWxlZCBzaXplLgorCiAyMDEzLTAxLTI4ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlz
QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIFJlZmFjdG9yIEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyB0byBtb3JlIGdlbmVyYWwgRXhjbHVzaW9uU2hhcGVJbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBjZWJhZjYzYjRmZTM5NDBlYzdiOTEwNGZjMTExYmEz
ZDE1M2NjZTQuLjU5NDIxMDg2MDk0NjA2MTNmY2M4MTc3MmJkZDM5YjcyMTkwYzRjOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDEtMjggIEFsZXhh
bmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBwYWdlIHNj
YWxlIHNocmluayBGcmFtZVZpZXcgaW4gYXBwbHlQYWdlU2NhbGVJbkNvbXBvc2l0b3IgbW9kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYXBwbHlQ
YWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgaXMgZW5hYmxlZCAoQ2hyb21pdW0tb25seSBzZXR0
aW5nKSwKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGRvY3VtZW50IGV4cGFuZGluZyBh
cyB0aGUgdXNlciBwaW5jaCB6b29tcywgdGhlCisgICAgICAgIHZpZXdwb3J0IHNocmlua3MgaW5z
dGVhZC4gVGhpcyBwYXRjaCBhcHBsaWVzIHRoZSBwYWdlU2NhbGVGYWN0b3IgdG8KKyAgICAgICAg
dmlzaWJsZUNvbnRlbnRSZWN0IHRvIGdldCB0aGlzIGJlaGF2aW9yLCBhbmQgc2ltcGxpZmllcyBD
aHJvbWl1bSdzCisgICAgICAgIHJlc2l6ZSBsb2dpYyB0byBzdG9wIGhpZGluZyB0aGUgdHJ1ZSB2
aWV3cG9ydCBzaXplIGZyb20gV2ViQ29yZS4KKworICAgICAgICBJIHZlcmlmaWVkIHRoYXQgdGhl
IHNjYWxpbmcgbWFrZXMgc2Vuc2UgZm9yIGFsbCB0aGUgY2FsbGVycyBvZgorICAgICAgICB2aXNp
YmxlQ29udGVudFJlY3QuIFRoZSBleGNlcHRpb25zIGFyZSBjbGlwLWxheWVyIHNpemUsCisgICAg
ICAgIGxheW91dCBzaXplIGluIG5vbi1maXhlZC1sYXlvdXQgbW9kZSwgYW5kIHRleHQgYXV0b3Np
emluZywgd2hpY2ggbmVlZAorICAgICAgICB0aGUgb3JpZ2luYWwgdW5zY2FsZWQgc2l6ZS4gVGhl
cmVmb3JlIEkgYWRkZWQgYSBuZXcgbWV0aG9kCisgICAgICAgIHVuc2NhbGVkVmlzaWJsZUNvbnRl
bnRTaXplKCkgdG8gU2Nyb2xsVmlldy9GcmFtZVZpZXcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIG1vZGlmaWVzIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvciB0byBwZXJmb3JtIG5vCisgICAg
ICAgIGludmFsaWRhdGVzIG9yIGxheW91dCB3aGVuIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yIGlzIHRydWUsCisgICAgICAgIGFuZCBhbHNvIHdyaXRlcyBwYWdlU2NhbGVGYWN0b3Ig
aW50byBIaXN0b3J5SXRlbXMgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBmcmFtZVNjYWxlRmFj
dG9yLgorCisgICAgICAgIFNpbmNlIGFsbCBiZWhhdmlvciBjaGFuZ2VzIGFyZSB0aWVkIHRvIGFw
cGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yLAorICAgICAgICB0aGlzIHBhdGNoIHNob3Vs
ZCBiZSBhIG5vLW9wIGZvciBub24tQ2hyb21pdW0gcG9ydHMuCisKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2NhbGVkU2l6ZSk6
IFJldHVybnMgdGhlIHBvc3QgcGFnZS1zY2FsZSBzaXplIHNpbWlsYXIgdG8gd2hhdCB2aXNpYmxl
Q29udGVudFJlY3QoKSBub3cgcmV0dXJucywgZXhjZXB0IHRoYXQgaXQgbWF5IGJlIGF0IGEgZGlm
ZmVyZW50IHNjYWxlIHRoYW4gdGhlIGN1cnJlbnQgb25lLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2l6ZSk6IEJhY2sgdG8gcmV0dXJuaW5nIGRlbnNpdHktaW5kZXBlbmRlbnQgc2l6
ZSB3aXRob3V0IGFueSB0cmlja3MsIG5vdCB0aGUgImxheW91dFNpemUoKSIgZmFrZSB2aWV3cG9y
dC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KTogTm8gbmVlZCB0byBhcHBseSBpbXBs
VHJhbnNmb3JtIGFueW1vcmUgYXMgV2ViS2l0IGtub3dzIHRoZSB0cnVlIHNjcm9sbCBvZmZzZXQ7
IGp1c3QgZGl2aWRlIGV2ZW50IGNvb3JkcyBieSBwYWdlU2NhbGVGYWN0b3IuCisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOiBNYWtlIHRoaXMgbWV0aG9k
IHN1cHBvcnQgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IuICBUaGlzIGlzIHVzZWQg
dG8gcHJlLWNsYW1wIHNjcm9sbCBvZmZzZXRzIGF0IGEgZ2l2ZW4gdmlld3BvcnQgc2l6ZS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdT
Y3JvbGxPZmZzZXQpOiBNYWtlIHRoaXMgbWV0aG9kIHN1cHBvcnQgYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgKGRvbid0IHNjYWxlIHNjcm9sbCBvZmZzZXRzIGFzIHRoZXkgYXJlIG5v
dyBzY2FsZS1pbmRlcGVuZGVudCkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQ
YWdlU2NhbGVGYWN0b3IpOiBNYWtlIHRoaXMgbWV0aG9kIGFsd2F5cyB1c2UgY2xhbXBPZmZzZXRB
dFNjYWxlIGluc3RlYWQgb2YgYnlwYXNzaW5nIGl0LCBzaW5jZSBpdCdzIG5vdyBzdXBwb3J0ZWQu
ICBBbHNvIG5vdGlmeSB0aGUgY29tcG9zaXRvciB0byB1cGRhdGUgaXRzIHN0YXRlLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29udGVudHNTaXplKTogQ29udmVuaWVuY2UgbWV0aG9k
LCByZW1vdmVkIGRpZmZlcmVuY2UgYmV0d2VlbiBzY2FsZWQgYW5kIHVuc2NhbGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bGF5b3V0U2l6ZSk6IFRoaXMgbWV0aG9kIHJldHVybmVk
IHRoZSAiZmFrZSIgc2l6ZSB3ZSB1c2VkIHRvIGdpdmUgRnJhbWVWaWV3LiAgTm93IG5vIGxvbmdl
ciB1c2VkIGZvciBtdWNoLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0ZVBh
Z2VTY2FsZUZhY3RvckxpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUpOiBSZW1vdmUgdW5uZWNlc3NhcnkgcmVzaXplKCkgbm93IHRoYXQg
d2UgY2FuIGdpdmUgdGhlIHRydWUgc2l6ZSB0byBGcmFtZVZpZXcuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6IFVzZSBsYXlvdXRTaXplKCkg
ZGlyZWN0bHkgbm93IHRoYXQgRnJhbWVWaWV3IG5vIGxvbmdlciB1c2VzIGl0LgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRl
c3RzL1dlYkZyYW1lVGVzdC5jcHA6CisKIDIwMTMtMDEtMjggIEphbWVzIENyYWlnICA8amFtZXNA
Y29va2llY3Jvb2suY29tPgogCiAgICAgICAgIEhUTUw1IHByb21vdGVzIERMIGZyb20gc3BlY2lm
aWMgJ2RlZmluaXRpb24gbGlzdCcgdG8gc3VwZXJzZXQgJ2Rlc2NyaXB0aW9uIGxpc3QnOyBhY2Nl
c3NpYmlsaXR5IHN0cmluZ3MgYW5kIGFjY2Vzc29ycyBzaG91bGQgYmUgdXBkYXRlZCB0byBtYXRj
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKaW5kZXggNjM1NDcwMmYxMjhhN2QxNGUwNjY4ODU2ODVlNDA0ZjU1OWRiMzcyYi4uODUy
MzFhOWIwMzZhNDFhNmQwZjY1MTNiOGEyM2UzMDM2YjZlOTY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEwMiw5ICsx
MDIsOCBAQCBwdWJsaWM6CiAgICAgLy8gbW9kZSkuCiAgICAgdmlydHVhbCBXZWJTaXplIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIC8vIEdpdmVzIHRoZSBjb3JyZWN0ZWQg
bG9jYXRpb24gZm9yIGFuIGV2ZW50LCBhY2NvdW50aW5nIGZvciB0aGUgcGluY2gtem9vbSB0cmFu
c2Zvcm1hdGlvbgotICAgIC8vIGluIHRoZSBjb21wb3NpdG9yLgotICAgIHZpcnR1YWwgV2ViRmxv
YXRQb2ludCBhZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKGNvbnN0IFdlYkZsb2F0UG9pbnQm
KSBjb25zdCA9IDA7CisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGFmdGVyIFdlYktpdCByb2xs
CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20o
Y29uc3QgV2ViRmxvYXRQb2ludCYgcCkgY29uc3QgeyByZXR1cm4gcDsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGEyZjcyZDA4ZDVjOWQ1NTBhNjMzOGE5MzI2Njlm
ZGY3ZDU2ODJhNmEuLjQ1NjYzNWMyNDc0ODgwZDIyZDhjNTgyNTE0Mzg0ZTNjZDBkNzRkYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtODcsOCAr
ODcsMTAgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGVsc2UKICAgICAgICAgaXRlbS0+
c2V0U2Nyb2xsUG9pbnQobV9mcmFtZS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAg
IGl0ZW0tPnNldFBhZ2VTY2FsZUZhY3RvcihtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpOwot
ICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSkKKyAgICAgICAgaXRlbS0+c2V0UGFnZVNjYWxl
RmFjdG9yKHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKKwogICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBncmVhdCB0byB3b3JrIG91dCBhIHdheSB0byBwdXQgdGhpcyBjb2RlIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBjYWxsaW5nIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPnNhdmVWaWV3U3RhdGVUb0l0ZW0oaXRlbSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDFkNTI0YzExZGY1ZmIyODg0Mjc3ZDg5Y2MxMWEzNmVl
Y2RhNjRhYi4uODY2M2ExMzhlMmI2ZTQ5MDY3YzllMzIzYWFiZDNhODgwYTcyZTk0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjgzNyw2ICsyODM3LDE3IEBAIEludFJlY3QgRnJh
bWVWaWV3Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UtPmNocm9t
ZSgpLT53aW5kb3dSZXNpemVyUmVjdCgpOwogfQogCitmbG9hdCBGcmFtZVZpZXc6OnZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFt
ZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICghbV9mcmFtZS0+c2V0dGlu
Z3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSB8fCBtX2ZyYW1lICE9IG1f
ZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgcmV0
dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIHZvaWQgRnJhbWVW
aWV3OjpzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYgc2Nyb2xsZXJU
aHVtYikKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNTFjNjRmMzg0MmE3NDcxMjBlYjYwMWMxYTI1ZTZkMDNjMzVlODExMi4u
ZDEzYTc2NzkwODNlZDRmZWY2OTVmOWIwZTMwMzhhYzc0ZGNiZjgzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0xODMsNiArMTgzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBJbnRS
ZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGZsb2F0IHZpc2li
bGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgT1ZFUlJJ
REU7CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggM2EzOTE5NmFlNGY2YTQ5NjdiN2NhYjE5YzA2MTdlYmE2OGZl
NjExMi4uYWVjYmEzMzk2MTY1NmFjNWM0MTU1M2JiZDNiOTcyMWEwYTJkZDIxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC03MjUsNyArNzI1LDggQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAKICAgICBpZiAoc2NhbGUg
PT0gbV9wYWdlU2NhbGVGYWN0b3IpIHsKICAgICAgICAgaWYgKHZpZXcgJiYgKHZpZXctPnNjcm9s
bFBvc2l0aW9uKCkgIT0gb3JpZ2luIHx8IHZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKSkgewot
ICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgICAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcigpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0
aW9uKG9yaWdpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNzMzLDIwICs3MzQs
MjIgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IElu
dFBvaW50JiBvcmlnaW4pCiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOwogCi0gICAg
aWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAgICBkb2N1bWVudC0+cmVuZGVyZXIoKS0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVl
KTsKIAotICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CisgICAgICAgIGRv
Y3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKLSAgICAvLyBUcmFuc2Zvcm0gY2hh
bmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNvbXBvc2l0
ZWQgY29udGVudHMuCi0gICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworICAgICAgICAvLyBUcmFuc2Zvcm0g
Y2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNvbXBv
c2l0ZWQgY29udGVudHMuCisgICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpKTsKKyAgICB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbWFpbkZyYW1lKCktPmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogI2VuZGlmCiAKICAgICBpZiAodmlldyAmJiB2aWV3LT5z
Y3JvbGxQb3NpdGlvbigpICE9IG9yaWdpbikgewotICAgICAgICBpZiAoZG9jdW1lbnQtPnJlbmRl
cmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlk
Rmlyc3RMYXlvdXQoKSkKKyAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRvY3VtZW50LT5y
ZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAg
ICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
b3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IDM4ZWZmYzAwZjg4MTFhOTI0YmI3NWEyNzg2ZjI5ZTQ2ZWFlNDEzODIuLjRlZGFkZjZiMjJiZjk4
ZTk2ZjQ0YTYyNmMxZTIwMTQxODFjYTgyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0yMjUsMTQgKzIyNSwxMyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldERlbGVn
YXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9sbGluZykKICAgICBkZWxlZ2F0ZXNTY3Jv
bGxpbmdEaWRDaGFuZ2UoKTsKIH0KIAotI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAor
SW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShib29sIGluY2x1
ZGVTY3JvbGxiYXJzKSBjb25zdAogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpOwor
ICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJh
cnMpLnNpemUoKTsKIAogICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworICAgICAgICBy
ZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5zaXplKCk7CiAKICAgICBpbnQgdmVydGlj
YWxTY3JvbGxiYXJXaWR0aCA9IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQg
PSAwOwpAQCAtMjQ0LDI2ICsyNDMsMjggQEAgSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29u
dGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKICAgICAgICAgICAgIGhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFy
KCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CiAgICAgfQogCi0gICAgcmV0dXJuIElu
dFJlY3QobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICBtX3Njcm9s
bE9mZnNldC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICBtYXgoMCwgd2lkdGgoKSAtIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgpLCAKKyAgICByZXR1cm4gSW50U2l6ZShtYXgoMCwgd2lkdGgo
KSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAogICAgICAgICAgICAgICAgICAgIG1heCgwLCBo
ZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKIH0KLSNlbmRpZgogCi1JbnRT
aXplIFNjcm9sbFZpZXc6OmxheW91dFNpemUoKSBjb25zdAorI2lmICFQTEFURk9STShHVEspCitJ
bnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxi
YXJzKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5pc0VtcHR5KCkgfHwg
IW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlU2l6ZSgpIDogbV9maXhlZExheW91dFNpemU7Ci19
CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2li
bGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CiAKLWludCBTY3JvbGxWaWV3OjpsYXlv
dXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHko
KSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVXaWR0aCgpIDogbV9maXhlZExheW91dFNp
emUud2lkdGgoKTsKKyAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsKKworICAgIEZsb2F0
U2l6ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShpbmNs
dWRlU2Nyb2xsYmFycyk7CisgICAgdmlzaWJsZUNvbnRlbnRTaXplLnNjYWxlKDEgLyB2aXNpYmxl
Q29udGVudFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KG1fc2Ny
b2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2libGVDb250ZW50U2l6ZSkpOwogfQorI2Vu
ZGlmCiAKLWludCBTY3JvbGxWaWV3OjpsYXlvdXRIZWlnaHQoKSBjb25zdAorSW50U2l6ZSBTY3Jv
bGxWaWV3OjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9maXhlZExheW91dFNp
emUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZUhlaWdodCgpIDogbV9m
aXhlZExheW91dFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlz
RW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXpl
KGZhbHNlKSA6IG1fZml4ZWRMYXlvdXRTaXplOwogfQogCiBJbnRTaXplIFNjcm9sbFZpZXc6OmZp
eGVkTGF5b3V0U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggZTA0M2Y2ZTlmNzQ4M2RjNDFjNDg1YmMxZDVmMWEwNTQwODY0Yzc0Ni4uZmU3YjAxMDExNTI4
NzFjMDIxZWVmZDE1MWI5ODYxOWI2ZGNmOTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaApAQCAtMTUxLDExICsxNTEsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHZp
c2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LndpZHRoKCk7IH0KICAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KIAorICAgIC8vIHZp
c2libGVDb250ZW50UmVjdCgpLnNpemUoKSBpcyBjb21wdXRlZCBmcm9tIHVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKCkgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2YgdmlzaWJsZUNvbnRlbnRTY2Fs
ZUZhY3Rvci4KKyAgICAvLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIHVzdWFsbHkgMSwg
ZXhjZXB0IHdoZW4gdGhlIHNldHRpbmcgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Ig
aXMgdHJ1ZSBhbmQgdGhlCisgICAgLy8gU2Nyb2xsVmlldyBpcyB0aGUgbWFpbiBmcmFtZTsgaW4g
dGhhdCBjYXNlLCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIGVxdWFsIHRvIHRoZSBwYWdl
J3MgcGFnZVNjYWxlRmFjdG9yLgorICAgIC8vIFBvcnRzIHRoYXQgZG9uJ3QgdXNlIHBhZ2VTY2Fs
ZUZhY3RvciBjYW4gdHJlYXQgdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUgYW5kIHZpc2libGVD
b250ZW50UmVjdCgpLnNpemUoKSBhcyBlcXVpdmFsZW50LgorICAgIEludFNpemUgdW5zY2FsZWRW
aXNpYmxlQ29udGVudFNpemUoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CisgICAgdmly
dHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsg
fQorCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0
IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRo
ZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8gY29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNl
dHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxsIGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0ZWFkLgogICAgIEludFNpemUgbGF5b3V0U2l6
ZSgpIGNvbnN0OwotICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0OwotICAgIGludCBsYXlvdXRI
ZWlnaHQoKSBjb25zdDsKKyAgICBpbnQgbGF5b3V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBsYXlv
dXRTaXplKCkud2lkdGgoKTsgfQorICAgIGludCBsYXlvdXRIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBsYXlvdXRTaXplKCkuaGVpZ2h0KCk7IH0KICAgICBJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICBib29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDZiMjk3YWVkNjVkMDIzNzY3
MzdiMDU1ZDQ4NzdlYjE3OWE1MDI4NzQuLjlhNTNkYTE1NWEyYjM1YTE5MjMwNGVmNGM1MjBkNjdl
OWQ1NjZlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpCiB7CiAgICAgaWYgKG1fY2xpcExheWVy
KSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZp
ZXcoKTsKLSAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUoZnJhbWVWaWV3LT52aXNpYmxlQ29u
dGVudFJlY3QoZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKS5zaXplKCkpOworICAgICAg
ICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRT
aXplKGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAqLykpOwogCiAgICAgICAgIGZyYW1lVmll
d0RpZFNjcm9sbCgpOwogICAgICAgICB1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCk7CkBA
IC0xNTQzLDcgKzE1NDMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9v
dExheWVyUG9zaXRpb24oKQogICAgIH0KICAgICBpZiAobV9jbGlwTGF5ZXIpIHsKICAgICAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAg
ICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxz
ZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1fY2xpcExheWVy
LT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UgLyog
ZXhjbHVkZSBzY3JvbGxiYXJzICovKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCmluZGV4IDc5
ZWIxOWFjNWVlNmI4ZmU5NjJkNTg2NWVkNTkzNzFlOWE3MDM2NGYuLmJlZGUyODQ1YjZjN2U3YzRl
MTNkYjM0ZTY3ODU0NWI3NzkzOTA3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b3NpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9zaXplci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBUZXh0QXV0b3NpemVyOjpwcm9j
ZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpCiAgICAgd2luZG93SW5mby53aW5k
b3dTaXplID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKS0+dGV4dEF1dG9zaXppbmdXaW5kb3dTaXpl
T3ZlcnJpZGUoKTsKICAgICBpZiAod2luZG93SW5mby53aW5kb3dTaXplLmlzRW1wdHkoKSkgewog
ICAgICAgICBib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gIUluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkQXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKG1haW5GcmFtZSk7Ci0gICAgICAgIHdp
bmRvd0luZm8ud2luZG93U2l6ZSA9IG1haW5GcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJl
Y3QoaW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAgICAgd2luZG93SW5mby53aW5kb3dT
aXplID0gbWFpbkZyYW1lLT52aWV3KCktPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGluY2x1
ZGVTY3JvbGxiYXJzKTsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5zZXR0aW5ncygpLT5hcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAgICAgICAgICB3aW5kb3dJbmZv
LndpbmRvd1NpemUuc2NhbGUoMSAvIG1fZG9jdW1lbnQtPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IDI2Nzc1NWM3ZjgyZDVjYzJiNjcyOGFhZTcyZmZiNmE0ZGFlZDY1NDIuLjM2MTA0MmE1
MjdlZTRiNGZmNmI1MGZiNjliMGY2YTUwZjkxMTY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE2MTEsMTEgKzE2MTEsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+
d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogfQogCi1XZWJTaXplIFdlYlZpZXdJbXBsOjpzaXplKCkK
K0ludFNpemUgV2ViVmlld0ltcGw6OnNjYWxlZFNpemUoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBj
b25zdAogewotICAgIGlmIChpc0ZpeGVkTGF5b3V0TW9kZUVuYWJsZWQoKSAmJiBzZXR0aW5nc0lt
cGwoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKLSAgICAgICAgcmV0dXJu
IGxheW91dFNpemUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IGRpcFNpemUoKTsKKyAg
ICBzY2FsZWRTaXplLnNjYWxlKDEgLyBwYWdlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAKK1dlYlNpemUgV2ViVmlld0ltcGw6OnNpemUo
KQorewogICAgIHJldHVybiBtX3NpemU7CiB9CiAKQEAgLTE2NDYsNyArMTY1MCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQogICAgIGlmICghYWdl
bnRQcml2YXRlIHx8ICFhZ2VudFByaXZhdGUtPm1ldHJpY3NPdmVycmlkZGVuKCkpIHsKICAgICAg
ICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKICAgICAgICAgaWYg
KHdlYkZyYW1lLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIHdlYkZyYW1lLT5mcmFtZVZpZXco
KS0+cmVzaXplKHNpemUoKSk7CisgICAgICAgICAgICB3ZWJGcmFtZS0+ZnJhbWVWaWV3KCktPnJl
c2l6ZShtX3NpemUpOwogICAgIH0KIAogI2lmIEVOQUJMRShWSUVXUE9SVCkKQEAgLTIwNzcsMzAg
KzIwODEsMjQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJ
bnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKLSAgICAgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0
ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKLQog
ICAgIGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9ICZpbnB1dEV2
ZW50OwotICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKLSAgICBXZWJHZXN0dXJlRXZlbnQg
Z2VzdHVyZUV2ZW50OwotICAgIGlmIChXZWJJbnB1dEV2ZW50Ojppc01vdXNlRXZlbnRUeXBlKGlu
cHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25z
dCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotCi0gICAgICAgIEludFBvaW50IHRyYW5z
Zm9ybWVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobV9sYXllclRyZWVWaWV3LT5hZGp1c3RF
dmVudFBvaW50Rm9yUGluY2hab29tKFdlYkZsb2F0UG9pbnQobW91c2VFdmVudC54LCBtb3VzZUV2
ZW50LnkpKSk7Ci0gICAgICAgIG1vdXNlRXZlbnQueCA9IHRyYW5zZm9ybWVkTG9jYXRpb24ueCgp
OwotICAgICAgICBtb3VzZUV2ZW50LnkgPSB0cmFuc2Zvcm1lZExvY2F0aW9uLnkoKTsKLSAgICAg
ICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVu
dCo+KCZtb3VzZUV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYklucHV0RXZlbnQ6OmlzR2VzdHVy
ZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAgICAgIGdlc3R1cmVFdmVudCA9ICpz
dGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCk7Ci0KLSAgICAg
ICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2ludChtX2xheWVy
VHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oV2ViRmxvYXRQb2ludChnZXN0
dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKSk7Ci0gICAgICAgIGdlc3R1cmVFdmVudC54ID0g
dHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIGdlc3R1cmVFdmVudC55ID0gdHJhbnNm
b3JtZWRMb2NhdGlvbi55KCk7Ci0gICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAgICBpZiAobV9w
YWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Cisg
ICAgICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKKyAgICAgICAgV2ViR2VzdHVyZUV2ZW50
IGdlc3R1cmVFdmVudDsKKyAgICAgICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5
cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOworICAgICAgICAgICAgbW91
c2VFdmVudC54ID0gbW91c2VFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAg
ICBtb3VzZUV2ZW50LnkgPSBtb3VzZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0
RXZlbnQqPigmbW91c2VFdmVudCk7CisgICAgICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6
aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKKyAgICAgICAgICAgIGdlc3R1
cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVu
dCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueCA9IGdlc3R1cmVFdmVudC54IC8gcGFnZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueSA9IGdlc3R1cmVFdmVudC55
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQg
PSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJmdlc3R1cmVFdmVudCk7CisgICAg
ICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhbmRsZWQgPSBQYWdlV2lkZ2V0RGVsZWdhdGU6Omhh
bmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKmlucHV0RXZlbnRUcmFuc2Zvcm1l
ZCk7Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6
aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9y
bWVkKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgpCkBAIC0yOTE1
LDM0ICsyOTEzLDQwIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpjbGFtcFBhZ2VTY2FsZUZhY3RvclRv
TGltaXRzKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIHJldHVybiBtaW4obWF4KHNjYWxlRmFjdG9y
LCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwog
fQogCi1XZWJQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYlBv
aW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKQorSW50UG9pbnQgV2ViVmlld0ltcGw6OmNsYW1wT2Zm
c2V0QXRTY2FsZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkgY29uc3QKIHsK
LSAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXplLiBXZSBuZWVkIHRvIGNvbnZl
cnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCi0gICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9
IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2Nh
bGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgZG9jV2lkdGhBdE5ld1NjYWxlID0gY29u
dGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOwotICAgIGludCBkb2NIZWlnaHRBdE5ld1NjYWxl
ID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsKLSAgICBpbnQgdmlld1dpZHRoID0g
bV9zaXplLndpZHRoOwotICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdodDsKLQotICAg
IC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0aW9ucyBhdCB0
aGUgbmV3IHNjYWxlLgogICAgIEludFBvaW50IGNsYW1wZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAg
Y2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoZG9jV2lkdGhB
dE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0gdmlld0hlaWdodCkp
OwotICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIGlmICghbV9w
YWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxlZCBjb250ZW50IHNpemUuIFdlIG5lZWQgdG8gY29u
dmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZhY3Rvci4KKyAgICAgICAgV2ViU2l6ZSBjb250ZW50
U2l6ZSA9IGNvbnRlbnRzU2l6ZSgpOworICAgICAgICBpbnQgZG9jV2lkdGhBdE5ld1NjYWxlID0g
Y29udGVudFNpemUud2lkdGggKiBzY2FsZTsKKyAgICAgICAgaW50IGRvY0hlaWdodEF0TmV3U2Nh
bGUgPSBjb250ZW50U2l6ZS5oZWlnaHQgKiBzY2FsZTsKKyAgICAgICAgaW50IHZpZXdXaWR0aCA9
IG1fc2l6ZS53aWR0aDsKKyAgICAgICAgaW50IHZpZXdIZWlnaHQgPSBtX3NpemUuaGVpZ2h0Owor
CisgICAgICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0
aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgorICAgICAgICBjbGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9m
ZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0TmV3U2NhbGUgLSB2aWV3V2lkdGgsIGRv
Y0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7CisgICAgICAgIGNsYW1wZWRPZmZzZXQu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsYW1wZWRPZmZz
ZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGNvbnRlbnRzU2l6ZSgpIC0gc2Nh
bGVkU2l6ZShzY2FsZSkpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisgICAgfQorCiAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQ7CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoZmxvYXQg
c2NhbGVGYWN0b3IpCiB7Ci0gICAgLy8gUGljayBhIHNjYWxlIGZhY3RvciB0aGF0IGlzIHdpdGhp
biB0aGUgZXhwZWN0ZWQgbGltaXRzCiAgICAgc2NhbGVGYWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZh
Y3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKIAotICAgIEludFBvaW50IHNjcm9sbE9mZnNldEF0
TmV3U2NhbGUobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBtYWluRnJhbWUoKS0+
c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKLSAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2NhbGVGYWN0
b3IgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLnNjYWxl
KGRlbHRhU2NhbGUsIGRlbHRhU2NhbGUpOworICAgIEludFBvaW50IHNjcm9sbE9mZnNldChtYWlu
RnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQo
KS5oZWlnaHQpOworICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZh
Y3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBzY3JvbGxPZmZzZXQuc2NhbGUoZGVs
dGFTY2FsZSwgZGVsdGFTY2FsZSk7CisgICAgfQorICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zm
c2V0QXRTY2FsZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKIAotICAgIFdlYlBvaW50IGNs
YW1wZWRPZmZzZXRBdE5ld1NjYWxlID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldEF0
TmV3U2NhbGUsIHNjYWxlRmFjdG9yKTsKLSAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0
b3IsIGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlKTsKKyAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2Nh
bGVGYWN0b3IsIHNjcm9sbE9mZnNldCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikKQEAg
LTI5NTMsMjIgKzI5NTcsMTcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9y
KGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQogICAgIGlmICghc2Nh
bGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMTsKIAorICAgIEludFBvaW50IHNjcm9s
bE9mZnNldCA9IG9yaWdpbjsKICAgICBzY2FsZUZhY3RvciA9IGNsYW1wUGFnZVNjYWxlRmFjdG9y
VG9MaW1pdHMoc2NhbGVGYWN0b3IpOwotICAgIFdlYlBvaW50IHNjcm9sbE9mZnNldDsKLSAgICBp
ZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
KSkgewotICAgICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIG5vdCBhcHBsaWVkIGluIHRoZSBjb21w
b3NpdG9yLCB0aGVuIHRoZSBzY3JvbGwgb2Zmc2V0cyBzaG91bGQKLSAgICAgICAgLy8gYmUgbW9k
aWZpZWQgYnkgdGhlIHNjYWxlIGZhY3Rvci4KLSAgICAgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBP
ZmZzZXRBdFNjYWxlKG9yaWdpbiwgc2NhbGVGYWN0b3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEludFBvaW50IG9mZnNldCA9IG9yaWdpbjsKLSAgICAgICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9
IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgb2Zmc2V0LnNocnVua1RvKElu
dFBvaW50KGNvbnRlbnRTaXplLndpZHRoIC0gbV9zaXplLndpZHRoLCBjb250ZW50U2l6ZS5oZWln
aHQgLSBtX3NpemUuaGVpZ2h0KSk7Ci0gICAgICAgIG9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJv
KCk7Ci0gICAgICAgIHNjcm9sbE9mZnNldCA9IG9mZnNldDsKLSAgICB9CisgICAgc2Nyb2xsT2Zm
c2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwgc2NhbGVGYWN0b3IpOworCisg
ICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHNjcm9s
bE9mZnNldCkpOwogCi0gICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3Is
IHNjcm9sbE9mZnNldCk7CiAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9IHRydWU7CisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3Bv
cnQoKTsKKyNlbmRpZgogfQogCiBmbG9hdCBXZWJWaWV3SW1wbDo6ZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdApAQCAtMzA1MiwxMiArMzA1MSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25v
cmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZShib29sIGZsYWcpCiAgICAgbV9wYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHBhZ2UoKS0+
bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCkpOwogfQogCi1zdGF0
aWMgSW50U2l6ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZShGcmFtZSogZnJhbWUpCitJbnRTaXplIFdl
YlZpZXdJbXBsOjpjb250ZW50c1NpemUoKSBjb25zdAogeworICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7Ci0g
ICAgcmV0dXJuIHJvb3QtPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkuc2l6ZSgpOworCisgICAgcmV0
dXJuIHJvb3QtPmRvY3VtZW50UmVjdCgpLnNpemUoKTsKIH0KIAogSW50U2l6ZSBXZWJWaWV3SW1w
bDo6bGF5b3V0U2l6ZSgpIGNvbnN0CkBAIC0zMDY1LDcgKzMwNjYsOCBAQCBJbnRTaXplIFdlYlZp
ZXdJbXBsOjpsYXlvdXRTaXplKCkgY29uc3QKICAgICBpZiAoIWlzRml4ZWRMYXlvdXRNb2RlRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gbV9zaXplOwogCi0gICAgSW50U2l6ZSBjb250ZW50U2l6
ZSA9IHVuc2NhbGVkQ29udGVudHNTaXplKHBhZ2UoKS0+bWFpbkZyYW1lKCkpOworICAgIEludFNp
emUgY29udGVudFNpemUgPSBjb250ZW50c1NpemUoKTsKKwogICAgIGlmIChmaXhlZExheW91dFNp
emUoKS53aWR0aCA+PSBjb250ZW50U2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gZml4ZWRM
YXlvdXRTaXplKCk7CiAKQEAgLTMwOTcsNyArMzA5OSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNv
bXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKQogICAgIGludCB2aWV3V2lkdGhOb3RJbmNsdWRp
bmdTY3JvbGxiYXJzID0gbV9zaXplLndpZHRoOwogICAgIGlmICh2aWV3V2lkdGhOb3RJbmNsdWRp
bmdTY3JvbGxiYXJzICYmIHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIXZpZXctPnZlcnRp
Y2FsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICB2aWV3V2lkdGhO
b3RJbmNsdWRpbmdTY3JvbGxiYXJzIC09IHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRo
KCk7Ci0gICAgaW50IHVuc2NhbGVkQ29udGVudHNXaWR0aCA9IHVuc2NhbGVkQ29udGVudHNTaXpl
KHBhZ2UoKS0+bWFpbkZyYW1lKCkpLndpZHRoKCk7CisgICAgaW50IHVuc2NhbGVkQ29udGVudHNX
aWR0aCA9IGNvbnRlbnRzU2l6ZSgpLndpZHRoKCk7CiAgICAgaWYgKHZpZXdXaWR0aE5vdEluY2x1
ZGluZ1Njcm9sbGJhcnMgJiYgdW5zY2FsZWRDb250ZW50c1dpZHRoKSB7CiAgICAgICAgIC8vIExp
bWl0IHBhZ2Ugc2NhbGluZyBkb3duIHRvIHRoZSBkb2N1bWVudCB3aWR0aC4KICAgICAgICAgbV9t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yID0gbWF4KG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvciwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMpIC8gdW5zY2Fs
ZWRDb250ZW50c1dpZHRoKTsKQEAgLTM3NDksMTUgKzM3NTEsMTAgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKCkKICAgICB9IGVsc2UKICAgICAgICAgbWF5TmVlZExh
eW91dCA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKIAotICAgIEZyYW1lVmlldyog
dmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHNldHRpbmdzSW1w
bCgpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHZpZXcgJiYgdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpLndpZHRoKCkgIT0gbGF5b3V0U2l6ZSgpLndpZHRoKCkp
IHsKLSAgICAgICAgdmlldy0+cmVzaXplKGxheW91dFNpemUoKSk7Ci0gICAgICAgIG1heU5lZWRM
YXlvdXQgPSB0cnVlOwotICAgIH0KLQogICAgIC8vIGRpZENoYW5nZUNvbnRlbnRzU2l6ZSgpIG1h
eSBiZSBjYWxsZWQgZnJvbSBGcmFtZVZpZXc6OmxheW91dDsgd2UgbmVlZCB0bwogICAgIC8vIHJl
bGF5b3V0IHRvIGF2b2lkIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiB0aGF0IG5lZWRzTGF5b3V0
KCkgaXNuJ3Qgc2V0CiAgICAgLy8gYXQgdGhlIGVuZCBvZiBhIGxheW91dC4KKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwogICAgIGlmIChtYXlOZWVk
TGF5b3V0ICYmIHZpZXcgJiYgdmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5
b3V0KCk7CiAjZW5kaWYKQEAgLTQyMzMsMTYgKzQyMzAsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVjdCB2aXNp
YmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8qIGluY2x1ZGUgc2Nyb2xs
YmFycyAqLyk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKHZpZXctPnNjcm9sbFgoKSwgdmlldy0+c2Ny
b2xsWSgpKTsKIAotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydCh2
aXNpYmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCBzY3JvbGwsIHZpZXctPnNj
cm9sbE9yaWdpbigpKTsKLQotICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gdmlzaWJs
ZVJlY3Quc2l6ZSgpOworICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gbGF5b3V0U2l6
ZSgpOwogICAgIEludFNpemUgZGV2aWNlVmlld3BvcnRTaXplID0gbV9zaXplOwogICAgIGlmICht
X3dlYlNldHRpbmdzLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAg
ICAgIGRldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKIAorICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChkZXZpY2VWaWV3cG9ydFNp
emUsIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCB2aWV3LT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3LT5z
Y3JvbGxPcmlnaW4oKSk7CisKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdwb3J0U2l6ZShs
YXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CiAgICAgbV9sYXllclRyZWVW
aWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWlu
aW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRjN2E5MmUzZmYzMTZmMzFi
MzcyMGRlNTg4NmE2NjA3ZTYzNzI4Y2QuLjkxZTI3MTA2YTFmY2NhYzU2YmQxNjBkOTI4NjQ2Y2Fm
MTg5NjBkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFNpemUgZGlwU2l6ZSgp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0OworICAgIFdl
YkNvcmU6OkludFNpemUgc2NhbGVkU2l6ZShmbG9hdCkgY29uc3Q7CiAKICAgICAvLyBTZXQgdGhl
IGRpc3Bvc2l0aW9uIGZvciBob3cgdGhpcyB3ZWJ2aWV3IGlzIHRvIGJlIGluaXRpYWxseSBzaG93
bi4KICAgICB2b2lkIHNldEluaXRpYWxOYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Qb2xp
Y3kgcG9saWN5KQpAQCAtNjExLDcgKzYxMiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9v
bCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxvYXQgY2xhbXBQYWdlU2Nh
bGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7Ci0gICAgV2ViUG9pbnQgY2xhbXBPZmZzZXRB
dFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKTsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9m
ZnNldCwgZmxvYXQgc2NhbGUpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFNpemUgY29udGVudHNT
aXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRl
eCBhYmY5MTg2NWI4NDJjOTdjNzM3MDc2YTliYzNiNmI1ZTAxOTExMDU3Li42YjZjMzhkNGJlMWI5
ZjM5MmFiN2U5NDdmN2U2ODgxY2E4NjlmNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJh
bWVUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCkBAIC0z
MDksNiArMzEwLDExMCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBTY2FsZUZhY3RvclNob3VsZE5v
dE9zY2lsbGF0ZSkKICAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CiB9CiAKK1RFU1RfRihXZWJG
cmFtZVRlc3QsIHNldFBhZ2VTY2FsZUZhY3RvckRvZXNOb3RMYXlvdXQpCit7CisgICAgcmVnaXN0
ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5
b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2
aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGlu
dCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9
IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRB
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygp
LT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJT
aXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPmxh
eW91dCgpOworCisgICAgaW50IHByZXZMYXlvdXRDb3VudCA9IHdlYlZpZXdJbXBsLT5tYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXRDb3VudCgpOworICAgIHdlYlZpZXdJbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoMywgV2ViUG9pbnQoKSk7CisgICAgRVhQRUNUX0VRKGZhbHNlLCB3
ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7
CisgICAgRVhQRUNUX0VRKHByZXZMYXlvdXRDb3VudCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dENvdW50KCkpOworfQorCitURVNUX0YoV2ViRnJhbWVU
ZXN0LCBwYWdlU2NhbGVGYWN0b3JXcml0dGVuVG9IaXN0b3J5SXRlbSkKK3sKKyAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlv
dXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZp
Y2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50
IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50
KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFw
cGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5l
bmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCkt
PnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNp
emUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5
b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDMsIFdlYlBvaW50
KCkpOworICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgIHdlYlZpZXdJbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoMSwgV2ViUG9pbnQoKSk7CisgICAgd2ViVmlld0ltcGwtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlc3RvcmVTY3JvbGxQb3NpdGlv
bkFuZFZpZXdTdGF0ZSgpOworICAgIEVYUEVDVF9FUSgzLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxl
RmFjdG9yKCkpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBwYWdlU2NhbGVGYWN0b3JTaHJp
bmtzVmlld3BvcnQpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5
b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50Owor
ICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2
aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBp
bnQgdmlld3BvcnRXaWR0aE1pbnVzU2Nyb2xsYmFyID0gNjQwIC0gMTU7CisgICAgaW50IHZpZXdw
b3J0SGVpZ2h0TWludXNTY3JvbGxiYXIgPSA0ODAgLSAxNTsKKworICAgIFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1
ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURl
dmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0
aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3
ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBs
LT5zZXR0aW5ncygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwt
PnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2Vi
Vmlld0ltcGwtPmxheW91dCgpOworCisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rv
cigyLCBXZWJQb2ludCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgdW5zY2FsZWRTaXplID0g
d2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKHRydWUpOworICAgIEVYUEVDVF9FUSh2aWV3cG9ydFdpZHRoLCB1bnNjYWxl
ZFNpemUud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKHZpZXdwb3J0SGVpZ2h0LCB1bnNjYWxlZFNp
emUuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSB1bnNjYWxlZFNpemVNaW51c1Nj
cm9sbGJhciA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT51bnNj
YWxlZFZpc2libGVDb250ZW50U2l6ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKHZpZXdwb3J0V2lk
dGhNaW51c1Njcm9sbGJhciwgdW5zY2FsZWRTaXplTWludXNTY3JvbGxiYXIud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0VRKHZpZXdwb3J0SGVpZ2h0TWludXNTY3JvbGxiYXIsIHVuc2NhbGVkU2l6ZU1p
bnVzU2Nyb2xsYmFyLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgc2NhbGVkU2l6
ZSA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT52aXNpYmxlQ29u
dGVudFJlY3QoKS5zaXplKCk7CisgICAgRVhQRUNUX0VRKGNlaWwodmlld3BvcnRXaWR0aE1pbnVz
U2Nyb2xsYmFyIC8gMi4wKSwgc2NhbGVkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoY2Vp
bCh2aWV3cG9ydEhlaWdodE1pbnVzU2Nyb2xsYmFyIC8gMi4wKSwgc2NhbGVkU2l6ZS5oZWlnaHQo
KSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvckRvZXNOb3RBcHBs
eUNzc1RyYW5zZm9ybSkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9s
YXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7
CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50
IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworCisg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRf
bGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRp
bmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAg
d2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7
CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsK
KyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRI
ZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOworCisgICAgRVhQRUNUX0VRKDEsIHdl
YlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5mcmFtZVNjYWxlRmFjdG9yKCkpOworICAg
IEVYUEVDVF9FUSg5ODAsIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5jb250ZW50
UmVuZGVyZXIoKS0+dW5zY2FsZWREb2N1bWVudFJlY3QoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoOTgwLCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+Y29udGVu
dHNTaXplKCkud2lkdGgoKSk7Cit9CiAjZW5kaWYKIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2Fu
T3ZlcnJpZGVNYXhpbXVtU2NhbGVGYWN0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185103</attachid>
            <date>2013-01-28 16:43:42 -0800</date>
            <delta_ts>2013-01-28 16:54:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107424-20130128164029.patch</filename>
            <type>text/plain</type>
            <size>38974</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZDQ4NDY0Y2QzMTYy
M2Y2ZWE0NWZkYTUxMGQ0MThmZTBhMTkzMGFjLi5jMmRhYTUzMDgyMTNhYjBiODg0ZDZlMzgyYjc0
ZDZkNjRlNTM5ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yOCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3J0IFJlc291cmNlUmVxdWVz
dCdzIHByaW9yaXR5IHRocm91Z2ggV2ViVVJMUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFjZjIzOGUz
NzhkNzRiYjQzMjBkNDI1MjkxZjhjZDk0Yjk2YjZhMmIuLjIwNDliZDUzZDNkNDk5YzRjN2Y5Y2Zi
ZGIyNWZmMjI1Y2I1ZjYyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMy0wMS0y
OCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtl
IHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRv
ciBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
ZiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1v
bmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhw
YW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hy
aW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bwor
ICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1w
bGlmaWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRo
ZSB0cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQg
dGhhdCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAg
ICAgIHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6
ZSwKKyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4
dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBz
aXplLiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNp
YmxlQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0g
bm8KKyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2Fs
ZUZhY3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1l
U2NhbGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRp
ZWQgdG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0
Y2ggc2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICBO
ZXcgdW5pdCB0ZXN0cyBpbiBXZWJGcmFtZVRlc3QuY3BwLgorCisgICAgICAgICogbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOiBVc2UgcGFnZVNjYWxlRmFj
dG9yIGhlcmUgYmVjYXVzZSBmcmFtZVNjYWxlRmFjdG9yIGFsd2F5cyByZXR1cm5zIDEgd2l0aCBv
dXIgc2V0dGluZy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnZpc2libGVDb250ZW50U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBh
Z2VTY2FsZUZhY3Rvcik6IE1ha2Ugc2V0UGFnZVNjYWxlRmFjdG9yIHN0b3AgaW52YWxpZGF0aW5n
L2xheW91dGluZyBhcyB0aGlzIGlzIGhhbmRsZWQgYnkgb3VyIGNvbXBvc2l0b3IuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSk6IFRoaXMgbmV3IG1ldGhvZCBqdXN0IHJldHVy
bnMgdGhlIG9yaWdpbmFsIHZpc2libGUgcmVjdCB3aXRob3V0IHBhZ2VTY2FsZUZhY3RvciBiZWlu
ZyBhcHBsaWVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOiBUaGlzIG5vdyBpcyBkaXZpZGVkIGJ5IHBhZ2VTY2Fs
ZUZhY3RvciBpZiBvdXIgc2V0dGluZyBpcyBhY3RpdmUuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpsYXlvdXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKTog
UmV0dXJucyBwYWdlU2NhbGVGYWN0b3IgaWYgdGhlIHZpc2libGUgcmVjdCBpcyBzY2FsZWQsIDEg
bm9ybWFsbHkuCisgICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmxheW91
dEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZENo
YW5nZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVSb290TGF5ZXJQb3NpdGlvbik6IENsaXAgbGF5ZXIgc2hvdWxkIHVzZSB1bnNjYWxlZCBzaXpl
LgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKTogVGV4dCBhdXRvc2l6ZXIgc2hvdWxk
IHVzZSB1bnNjYWxlZCBzaXplLgorCiAyMDEzLTAxLTI4ICBLYWxldiBMZW1iZXIgIDxrYWxldmxl
bWJlckBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gUGFzcyBJQ1UgY3BwZmxhZ3MgdG8gbGli
V2ViQ29yZVNWRy5sYSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmODgwZDcx
N2Y0NmFjYTRiMmYyMzhjZjYxZGM1MmMxYWM3ZTU5MjBjLi43NDE1OGZhNWFiZWU1N2FlMDNjMzVk
OTY2ZTllNWMzNDc5YjI2ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTAxLTI4ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgcGFnZSBzY2FsZSBzaHJpbmsgRnJhbWVWaWV3IGluIGFwcGx5UGFn
ZVNjYWxlSW5Db21wb3NpdG9yIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIElmIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGlzIGVu
YWJsZWQgKENocm9taXVtLW9ubHkgc2V0dGluZyksCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGVu
dGlyZSBkb2N1bWVudCBleHBhbmRpbmcgYXMgdGhlIHVzZXIgcGluY2ggem9vbXMsIHRoZQorICAg
ICAgICB2aWV3cG9ydCBzaHJpbmtzIGluc3RlYWQuIFRoaXMgcGF0Y2ggYXBwbGllcyB0aGUgcGFn
ZVNjYWxlRmFjdG9yIHRvCisgICAgICAgIHZpc2libGVDb250ZW50UmVjdCB0byBnZXQgdGhpcyBi
ZWhhdmlvciwgYW5kIHNpbXBsaWZpZXMgQ2hyb21pdW0ncworICAgICAgICByZXNpemUgbG9naWMg
dG8gc3RvcCBoaWRpbmcgdGhlIHRydWUgdmlld3BvcnQgc2l6ZSBmcm9tIFdlYkNvcmUuCisKKyAg
ICAgICAgSSB2ZXJpZmllZCB0aGF0IHRoZSBzY2FsaW5nIG1ha2VzIHNlbnNlIGZvciBhbGwgdGhl
IGNhbGxlcnMgb2YKKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0LiBUaGUgZXhjZXB0aW9ucyBh
cmUgY2xpcC1sYXllciBzaXplLAorICAgICAgICBsYXlvdXQgc2l6ZSBpbiBub24tZml4ZWQtbGF5
b3V0IG1vZGUsIGFuZCB0ZXh0IGF1dG9zaXppbmcsIHdoaWNoIG5lZWQKKyAgICAgICAgdGhlIG9y
aWdpbmFsIHVuc2NhbGVkIHNpemUuIFRoZXJlZm9yZSBJIGFkZGVkIGEgbmV3IG1ldGhvZAorICAg
ICAgICB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSgpIHRvIFNjcm9sbFZpZXcvRnJhbWVWaWV3
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyBQYWdlOjpzZXRQYWdlU2NhbGVG
YWN0b3IgdG8gcGVyZm9ybSBubworICAgICAgICBpbnZhbGlkYXRlcyBvciBsYXlvdXQgd2hlbiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlLAorICAgICAgICBhbmQgYWxz
byB3cml0ZXMgcGFnZVNjYWxlRmFjdG9yIGludG8gSGlzdG9yeUl0ZW1zIGluc3RlYWQgb2YgdXNp
bmcKKyAgICAgICAgZnJhbWVTY2FsZUZhY3Rvci4KKworICAgICAgICBTaW5jZSBhbGwgYmVoYXZp
b3IgY2hhbmdlcyBhcmUgdGllZCB0byBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciwK
KyAgICAgICAgdGhpcyBwYXRjaCBzaG91bGQgYmUgYSBuby1vcCBmb3Igbm9uLUNocm9taXVtIHBv
cnRzLgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNjYWxlZFNpemUpOiBSZXR1cm5zIHRoZSBwb3N0IHBhZ2Utc2NhbGUgc2l6
ZSBzaW1pbGFyIHRvIHdoYXQgdmlzaWJsZUNvbnRlbnRSZWN0KCkgbm93IHJldHVybnMsIGV4Y2Vw
dCB0aGF0IGl0IG1heSBiZSBhdCBhIGRpZmZlcmVudCBzY2FsZSB0aGFuIHRoZSBjdXJyZW50IG9u
ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNpemUpOiBCYWNrIHRvIHJldHVybmlu
ZyBkZW5zaXR5LWluZGVwZW5kZW50IHNpemUgd2l0aG91dCBhbnkgdHJpY2tzLCBub3QgdGhlICJs
YXlvdXRTaXplKCkiIGZha2Ugdmlld3BvcnQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVu
dCk6IE5vIG5lZWQgdG8gYXBwbHkgaW1wbFRyYW5zZm9ybSBhbnltb3JlIGFzIFdlYktpdCBrbm93
cyB0aGUgdHJ1ZSBzY3JvbGwgb2Zmc2V0OyBqdXN0IGRpdmlkZSBldmVudCBjb29yZHMgYnkgcGFn
ZVNjYWxlRmFjdG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRB
dFNjYWxlKTogTWFrZSB0aGlzIG1ldGhvZCBzdXBwb3J0IGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yLiAgVGhpcyBpcyB1c2VkIHRvIHByZS1jbGFtcCBzY3JvbGwgb2Zmc2V0cyBhdCBh
IGdpdmVuIHZpZXdwb3J0IHNpemUuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQ
YWdlU2NhbGVGYWN0b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0KTogTWFrZSB0aGlzIG1ldGhvZCBz
dXBwb3J0IGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIChkb24ndCBzY2FsZSBzY3Jv
bGwgb2Zmc2V0cyBhcyB0aGV5IGFyZSBub3cgc2NhbGUtaW5kZXBlbmRlbnQpLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKTogTWFrZSB0aGlzIG1ldGhv
ZCBhbHdheXMgdXNlIGNsYW1wT2Zmc2V0QXRTY2FsZSBpbnN0ZWFkIG9mIGJ5cGFzc2luZyBpdCwg
c2luY2UgaXQncyBub3cgc3VwcG9ydGVkLiAgQWxzbyBub3RpZnkgdGhlIGNvbXBvc2l0b3IgdG8g
dXBkYXRlIGl0cyBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbnRlbnRz
U2l6ZSk6IENvbnZlbmllbmNlIG1ldGhvZCwgcmVtb3ZlZCBkaWZmZXJlbmNlIGJldHdlZW4gc2Nh
bGVkIGFuZCB1bnNjYWxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxheW91dFNp
emUpOiBUaGlzIG1ldGhvZCByZXR1cm5lZCB0aGUgImZha2UiIHNpemUgd2UgdXNlZCB0byBnaXZl
IEZyYW1lVmlldy4gIE5vdyBubyBsb25nZXIgdXNlZCBmb3IgbXVjaC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKTogUmVtb3ZlIHVubmVj
ZXNzYXJ5IHJlc2l6ZSgpIG5vdyB0aGF0IHdlIGNhbiBnaXZlIHRoZSB0cnVlIHNpemUgdG8gRnJh
bWVWaWV3LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmll
d3BvcnQpOiBVc2UgbGF5b3V0U2l6ZSgpIGRpcmVjdGx5IG5vdyB0aGF0IEZyYW1lVmlldyBubyBs
b25nZXIgdXNlcyBpdC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdl
YlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorCiAyMDEzLTAx
LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQxMDA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA2MzU0NzAyZjEyOGE3
ZDE0ZTA2Njg4NTY4NWU0MDRmNTU5ZGIzNzJiLi44NTIzMWE5YjAzNmE0MWE2ZDBmNjUxM2I4YTIz
ZTMwMzZiNmU5NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMTAyLDkgKzEwMiw4IEBAIHB1YmxpYzoKICAgICAvLyBt
b2RlKS4KICAgICB2aXJ0dWFsIFdlYlNpemUgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAw
OwogCi0gICAgLy8gR2l2ZXMgdGhlIGNvcnJlY3RlZCBsb2NhdGlvbiBmb3IgYW4gZXZlbnQsIGFj
Y291bnRpbmcgZm9yIHRoZSBwaW5jaC16b29tIHRyYW5zZm9ybWF0aW9uCi0gICAgLy8gaW4gdGhl
IGNvbXBvc2l0b3IuCi0gICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFkanVzdEV2ZW50UG9pbnRG
b3JQaW5jaFpvb20oY29uc3QgV2ViRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHJvbGwKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9p
bnQgYWRqdXN0RXZlbnRQb2ludEZvclBpbmNoWm9vbShjb25zdCBXZWJGbG9hdFBvaW50JiBwKSBj
b25zdCB7IHJldHVybiBwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5k
ZXggYTJmNzJkMDhkNWM5ZDU1MGE2MzM4YTkzMjY2OWZkZjdkNTY4MmE2YS4uNDU2NjM1YzI0NzQ4
ODBkMjJkOGM1ODI1MTQzODRlM2NkMGQ3NGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC04Nyw4ICs4NywxMCBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0q
IGl0ZW0pCiAgICAgZWxzZQogICAgICAgICBpdGVtLT5zZXRTY3JvbGxQb2ludChtX2ZyYW1lLT52
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaXRlbS0+c2V0UGFnZVNjYWxlRmFjdG9y
KG1fZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAgCisgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAocGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBtX2Zy
YW1lKQorICAgICAgICBpdGVtLT5zZXRQYWdlU2NhbGVGYWN0b3IocGFnZS0+cGFnZVNjYWxlRmFj
dG9yKCkpOworCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGdyZWF0IHRvIHdvcmsgb3V0IGEg
d2F5IHRvIHB1dCB0aGlzIGNvZGUgaW4gV2ViQ29yZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhyb3Vn
aCB0byB0aGUgY2xpZW50LgogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2F2ZVZp
ZXdTdGF0ZVRvSXRlbShpdGVtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBl
YmZlMWM4MWRjYzM5MzBkNDdkZDg1ZjVlNDU1YWIyMDZkMDZiMGFmLi5hNThkNmEwNDQ1NDJjNjcy
NTk2MTYyZTkzYzNmOGM4YWEzOWQ3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yODM3LDYgKzI4MzcsMTcgQEAgSW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd1Jlc2l6ZXJSZWN0
KCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPndpbmRvd1Jlc2l6ZXJSZWN0KCk7
CiB9CiAKK2Zsb2F0IEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVy
biAxOworCisgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpIHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdl
U2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1iKQogewogICAgIFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA1MWM2NGYzODQy
YTc0NzEyMGViNjAxYzFhMjVlNmQwM2MzNWU4MTEyLi5kMTNhNzY3OTA4M2VkNGZlZjY5NWY5YjBl
MzAzOGFjNzRkY2JmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE4Myw2ICsxODMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgZmxvYXQgdmlzaWJsZUNvbnRlbnRTY2FsZUZhY3RvcigpIGNv
bnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsKICAgICB2b2lkIHNjcm9sbFBvc2l0
aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzYTM5
MTk2YWU0ZjZhNDk2N2I3Y2FiMTljMDYxN2ViYTY4ZmU2MTEyLi5hZWNiYTMzOTYxNjU2YWM1YzQx
NTUzYmJkM2I5NzIxYTBhMmRkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTcyNSw3ICs3MjUs
OCBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIG9yaWdpbikKIAogICAgIGlmIChzY2FsZSA9PSBtX3BhZ2VTY2FsZUZhY3Rvcikgewog
ICAgICAgICBpZiAodmlldyAmJiAodmlldy0+c2Nyb2xsUG9zaXRpb24oKSAhPSBvcmlnaW4gfHwg
dmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgICAgICBpZiAoIW1f
c2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
ICAgICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ob3JpZ2luKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CkBAIC03MzMsMjAgKzczNCwyMiBAQCB2b2lkIFBhZ2U6OnNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAogICAgIG1f
cGFnZVNjYWxlRmFjdG9yID0gc2NhbGU7CiAKLSAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAg
ICBpZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgZG9jdW1lbnQt
PnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCi0gICAgZG9jdW1lbnQtPnJlY2Fs
Y1N0eWxlKE5vZGU6OkZvcmNlKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKE5vZGU6
OkZvcmNlKTsKIAotICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ugb24gUmVuZGVyVmlldyBkb2Vzbid0
IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBjb250ZW50cy4KLSAgICBtYWluRnJh
bWUoKS0+dmlldygpLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KExheW91dFJlY3Q6OmluZmluaXRl
UmVjdCgpKSk7CisgICAgICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ugb24gUmVuZGVyVmlldyBkb2Vz
bid0IHRyaWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBjb250ZW50cy4KKyAgICAgICAg
bWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdChMYXlvdXRSZWN0Ojpp
bmZpbml0ZVJlY3QoKSkpOworICAgIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBtYWluRnJhbWUoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAj
ZW5kaWYKIAogICAgIGlmICh2aWV3ICYmIHZpZXctPnNjcm9sbFBvc2l0aW9uKCkgIT0gb3JpZ2lu
KSB7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVuZGVy
ZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3LT5kaWRGaXJzdExheW91dCgpKQorICAgICAgICBp
ZiAoIW1fc2V0dGluZ3MtPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgZG9j
dW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkg
JiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKICAgICAgICAgICAgIHZpZXctPmxheW91dCgpOwog
ICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggOGE2OTc2OTBjZGYyMDM1ZjRhNjBiNDIy
NTI5YTljY2FhMGFmZmRlMC4uMDQ3Mjc5MTE3MjFmZGY5OTdkMGNhYjMyODA2NDg5MzI0MzNjZjI2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTIyNSwxNCArMjI1
LDEzIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVsZWdh
dGVzU2Nyb2xsaW5nKQogICAgIGRlbGVnYXRlc1Njcm9sbGluZ0RpZENoYW5nZSgpOwogfQogCi0j
aWYgIVBMQVRGT1JNKEdUSykKLUludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0
KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZpZXc6OnVuc2Nh
bGVkVmlzaWJsZUNvbnRlbnRTaXplKGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7CiAg
ICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2libGVD
b250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZp
c2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOwogCiAgICAgaWYgKCFt
X2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fZml4
ZWRWaXNpYmxlQ29udGVudFJlY3Q7CisgICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0LnNpemUoKTsKIAogICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsKICAg
ICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9IDA7CkBAIC0yNDQsMjYgKzI0MywyOCBA
QCBJbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3Jv
bGxiYXJzKSBjb25zdAogICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFo
b3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdo
dCgpIDogMDsKICAgICB9CiAKLSAgICByZXR1cm4gSW50UmVjdChtX3Njcm9sbE9mZnNldC53aWR0
aCgpLAotICAgICAgICAgICAgICAgICAgIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAotICAgICAg
ICAgICAgICAgICAgIG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCksIAor
ICAgIHJldHVybiBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0
aCksCiAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9s
bGJhckhlaWdodCkpOwogfQotI2VuZGlmCiAKLUludFNpemUgU2Nyb2xsVmlldzo6bGF5b3V0U2l6
ZSgpIGNvbnN0CisjaWYgIVBMQVRGT1JNKEdUSykKK0ludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJs
ZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2li
bGVTaXplKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZTsKLX0KKyAgICBpZiAocGxhdGZvcm1XaWRnZXQo
KSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3Jv
bGxiYXJzKTsKIAotaW50IFNjcm9sbFZpZXc6OmxheW91dFdpZHRoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8g
dmlzaWJsZVdpZHRoKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpOworICAgIGlmICghbV9m
aXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2ZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0OworCisgICAgRmxvYXRTaXplIHZpc2libGVDb250ZW50U2l6ZSA9
IHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGluY2x1ZGVTY3JvbGxiYXJzKTsKKyAgICB2aXNp
YmxlQ29udGVudFNpemUuc2NhbGUoMSAvIHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSk7Cisg
ICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQpLCBleHBhbmRlZEludFNp
emUodmlzaWJsZUNvbnRlbnRTaXplKSk7CiB9CisjZW5kaWYKIAotaW50IFNjcm9sbFZpZXc6Omxh
eW91dEhlaWdodCgpIGNvbnN0CitJbnRTaXplIFNjcm9sbFZpZXc6OmxheW91dFNpemUoKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5pc0VtcHR5KCkgfHwgIW1fdXNlRml4
ZWRMYXlvdXQgPyB2aXNpYmxlSGVpZ2h0KCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS5oZWlnaHQoKTsK
KyAgICByZXR1cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5
b3V0ID8gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UpIDogbV9maXhlZExheW91dFNp
emU7CiB9CiAKIEludFNpemUgU2Nyb2xsVmlldzo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBlMDQzZjZlOWY3NDgzZGM0MWM0ODVi
YzFkNWYxYTA1NDA4NjRjNzQ2Li5mZTdiMDEwMTE1Mjg3MWMwMjFlZWZkMTUxYjk4NjE5YjZkY2Y5
MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xNTEsMTEgKzE1MSwx
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQogICAgIHZpcnR1YWwg
aW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoKS5oZWlnaHQoKTsgfQogCisgICAgLy8gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgp
IGlzIGNvbXB1dGVkIGZyb20gdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoKSBkaXZpZGVkIGJ5
IHRoZSB2YWx1ZSBvZiB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yLgorICAgIC8vIHZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IgaXMgdXN1YWxseSAxLCBleGNlcHQgd2hlbiB0aGUgc2V0dGluZyBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyB0cnVlIGFuZCB0aGUKKyAgICAvLyBT
Y3JvbGxWaWV3IGlzIHRoZSBtYWluIGZyYW1lOyBpbiB0aGF0IGNhc2UsIHZpc2libGVDb250ZW50
U2NhbGVGYWN0b3IgaXMgZXF1YWwgdG8gdGhlIHBhZ2UncyBwYWdlU2NhbGVGYWN0b3IuCisgICAg
Ly8gUG9ydHMgdGhhdCBkb24ndCB1c2UgcGFnZVNjYWxlRmFjdG9yIGNhbiB0cmVhdCB1bnNjYWxl
ZFZpc2libGVDb250ZW50U2l6ZSBhbmQgdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpIGFzIGVx
dWl2YWxlbnQuCisgICAgSW50U2l6ZSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShib29sIGlu
Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHZpc2libGVDb250ZW50
U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9CisKICAgICAvLyBGdW5jdGlvbnMgZm9y
IGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUKICAg
ICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZhbHVl
IHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBzaXpl
IGluc3RlYWQuCiAgICAgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7Ci0gICAgaW50IGxheW91
dFdpZHRoKCkgY29uc3Q7Ci0gICAgaW50IGxheW91dEhlaWdodCgpIGNvbnN0OworICAgIGludCBs
YXlvdXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dFNpemUoKS53aWR0aCgpOyB9CisgICAg
aW50IGxheW91dEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxheW91dFNpemUoKS5oZWlnaHQoKTsg
fQogICAgIEludFNpemUgZml4ZWRMYXlvdXRTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaXhl
ZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNmIyOTdhZWQ2NWQwMjM3NjczN2IwNTVkNDg3N2ViMTc5YTUwMjg3NC4u
OWE1M2RhMTU1YTJiMzVhMTkyMzA0ZWY0YzUyMGQ2N2U5ZDU2NmU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTExNjks
NyArMTE2OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFu
Z2VTaXplKCkKIHsKICAgICBpZiAobV9jbGlwTGF5ZXIpIHsKICAgICAgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAgICBtX2NsaXBMYXll
ci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSAvKiBleGNsdWRl
IHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZy
YW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UgLyogZXhjbHVkZSBzY3Jv
bGxiYXJzICovKSk7CiAKICAgICAgICAgZnJhbWVWaWV3RGlkU2Nyb2xsKCk7CiAgICAgICAgIHVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKTsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpCiAgICAgfQog
ICAgIGlmIChtX2NsaXBMYXllcikgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1f
cmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIG1fY2xpcExheWVyLT5zZXRTaXplKGZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAq
Lykuc2l6ZSgpKTsKKyAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUoZnJhbWVWaWV3LT51bnNj
YWxlZFZpc2libGVDb250ZW50U2l6ZShmYWxzZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pKTsK
ICAgICB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKaW5kZXggNzllYjE5YWM1ZWU2YjhmZTk2MmQ1ODY1ZWQ1
OTM3MWU5YTcwMzY0Zi4uYmVkZTI4NDViNmM3ZTdjNGUxM2RiMzRlNjc4NTQ1Yjc3OTM5MDc2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKFJlbmRlck9iamVjdCog
bGF5b3V0Um9vdCkKICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtX2RvY3VtZW50LT5zZXR0
aW5ncygpLT50ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSgpOwogICAgIGlmICh3aW5k
b3dJbmZvLndpbmRvd1NpemUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgaW5jbHVkZVNjcm9s
bGJhcnMgPSAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRBcHBseVNjcmVlbldpZHRo
T3ZlcnJpZGUobWFpbkZyYW1lKTsKLSAgICAgICAgd2luZG93SW5mby53aW5kb3dTaXplID0gbWFp
bkZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycykuc2l6
ZSgpOworICAgICAgICB3aW5kb3dJbmZvLndpbmRvd1NpemUgPSBtYWluRnJhbWUtPnZpZXcoKS0+
dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoaW5jbHVkZVNjcm9sbGJhcnMpOwogICAgICAgICBp
ZiAoIW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IoKSkKICAgICAgICAgICAgIHdpbmRvd0luZm8ud2luZG93U2l6ZS5zY2FsZSgxIC8gbV9k
b2N1bWVudC0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjgyN2E1NjcxY2Y0MTQzZjZm
OTQxMDgxY2QyMjg1YzFhNDI0NzliNC4uOTM5NDBjMWUyNjgzYjY5YWE4OTkyZTk3NGQxNDBmYmIx
ZTM0NDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtMTYyNiwxMSArMTYyNiwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3aWxsU3RhcnRMaXZlUmVz
aXplKCkKICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT53aWxsU3RhcnRMaXZlUmVzaXplKCk7CiB9
CiAKLVdlYlNpemUgV2ViVmlld0ltcGw6OnNpemUoKQorSW50U2l6ZSBXZWJWaWV3SW1wbDo6c2Nh
bGVkU2l6ZShmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRml4ZWRM
YXlvdXRNb2RlRW5hYmxlZCgpICYmIHNldHRpbmdzSW1wbCgpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpKQotICAgICAgICByZXR1cm4gbGF5b3V0U2l6ZSgpOworICAgIEZsb2F0
U2l6ZSBzY2FsZWRTaXplID0gZGlwU2l6ZSgpOworICAgIHNjYWxlZFNpemUuc2NhbGUoMSAvIHBh
Z2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKTsK
K30KIAorV2ViU2l6ZSBXZWJWaWV3SW1wbDo6c2l6ZSgpCit7CiAgICAgcmV0dXJuIG1fc2l6ZTsK
IH0KIApAQCAtMTY2MSw3ICsxNjY1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzaXplKGNvbnN0
IFdlYlNpemUmIG5ld1NpemUpCiAgICAgaWYgKCFhZ2VudFByaXZhdGUgfHwgIWFnZW50UHJpdmF0
ZS0+bWV0cmljc092ZXJyaWRkZW4oKSkgewogICAgICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1l
ID0gbWFpbkZyYW1lSW1wbCgpOwogICAgICAgICBpZiAod2ViRnJhbWUtPmZyYW1lVmlldygpKQot
ICAgICAgICAgICAgd2ViRnJhbWUtPmZyYW1lVmlldygpLT5yZXNpemUoc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHdlYkZyYW1lLT5mcmFtZVZpZXcoKS0+cmVzaXplKG1fc2l6ZSk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKFZJRVdQT1JUKQpAQCAtMjA5NywzMCArMjEwMSwyNCBAQCBib29sIFdlYlZpZXdJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQot
ICAgICAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFn
ZS5nZXQoKSwgKnRoaXMsIGlucHV0RXZlbnQpOwotCiAgICAgY29uc3QgV2ViSW5wdXRFdmVudCog
aW5wdXRFdmVudFRyYW5zZm9ybWVkID0gJmlucHV0RXZlbnQ7Ci0gICAgV2ViTW91c2VFdmVudCBt
b3VzZUV2ZW50OwotICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQ7Ci0gICAgaWYgKFdl
YklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgewotICAgICAg
ICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQqPigmaW5wdXRF
dmVudCk7Ci0KLSAgICAgICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJvdW5kZWRJ
bnRQb2ludChtX2xheWVyVHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oV2Vi
RmxvYXRQb2ludChtb3VzZUV2ZW50LngsIG1vdXNlRXZlbnQueSkpKTsKLSAgICAgICAgbW91c2VF
dmVudC54ID0gdHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIG1vdXNlRXZlbnQueSA9
IHRyYW5zZm9ybWVkTG9jYXRpb24ueSgpOwotICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQg
PSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJm1vdXNlRXZlbnQpOwotICAgIH0g
ZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlw
ZSkpIHsKLSAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKLQotICAgICAgICBJbnRQb2ludCB0cmFuc2Zvcm1lZExv
Y2F0aW9uID0gcm91bmRlZEludFBvaW50KG1fbGF5ZXJUcmVlVmlldy0+YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbShXZWJGbG9hdFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSkpKTsKLSAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSB0cmFuc2Zvcm1lZExvY2F0aW9uLngoKTsK
LSAgICAgICAgZ2VzdHVyZUV2ZW50LnkgPSB0cmFuc2Zvcm1lZExvY2F0aW9uLnkoKTsKLSAgICAg
ICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVu
dCo+KCZnZXN0dXJlRXZlbnQpOworICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCktPmFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgV2ViTW91c2VFdmVudCBtb3Vz
ZUV2ZW50OworICAgICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZUV2ZW50OworICAgICAgICBp
ZiAoV2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Cisg
ICAgICAgICAgICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQq
PigmaW5wdXRFdmVudCk7CisgICAgICAgICAgICBtb3VzZUV2ZW50LnggPSBtb3VzZUV2ZW50Lngg
LyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIG1vdXNlRXZlbnQueSA9IG1vdXNlRXZl
bnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9y
bWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZtb3VzZUV2ZW50KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5cGUoaW5wdXRF
dmVudC50eXBlKSkgeworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNv
bnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKKyAgICAgICAgICAgIGdlc3R1cmVF
dmVudC54ID0gZ2VzdHVyZUV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAg
IGdlc3R1cmVFdmVudC55ID0gZ2VzdHVyZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklu
cHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wg
aGFuZGxlZCA9IFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0
KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9ybWVkKTsKLSAgICByZXR1cm4gaGFuZGxlZDsK
KyAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFnZS5n
ZXQoKSwgKnRoaXMsICppbnB1dEV2ZW50VHJhbnNmb3JtZWQpOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjptb3VzZUNhcHR1cmVMb3N0KCkKQEAgLTI5MzUsMzQgKzI5MzMsNDAgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMoZmxvYXQgc2NhbGVGYWN0b3Ip
CiAgICAgcmV0dXJuIG1pbihtYXgoc2NhbGVGYWN0b3IsIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rv
ciksIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiB9CiAKLVdlYlBvaW50IFdlYlZpZXdJbXBs
OjpjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUp
CitJbnRQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IEludFBvaW50
JiBvZmZzZXQsIGZsb2F0IHNjYWxlKSBjb25zdAogewotICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxl
ZCBjb250ZW50IHNpemUuIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZh
Y3Rvci4KLSAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gbWFpbkZyYW1lKCktPmNvbnRlbnRzU2l6
ZSgpOwotICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZSAvIHBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgIGludCBkb2NXaWR0aEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS53aWR0aCAqIGRlbHRhU2Nh
bGU7Ci0gICAgaW50IGRvY0hlaWdodEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS5oZWlnaHQgKiBk
ZWx0YVNjYWxlOwotICAgIGludCB2aWV3V2lkdGggPSBtX3NpemUud2lkdGg7Ci0gICAgaW50IHZp
ZXdIZWlnaHQgPSBtX3NpemUuaGVpZ2h0OwotCi0gICAgLy8gRW5mb3JjZSB0aGUgbWF4aW11bSBh
bmQgbWluaW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBuZXcgc2NhbGUuCiAgICAgSW50UG9p
bnQgY2xhbXBlZE9mZnNldCA9IG9mZnNldDsKLSAgICBjbGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9m
ZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0TmV3U2NhbGUgLSB2aWV3V2lkdGgsIGRv
Y0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7Ci0gICAgY2xhbXBlZE9mZnNldC5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgaWYgKCFtX3BhZ2UtPnNldHRpbmdzKCktPmFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Nh
bGVkIGNvbnRlbnQgc2l6ZS4gV2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvIHRoZSBuZXcgc2NhbGUg
ZmFjdG9yLgorICAgICAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gY29udGVudHNTaXplKCk7Cisg
ICAgICAgIGludCBkb2NXaWR0aEF0TmV3U2NhbGUgPSBjb250ZW50U2l6ZS53aWR0aCAqIHNjYWxl
OworICAgICAgICBpbnQgZG9jSGVpZ2h0QXROZXdTY2FsZSA9IGNvbnRlbnRTaXplLmhlaWdodCAq
IHNjYWxlOworICAgICAgICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOworICAgICAgICBp
bnQgdmlld0hlaWdodCA9IG1fc2l6ZS5oZWlnaHQ7CisKKyAgICAgICAgLy8gRW5mb3JjZSB0aGUg
bWF4aW11bSBhbmQgbWluaW11bSBzY3JvbGwgcG9zaXRpb25zIGF0IHRoZSBuZXcgc2NhbGUuCisg
ICAgICAgIGNsYW1wZWRPZmZzZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGRv
Y1dpZHRoQXROZXdTY2FsZSAtIHZpZXdXaWR0aCwgZG9jSGVpZ2h0QXROZXdTY2FsZSAtIHZpZXdI
ZWlnaHQpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5r
VG8oSW50UG9pbnQoY29udGVudHNTaXplKCkgLSBzY2FsZWRTaXplKHNjYWxlKSkpOworICAgICAg
ICBjbGFtcGVkT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICB9CisKICAgICByZXR1
cm4gY2xhbXBlZE9mZnNldDsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFj
dG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldChmbG9hdCBzY2FsZUZhY3RvcikKIHsKLSAgICAvLyBQ
aWNrIGEgc2NhbGUgZmFjdG9yIHRoYXQgaXMgd2l0aGluIHRoZSBleHBlY3RlZCBsaW1pdHMKICAg
ICBzY2FsZUZhY3RvciA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMoc2NhbGVGYWN0b3Ip
OwogCi0gICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZShtYWluRnJhbWUoKS0+c2Ny
b2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQpOwot
ICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZhY3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgIHNjcm9sbE9mZnNldEF0TmV3U2NhbGUuc2NhbGUoZGVsdGFTY2FsZSwgZGVsdGFTY2FsZSk7
CisgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0KG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53
aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhlaWdodCk7CisgICAgaWYgKCFtX3Bh
Z2UtPnNldHRpbmdzKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAg
ICAgICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgICAgIHNjcm9sbE9mZnNldC5zY2FsZShkZWx0YVNjYWxlLCBkZWx0YVNjYWxlKTsKKyAg
ICB9CisgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwg
c2NhbGVGYWN0b3IpOwogCi0gICAgV2ViUG9pbnQgY2xhbXBlZE9mZnNldEF0TmV3U2NhbGUgPSBj
bGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZSwgc2NhbGVGYWN0b3IpOwot
ICAgIHNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgY2xhbXBlZE9mZnNldEF0TmV3U2Nh
bGUpOworICAgIHNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwgc2Nyb2xsT2Zmc2V0KTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFj
dG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQpAQCAtMjk3MywyMiArMjk3NywxNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0
IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFzY2FsZUZhY3RvcikKICAgICAgICAgc2NhbGVG
YWN0b3IgPSAxOwogCisgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gb3JpZ2luOwogICAgIHNj
YWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZUZhY3Rvcik7Ci0g
ICAgV2ViUG9pbnQgc2Nyb2xsT2Zmc2V0OwotICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5h
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Ci0gICAgICAgIC8vIElmIHBhZ2Ug
c2NhbGUgaXMgbm90IGFwcGxpZWQgaW4gdGhlIGNvbXBvc2l0b3IsIHRoZW4gdGhlIHNjcm9sbCBv
ZmZzZXRzIHNob3VsZAotICAgICAgICAvLyBiZSBtb2RpZmllZCBieSB0aGUgc2NhbGUgZmFjdG9y
LgotICAgICAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUob3JpZ2luLCBzY2Fs
ZUZhY3Rvcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSW50UG9pbnQgb2Zmc2V0ID0gb3JpZ2lu
OwotICAgICAgICBXZWJTaXplIGNvbnRlbnRTaXplID0gbWFpbkZyYW1lKCktPmNvbnRlbnRzU2l6
ZSgpOwotICAgICAgICBvZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoY29udGVudFNpemUud2lkdGgg
LSBtX3NpemUud2lkdGgsIGNvbnRlbnRTaXplLmhlaWdodCAtIG1fc2l6ZS5oZWlnaHQpKTsKLSAg
ICAgICAgb2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICAgICAgc2Nyb2xsT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIH0KKyAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUo
c2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rvcik7CisKKyAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZh
Y3RvcihzY2FsZUZhY3RvciwgSW50UG9pbnQoc2Nyb2xsT2Zmc2V0KSk7CiAKLSAgICBwYWdlKCkt
PnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwgc2Nyb2xsT2Zmc2V0KTsKICAgICBtX3Bh
Z2VTY2FsZUZhY3RvcklzU2V0ID0gdHJ1ZTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOworI2VuZGlmCiB9CiAKIGZsb2F0
IFdlYlZpZXdJbXBsOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMDcyLDEyICszMDcx
LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9yZVZpZXdwb3J0VGFnTWF4aW11bVNjYWxl
KGJvb2wgZmxhZykKICAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlzcGF0Y2hWaWV3
cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UocGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+
dmlld3BvcnRBcmd1bWVudHMoKSk7CiB9CiAKLXN0YXRpYyBJbnRTaXplIHVuc2NhbGVkQ29udGVu
dHNTaXplKEZyYW1lKiBmcmFtZSkKK0ludFNpemUgV2ViVmlld0ltcGw6OmNvbnRlbnRzU2l6ZSgp
IGNvbnN0CiB7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBS
ZW5kZXJWaWV3KiByb290ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghcm9v
dCkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKLSAgICByZXR1cm4gcm9vdC0+dW5zY2FsZWRE
b2N1bWVudFJlY3QoKS5zaXplKCk7CisKKyAgICByZXR1cm4gcm9vdC0+ZG9jdW1lbnRSZWN0KCku
c2l6ZSgpOwogfQogCiBJbnRTaXplIFdlYlZpZXdJbXBsOjpsYXlvdXRTaXplKCkgY29uc3QKQEAg
LTMwODUsNyArMzA4Niw4IEBAIEludFNpemUgV2ViVmlld0ltcGw6OmxheW91dFNpemUoKSBjb25z
dAogICAgIGlmICghaXNGaXhlZExheW91dE1vZGVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBt
X3NpemU7CiAKLSAgICBJbnRTaXplIGNvbnRlbnRTaXplID0gdW5zY2FsZWRDb250ZW50c1NpemUo
cGFnZSgpLT5tYWluRnJhbWUoKSk7CisgICAgSW50U2l6ZSBjb250ZW50U2l6ZSA9IGNvbnRlbnRz
U2l6ZSgpOworCiAgICAgaWYgKGZpeGVkTGF5b3V0U2l6ZSgpLndpZHRoID49IGNvbnRlbnRTaXpl
LndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmaXhlZExheW91dFNpemUoKTsKIApAQCAtMzExMyw3
ICszMTE1LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0
cygpCiAgICAgaW50IHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMgPSBtX3NpemUud2lk
dGg7CiAgICAgaWYgKHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMgJiYgdmlldy0+dmVy
dGljYWxTY3JvbGxiYXIoKSAmJiAhdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKS0+aXNPdmVybGF5
U2Nyb2xsYmFyKCkpCiAgICAgICAgIHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMgLT0g
dmlldy0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsKLSAgICBpbnQgdW5zY2FsZWRDb250
ZW50c1dpZHRoID0gdW5zY2FsZWRDb250ZW50c1NpemUocGFnZSgpLT5tYWluRnJhbWUoKSkud2lk
dGgoKTsKKyAgICBpbnQgdW5zY2FsZWRDb250ZW50c1dpZHRoID0gY29udGVudHNTaXplKCkud2lk
dGgoKTsKICAgICBpZiAodmlld1dpZHRoTm90SW5jbHVkaW5nU2Nyb2xsYmFycyAmJiB1bnNjYWxl
ZENvbnRlbnRzV2lkdGgpIHsKICAgICAgICAgLy8gTGltaXQgcGFnZSBzY2FsaW5nIGRvd24gdG8g
dGhlIGRvY3VtZW50IHdpZHRoLgogICAgICAgICBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgPSBt
YXgobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBzdGF0aWNfY2FzdDxmbG9hdD4odmlld1dpZHRo
Tm90SW5jbHVkaW5nU2Nyb2xsYmFycykgLyB1bnNjYWxlZENvbnRlbnRzV2lkdGgpOwpAQCAtMzc2
NSwxNSArMzc2NywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUo
KQogICAgIH0gZWxzZQogICAgICAgICBtYXlOZWVkTGF5b3V0ID0gY29tcHV0ZVBhZ2VTY2FsZUZh
Y3RvckxpbWl0cygpOwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKTsKLSAgICBpZiAoc2V0dGluZ3NJbXBsKCktPmFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKCkgJiYgdmlldyAmJiB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSku
d2lkdGgoKSAhPSBsYXlvdXRTaXplKCkud2lkdGgoKSkgewotICAgICAgICB2aWV3LT5yZXNpemUo
bGF5b3V0U2l6ZSgpKTsKLSAgICAgICAgbWF5TmVlZExheW91dCA9IHRydWU7Ci0gICAgfQotCiAg
ICAgLy8gZGlkQ2hhbmdlQ29udGVudHNTaXplKCkgbWF5IGJlIGNhbGxlZCBmcm9tIEZyYW1lVmll
dzo6bGF5b3V0OyB3ZSBuZWVkIHRvCiAgICAgLy8gcmVsYXlvdXQgdG8gYXZvaWQgdHJpZ2dlcmlu
ZyB0aGUgYXNzZXJ0aW9uIHRoYXQgbmVlZHNMYXlvdXQoKSBpc24ndCBzZXQKICAgICAvLyBhdCB0
aGUgZW5kIG9mIGEgbGF5b3V0LgorICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZUltcGwo
KS0+ZnJhbWVWaWV3KCk7CiAgICAgaWYgKG1heU5lZWRMYXlvdXQgJiYgdmlldyAmJiB2aWV3LT5u
ZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICNlbmRpZgpAQCAtNDI0OSwx
NiArNDI0NiwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZy
YW1lKCktPnZpZXcoKTsKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJbnRQb2ludCBz
Y3JvbGwodmlldy0+c2Nyb2xsWCgpLCB2aWV3LT5zY3JvbGxZKCkpOwogCi0gICAgbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+
Y29udGVudHNTaXplKCksIHNjcm9sbCwgdmlldy0+c2Nyb2xsT3JpZ2luKCkpOwotCi0gICAgSW50
U2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUgPSB2aXNpYmxlUmVjdC5zaXplKCk7CisgICAgSW50U2l6
ZSBsYXlvdXRWaWV3cG9ydFNpemUgPSBsYXlvdXRTaXplKCk7CiAgICAgSW50U2l6ZSBkZXZpY2VW
aWV3cG9ydFNpemUgPSBtX3NpemU7CiAgICAgaWYgKG1fd2ViU2V0dGluZ3MtPmFwcGx5RGV2aWNl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAgICAgICAgZGV2aWNlVmlld3BvcnRTaXplLnNj
YWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwogCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QtPnNldFZpZXdwb3J0KGRldmljZVZpZXdwb3J0U2l6ZSwgdmlldy0+Y29udGVudHNTaXplKCks
IHZpZXctPnNjcm9sbFBvc2l0aW9uKCksIHZpZXctPnNjcm9sbE9yaWdpbigpKTsKKwogICAgIG1f
bGF5ZXJUcmVlVmlldy0+c2V0Vmlld3BvcnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSwgZGV2aWNl
Vmlld3BvcnRTaXplKTsKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckFu
ZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21h
eGltdW1QYWdlU2NhbGVGYWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggMGY2YTJhYTM0OThiMWJlMzQzMzk2OTc4NzM5YWNlMzM0N2RmMjk2My4u
ZTdjZTBlN2E3YjY5MzEzNzVmMzVkMDc5Mjc4NDQ0MmE5MmIxYzM1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00NjEsNiArNDYxLDcgQEAgcHVibGljOgog
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBkaXBTaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzY2FsZWRTaXpl
KGZsb2F0KSBjb25zdDsKIAogICAgIC8vIFNldCB0aGUgZGlzcG9zaXRpb24gZm9yIGhvdyB0aGlz
IHdlYnZpZXcgaXMgdG8gYmUgaW5pdGlhbGx5IHNob3duLgogICAgIHZvaWQgc2V0SW5pdGlhbE5h
dmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeSBwb2xpY3kpCkBAIC02MTUsNyArNjE2
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JM
aW1pdHMoKTsKICAgICBmbG9hdCBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKGZsb2F0IHNj
YWxlKTsKLSAgICBXZWJQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9m
ZnNldCwgZmxvYXQgc2NhbGUpOworICAgIFdlYkNvcmU6OkludFBvaW50IGNsYW1wT2Zmc2V0QXRT
Y2FsZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkgY29uc3Q7
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKIAogICAgIHZvaWQg
cmVzZXRTYXZlZFNjcm9sbEFuZFNjYWxlU3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IDUzZmYyYzc0MmY1MThjM2M1YjI3ZWIx
ODc2MDUzMTFmNTAzMDgxYjkuLmVjNWRjNjViYWM5ODJhY2NiYjdiYzQxNmJhOTIwOGU4YTQwZGVm
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKQEAgLTMwNyw2ICszMDgsMTEwIEBAIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIFNjYWxlRmFjdG9yU2hvdWxkTm90T3NjaWxsYXRlKQogICAgIHdlYlZpZXdJ
bXBsLT5sYXlvdXQoKTsKIH0KIAorVEVTVF9GKFdlYkZyYW1lVGVzdCwgc2V0UGFnZVNjYWxlRmFj
dG9yRG9lc05vdExheW91dCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhl
ZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGll
bnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAg
aW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOwor
CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwq
PihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4
ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2ViVmlld0ltcGwtPnNl
dHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Cisg
ICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1
ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVl
KTsKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3Bv
cnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAgICBpbnQgcHJldkxh
eW91dENvdW50ID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxh
eW91dENvdW50KCk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQ
b2ludCgpKTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpLT5uZWVkc0xheW91dCgpKTsKKyAgICBFWFBFQ1RfRVEocHJldkxheW91
dENvdW50LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0
Q291bnQoKSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvcldyaXR0
ZW5Ub0hpc3RvcnlJdGVtKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpeGVk
X2xheW91dC5odG1sIik7CisKKyAgICBGaXhlZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVu
dDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZvLmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBp
bnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisK
KyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+
KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhl
ZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0
dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVl
KTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUp
OworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9y
dEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJbXBs
LT5zZXRQYWdlU2NhbGVGYWN0b3IoMywgV2ViUG9pbnQoKSk7CisgICAgd2ViVmlld0ltcGwtPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVudEFuZFNj
cm9sbFN0YXRlKCk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigxLCBXZWJQ
b2ludCgpKTsKKyAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkt
Pmhpc3RvcnkoKS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisgICAgRVhQ
RUNUX0VRKDMsIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Cit9CisKK1RFU1RfRihX
ZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvclNocmlua3NWaWV3cG9ydCkKK3sKKyAgICByZWdp
c3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRM
YXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5k
ZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAg
aW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGludCB2aWV3cG9ydFdpZHRoTWludXNTY3Jv
bGxiYXIgPSA2NDAgLSAxNTsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHRNaW51c1Njcm9sbGJhciA9
IDQ4MCAtIDE1OworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2Vi
Vmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExh
eW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0
RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRX
aWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAg
ICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOworCisgICAg
V2ViQ29yZTo6SW50U2l6ZSB1bnNjYWxlZFNpemUgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKS0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUodHJ1ZSk7CisgICAg
RVhQRUNUX0VRKHZpZXdwb3J0V2lkdGgsIHVuc2NhbGVkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBF
Q1RfRVEodmlld3BvcnRIZWlnaHQsIHVuc2NhbGVkU2l6ZS5oZWlnaHQoKSk7CisKKyAgICBXZWJD
b3JlOjpJbnRTaXplIHVuc2NhbGVkU2l6ZU1pbnVzU2Nyb2xsYmFyID0gd2ViVmlld0ltcGwtPm1h
aW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGZh
bHNlKTsKKyAgICBFWFBFQ1RfRVEodmlld3BvcnRXaWR0aE1pbnVzU2Nyb2xsYmFyLCB1bnNjYWxl
ZFNpemVNaW51c1Njcm9sbGJhci53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEodmlld3BvcnRIZWln
aHRNaW51c1Njcm9sbGJhciwgdW5zY2FsZWRTaXplTWludXNTY3JvbGxiYXIuaGVpZ2h0KCkpOwor
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzY2FsZWRTaXplID0gd2ViVmlld0ltcGwtPm1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBF
WFBFQ1RfRVEoY2VpbCh2aWV3cG9ydFdpZHRoTWludXNTY3JvbGxiYXIgLyAyLjApLCBzY2FsZWRT
aXplLndpZHRoKCkpOworICAgIEVYUEVDVF9FUShjZWlsKHZpZXdwb3J0SGVpZ2h0TWludXNTY3Jv
bGxiYXIgLyAyLjApLCBzY2FsZWRTaXplLmhlaWdodCgpKTsKK30KKworVEVTVF9GKFdlYkZyYW1l
VGVzdCwgcGFnZVNjYWxlRmFjdG9yRG9lc05vdEFwcGx5Q3NzVHJhbnNmb3JtKQoreworICAgIHJl
Z2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpeGVkX2xheW91dC5odG1sIik7CisKKyAgICBGaXhl
ZExheW91dFRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBjbGllbnQubV9zY3JlZW5JbmZv
LmRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAg
ICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0lt
cGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZj
bGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+
c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0lt
cGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGlu
Z3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUo
V2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBs
LT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgV2Vi
UG9pbnQoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgRVhQRUNUX0VRKDk4MCwgd2ViVmlld0lt
cGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpLT51bnNjYWxlZERvY3Vt
ZW50UmVjdCgpLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg5ODAsIHdlYlZpZXdJbXBsLT5tYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5jb250ZW50c1NpemUoKS53aWR0aCgpKTsKK30KICNl
bmRpZgogCiBURVNUX0YoV2ViRnJhbWVUZXN0LCBDYW5PdmVycmlkZU1heGltdW1TY2FsZUZhY3Rv
cikKQEAgLTc4NCw3ICs4ODksNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVNj
YWxlRm9udFNjYWxlRmFjdG9yVGVzdENvbXBvc2l0b3JTY2FsaW5nKQogICAgIC8vIFpvb20gaW4g
dG8gcmVzZXQgZG91YmxlX3RhcF96b29tX2luX2VmZmVjdCBmbGFnLgogICAgIHdlYlZpZXdJbXBs
LT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4xZik7CiAgICAgLy8gMSA8IHRleHRB
dXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yIDwgbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpv
b21BbHJlYWR5TGVnaWJsZVNjYWxlCi0gICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGlt
aXRzKDEuMmYsIDQpOworICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjBm
LCA0KTsKICAgICBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSA9IHdlYlZpZXdJbXBs
LT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgKiBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVS
YXRpbzsKICAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9p
bnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsg
ZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8pIC8gMik7CiAgICAgc2ltdWxhdGVEb3Vi
bGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185107</attachid>
            <date>2013-01-28 16:54:26 -0800</date>
            <delta_ts>2013-02-04 20:12:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107424-20130128165113.patch</filename>
            <type>text/plain</type>
            <size>39341</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZDQ4NDY0Y2QzMTYy
M2Y2ZWE0NWZkYTUxMGQ0MThmZTBhMTkzMGFjLi4zZmY2MGIxYTdhZDExOGU1NTAxZDUzMmQxYzJk
NGM0ODU3MGJlMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0yOCAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIHBh
Z2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBt
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBMZXZpIFdlaW50cmF1Yi4KKworICAgICAgICBJZiBh
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1vbmx5
IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhwYW5k
aW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hyaW5r
cyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bworICAg
ICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1wbGlm
aWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRoZSB0
cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQgdGhh
dCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAgICAg
IHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6ZSwK
KyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4dCBh
dXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBzaXpl
LiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNpYmxl
Q29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0gbm8K
KyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2FsZUZh
Y3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1lU2Nh
bGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRpZWQg
dG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0Y2gg
c2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6YWRqdXN0RXZlbnRQb2lu
dEZvclBpbmNoWm9vbSk6CisKIDIwMTMtMDEtMjYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3J0IFJlc291cmNlUmVxdWVz
dCdzIHByaW9yaXR5IHRocm91Z2ggV2ViVVJMUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFjZjIzOGUz
NzhkNzRiYjQzMjBkNDI1MjkxZjhjZDk0Yjk2YjZhMmIuLjA3ZDU5Y2IyMTMyMGExZjk5OTczNzkw
MjEzNjUwMTY5MzJiZGM2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxMy0wMS0y
OCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtl
IHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmlldyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRv
ciBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBMZXZpIFdlaW50cmF1Yi4KKworICAgICAgICBJ
ZiBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBpcyBlbmFibGVkIChDaHJvbWl1bS1v
bmx5IHNldHRpbmcpLAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgZXhw
YW5kaW5nIGFzIHRoZSB1c2VyIHBpbmNoIHpvb21zLCB0aGUKKyAgICAgICAgdmlld3BvcnQgc2hy
aW5rcyBpbnN0ZWFkLiBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBhZ2VTY2FsZUZhY3RvciB0bwor
ICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QgdG8gZ2V0IHRoaXMgYmVoYXZpb3IsIGFuZCBzaW1w
bGlmaWVzIENocm9taXVtJ3MKKyAgICAgICAgcmVzaXplIGxvZ2ljIHRvIHN0b3AgaGlkaW5nIHRo
ZSB0cnVlIHZpZXdwb3J0IHNpemUgZnJvbSBXZWJDb3JlLgorCisgICAgICAgIEkgdmVyaWZpZWQg
dGhhdCB0aGUgc2NhbGluZyBtYWtlcyBzZW5zZSBmb3IgYWxsIHRoZSBjYWxsZXJzIG9mCisgICAg
ICAgIHZpc2libGVDb250ZW50UmVjdC4gVGhlIGV4Y2VwdGlvbnMgYXJlIGNsaXAtbGF5ZXIgc2l6
ZSwKKyAgICAgICAgbGF5b3V0IHNpemUgaW4gbm9uLWZpeGVkLWxheW91dCBtb2RlLCBhbmQgdGV4
dCBhdXRvc2l6aW5nLCB3aGljaCBuZWVkCisgICAgICAgIHRoZSBvcmlnaW5hbCB1bnNjYWxlZCBz
aXplLiBUaGVyZWZvcmUgSSBhZGRlZCBhIG5ldyBtZXRob2QKKyAgICAgICAgdW5zY2FsZWRWaXNp
YmxlQ29udGVudFNpemUoKSB0byBTY3JvbGxWaWV3L0ZyYW1lVmlldy4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gbW9kaWZpZXMgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIHBlcmZvcm0g
bm8KKyAgICAgICAgaW52YWxpZGF0ZXMgb3IgbGF5b3V0IHdoZW4gYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgaXMgdHJ1ZSwKKyAgICAgICAgYW5kIGFsc28gd3JpdGVzIHBhZ2VTY2Fs
ZUZhY3RvciBpbnRvIEhpc3RvcnlJdGVtcyBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIGZyYW1l
U2NhbGVGYWN0b3IuCisKKyAgICAgICAgU2luY2UgYWxsIGJlaGF2aW9yIGNoYW5nZXMgYXJlIHRp
ZWQgdG8gYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsCisgICAgICAgIHRoaXMgcGF0
Y2ggc2hvdWxkIGJlIGEgbm8tb3AgZm9yIG5vbi1DaHJvbWl1bSBwb3J0cy4KKworICAgICAgICBO
ZXcgdW5pdCB0ZXN0cyBpbiBXZWJGcmFtZVRlc3QuY3BwLgorCisgICAgICAgICogbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOgorICAgICAgICBVc2UgcGFn
ZVNjYWxlRmFjdG9yIGhlcmUgYmVjYXVzZSBmcmFtZVNjYWxlRmFjdG9yIGFsd2F5cyByZXR1cm5z
IDEKKyAgICAgICAgd2l0aCBvdXIgc2V0dGluZy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZpc2libGVDb250ZW50U2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAg
ICAgICAgKEZyYW1lVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OnNldFBhZ2VTY2FsZUZhY3Rvcik6IE1ha2Ugc2V0UGFnZVNjYWxlRmFjdG9y
IHN0b3AKKyAgICAgICAgaW52YWxpZGF0aW5nL2xheW91dGluZyBhcyB0aGlzIGlzIGhhbmRsZWQg
Ynkgb3VyIGNvbXBvc2l0b3IuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSk6
IFRoaXMgbmV3IG1ldGhvZAorICAgICAgICBqdXN0IHJldHVybnMgdGhlIG9yaWdpbmFsIHZpc2li
bGUgcmVjdCB3aXRob3V0IHBhZ2VTY2FsZUZhY3RvciBiZWluZworICAgICAgICBhcHBsaWVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxl
Q29udGVudFJlY3QpOiBUaGlzIG5vdyBpcyBkaXZpZGVkIGJ5CisgICAgICAgIHBhZ2VTY2FsZUZh
Y3RvciBpZiBvdXIgc2V0dGluZyBpcyBhY3RpdmUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpsYXlvdXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKTogUmV0
dXJucworICAgICAgICBwYWdlU2NhbGVGYWN0b3IgaWYgdGhlIHZpc2libGUgcmVjdCBpcyBzY2Fs
ZWQsIDEgbm9ybWFsbHkuCisgICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OmxheW91dEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmll
d0RpZENoYW5nZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVSb290TGF5ZXJQb3NpdGlvbik6IENsaXAgbGF5ZXIKKyAgICAgICAgc2hvdWxkIHVz
ZSB1bnNjYWxlZCBzaXplLCBiZWNhdXNlIGl0J3MgYWJvdmUgdGhlIHJvb3Qgc2Nyb2xsIGxheWVy
CisgICAgICAgIG9uIHRoZSBsYXllciB0cmVlIChpLmUuIHBhZ2Ugc2NhbGUgaXNuJ3QgYXBwbGll
ZCBvbiBpdCkuCisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6cHJvY2Vzc1N1YnRyZWUpOiBUZXh0IGF1dG9zaXpl
ciBzaG91bGQgdXNlCisgICAgICAgIHVuc2NhbGVkIHNpemUsIGJlY2F1c2UgaXQgY2FyZXMgYWJv
dXQgcGh5c2ljYWwgc2NyZWVuIHNpemUuCisKIDIwMTMtMDEtMjggIEthbGV2IExlbWJlciAgPGth
bGV2bGVtYmVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBQYXNzIElDVSBjcHBmbGFncyB0
byBsaWJXZWJDb3JlU1ZHLmxhIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY4
ODBkNzE3ZjQ2YWNhNGIyZjIzOGNmNjFkYzUyYzFhYzdlNTkyMGMuLmZiNmVjMDgxMGFkMTQ5M2U3
M2M3MmM4MzBjOWQwZmM5NTY1MjUxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjIgQEAKKzIwMTMtMDEtMjggIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBwYWdlIHNjYWxlIHNocmluayBGcmFtZVZpZXcgaW4gYXBw
bHlQYWdlU2NhbGVJbkNvbXBvc2l0b3IgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGV2aSBX
ZWludHJhdWIuCisKKyAgICAgICAgSWYgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Ig
aXMgZW5hYmxlZCAoQ2hyb21pdW0tb25seSBzZXR0aW5nKSwKKyAgICAgICAgaW5zdGVhZCBvZiB0
aGUgZW50aXJlIGRvY3VtZW50IGV4cGFuZGluZyBhcyB0aGUgdXNlciBwaW5jaCB6b29tcywgdGhl
CisgICAgICAgIHZpZXdwb3J0IHNocmlua3MgaW5zdGVhZC4gVGhpcyBwYXRjaCBhcHBsaWVzIHRo
ZSBwYWdlU2NhbGVGYWN0b3IgdG8KKyAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0IHRvIGdldCB0
aGlzIGJlaGF2aW9yLCBhbmQgc2ltcGxpZmllcyBDaHJvbWl1bSdzCisgICAgICAgIHJlc2l6ZSBs
b2dpYyB0byBzdG9wIGhpZGluZyB0aGUgdHJ1ZSB2aWV3cG9ydCBzaXplIGZyb20gV2ViQ29yZS4K
KworICAgICAgICBJIHZlcmlmaWVkIHRoYXQgdGhlIHNjYWxpbmcgbWFrZXMgc2Vuc2UgZm9yIGFs
bCB0aGUgY2FsbGVycyBvZgorICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QuIFRoZSBleGNlcHRp
b25zIGFyZSBjbGlwLWxheWVyIHNpemUsCisgICAgICAgIGxheW91dCBzaXplIGluIG5vbi1maXhl
ZC1sYXlvdXQgbW9kZSwgYW5kIHRleHQgYXV0b3NpemluZywgd2hpY2ggbmVlZAorICAgICAgICB0
aGUgb3JpZ2luYWwgdW5zY2FsZWQgc2l6ZS4gVGhlcmVmb3JlIEkgYWRkZWQgYSBuZXcgbWV0aG9k
CisgICAgICAgIHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKCkgdG8gU2Nyb2xsVmlldy9GcmFt
ZVZpZXcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vZGlmaWVzIFBhZ2U6OnNldFBhZ2VT
Y2FsZUZhY3RvciB0byBwZXJmb3JtIG5vCisgICAgICAgIGludmFsaWRhdGVzIG9yIGxheW91dCB3
aGVuIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGlzIHRydWUsCisgICAgICAgIGFu
ZCBhbHNvIHdyaXRlcyBwYWdlU2NhbGVGYWN0b3IgaW50byBIaXN0b3J5SXRlbXMgaW5zdGVhZCBv
ZiB1c2luZworICAgICAgICBmcmFtZVNjYWxlRmFjdG9yLgorCisgICAgICAgIFNpbmNlIGFsbCBi
ZWhhdmlvciBjaGFuZ2VzIGFyZSB0aWVkIHRvIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yLAorICAgICAgICB0aGlzIHBhdGNoIHNob3VsZCBiZSBhIG5vLW9wIGZvciBub24tQ2hyb21p
dW0gcG9ydHMuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2NhbGVkU2l6ZSk6IFJldHVybnMgdGhlIHBvc3QgcGFnZS1zY2Fs
ZSBzaXplCisgICAgICAgIHNpbWlsYXIgdG8gd2hhdCB2aXNpYmxlQ29udGVudFJlY3QoKSBub3cg
cmV0dXJucywgZXhjZXB0IHRoYXQgaXQgbWF5CisgICAgICAgIGJlIGF0IGEgZGlmZmVyZW50IHNj
YWxlIHRoYW4gdGhlIGN1cnJlbnQgb25lLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2l6ZSk6IEJhY2sgdG8gcmV0dXJuaW5nIGRlbnNpdHktaW5kZXBlbmRlbnQKKyAgICAgICAgc2l6
ZSB3aXRob3V0IGFueSB0cmlja3MsIG5vdCB0aGUgImxheW91dFNpemUoKSIgZmFrZSB2aWV3cG9y
dC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KTogTm8gbmVlZCB0byBhcHBseQorICAg
ICAgICBpbXBsVHJhbnNmb3JtIGFueW1vcmUgYXMgV2ViS2l0IGtub3dzIHRoZSB0cnVlIHNjcm9s
bCBvZmZzZXQ7IGp1c3QKKyAgICAgICAgZGl2aWRlIGV2ZW50IGNvb3JkcyBieSBwYWdlU2NhbGVG
YWN0b3IuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUp
OiBNYWtlIHRoaXMgbWV0aG9kIHN1cHBvcnQKKyAgICAgICAgYXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IuICBUaGlzIGlzIHVzZWQgdG8gcHJlLWNsYW1wIHNjcm9sbAorICAgICAgICBv
ZmZzZXRzIGF0IGEgZ2l2ZW4gdmlld3BvcnQgc2l6ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQpOiBNYWtlCisg
ICAgICAgIHRoaXMgbWV0aG9kIHN1cHBvcnQgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IgKGRvbid0IHNjYWxlCisgICAgICAgIHNjcm9sbCBvZmZzZXRzIGFzIHRoZXkgYXJlIG5vdyBz
Y2FsZS1pbmRlcGVuZGVudCkuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdl
U2NhbGVGYWN0b3IpOiBNYWtlIHRoaXMgbWV0aG9kIGFsd2F5cyB1c2UKKyAgICAgICAgY2xhbXBP
ZmZzZXRBdFNjYWxlIGluc3RlYWQgb2YgYnlwYXNzaW5nIGl0LCBzaW5jZSBpdCdzIG5vdyBzdXBw
b3J0ZWQuCisgICAgICAgIEFsc28gbm90aWZ5IHRoZSBjb21wb3NpdG9yIHRvIHVwZGF0ZSBpdHMg
c3RhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb250ZW50c1NpemUpOiBDb252
ZW5pZW5jZSBtZXRob2QsIHJlbW92ZWQKKyAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHNjYWxl
ZCBhbmQgdW5zY2FsZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpsYXlvdXRTaXpl
KTogVGhpcyBtZXRob2QgcmV0dXJuZWQgdGhlICJmYWtlIgorICAgICAgICBzaXplIHdlIHVzZWQg
dG8gZ2l2ZSBGcmFtZVZpZXcuICBOb3cgbm8gbG9uZ2VyIHVzZWQgZm9yIG11Y2guCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6IFJlbW92
ZSB1bm5lY2Vzc2FyeQorICAgICAgICByZXNpemUoKSBub3cgdGhhdCB3ZSBjYW4gZ2l2ZSB0aGUg
dHJ1ZSBzaXplIHRvIEZyYW1lVmlldy4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVw
ZGF0ZUxheWVyVHJlZVZpZXdwb3J0KTogVXNlIGxheW91dFNpemUoKQorICAgICAgICBkaXJlY3Rs
eSBub3cgdGhhdCBGcmFtZVZpZXcgbm8gbG9uZ2VyIHVzZXMgaXQuCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvV2Vi
RnJhbWVUZXN0LmNwcDoKKwogMjAxMy0wMS0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MTAw
Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKaW5kZXggNjM1NDcwMmYxMjhhN2QxNGUwNjY4ODU2ODVlNDA0ZjU1OWRiMzcyYi4uODUy
MzFhOWIwMzZhNDFhNmQwZjY1MTNiOGEyM2UzMDM2YjZlOTY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEwMiw5ICsx
MDIsOCBAQCBwdWJsaWM6CiAgICAgLy8gbW9kZSkuCiAgICAgdmlydHVhbCBXZWJTaXplIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIC8vIEdpdmVzIHRoZSBjb3JyZWN0ZWQg
bG9jYXRpb24gZm9yIGFuIGV2ZW50LCBhY2NvdW50aW5nIGZvciB0aGUgcGluY2gtem9vbSB0cmFu
c2Zvcm1hdGlvbgotICAgIC8vIGluIHRoZSBjb21wb3NpdG9yLgotICAgIHZpcnR1YWwgV2ViRmxv
YXRQb2ludCBhZGp1c3RFdmVudFBvaW50Rm9yUGluY2hab29tKGNvbnN0IFdlYkZsb2F0UG9pbnQm
KSBjb25zdCA9IDA7CisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGFmdGVyIFdlYktpdCByb2xs
CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20o
Y29uc3QgV2ViRmxvYXRQb2ludCYgcCkgY29uc3QgeyByZXR1cm4gcDsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGEyZjcyZDA4ZDVjOWQ1NTBhNjMzOGE5MzI2Njlm
ZGY3ZDU2ODJhNmEuLjQ1NjYzNWMyNDc0ODgwZDIyZDhjNTgyNTE0Mzg0ZTNjZDBkNzRkYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtODcsOCAr
ODcsMTAgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGVsc2UKICAgICAgICAgaXRlbS0+
c2V0U2Nyb2xsUG9pbnQobV9mcmFtZS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAg
IGl0ZW0tPnNldFBhZ2VTY2FsZUZhY3RvcihtX2ZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCkpOwot
ICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSkKKyAgICAgICAgaXRlbS0+c2V0UGFnZVNjYWxl
RmFjdG9yKHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKKwogICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBncmVhdCB0byB3b3JrIG91dCBhIHdheSB0byBwdXQgdGhpcyBjb2RlIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBjYWxsaW5nIHRocm91Z2ggdG8gdGhlIGNsaWVudC4KICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPnNhdmVWaWV3U3RhdGVUb0l0ZW0oaXRlbSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZWJmZTFjODFkY2MzOTMwZDQ3ZGQ4NWY1ZTQ1NWFiMjA2
ZDA2YjBhZi4uYTU4ZDZhMDQ0NTQyYzY3MjU5NjE2MmU5M2MzZjhjOGFhMzlkNzgzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjgzNyw2ICsyODM3LDE3IEBAIEludFJlY3QgRnJh
bWVWaWV3Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UtPmNocm9t
ZSgpLT53aW5kb3dSZXNpemVyUmVjdCgpOwogfQogCitmbG9hdCBGcmFtZVZpZXc6OnZpc2libGVD
b250ZW50U2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFt
ZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICghbV9mcmFtZS0+c2V0dGlu
Z3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSB8fCBtX2ZyYW1lICE9IG1f
ZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgcmV0
dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIHZvaWQgRnJhbWVW
aWV3OjpzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYgc2Nyb2xsZXJU
aHVtYikKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNTFjNjRmMzg0MmE3NDcxMjBlYjYwMWMxYTI1ZTZkMDNjMzVlODExMi4u
ZDEzYTc2NzkwODNlZDRmZWY2OTVmOWIwZTMwMzhhYzc0ZGNiZjgzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0xODMsNiArMTgzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBJbnRS
ZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGZsb2F0IHZpc2li
bGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgT1ZFUlJJ
REU7CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggM2EzOTE5NmFlNGY2YTQ5NjdiN2NhYjE5YzA2MTdlYmE2OGZl
NjExMi4uYWVjYmEzMzk2MTY1NmFjNWM0MTU1M2JiZDNiOTcyMWEwYTJkZDIxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC03MjUsNyArNzI1LDggQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAKICAgICBpZiAoc2NhbGUg
PT0gbV9wYWdlU2NhbGVGYWN0b3IpIHsKICAgICAgICAgaWYgKHZpZXcgJiYgKHZpZXctPnNjcm9s
bFBvc2l0aW9uKCkgIT0gb3JpZ2luIHx8IHZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKSkgewot
ICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgICAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcigpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0
aW9uKG9yaWdpbik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNzMzLDIwICs3MzQs
MjIgQEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IElu
dFBvaW50JiBvcmlnaW4pCiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOwogCi0gICAg
aWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAgICBkb2N1bWVudC0+cmVuZGVyZXIoKS0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVl
KTsKIAotICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CisgICAgICAgIGRv
Y3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKLSAgICAvLyBUcmFuc2Zvcm0gY2hh
bmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNvbXBvc2l0
ZWQgY29udGVudHMuCi0gICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworICAgICAgICAvLyBUcmFuc2Zvcm0g
Y2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNvbXBv
c2l0ZWQgY29udGVudHMuCisgICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCkpKTsKKyAgICB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbWFpbkZyYW1lKCktPmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogI2VuZGlmCiAKICAgICBpZiAodmlldyAmJiB2aWV3LT5z
Y3JvbGxQb3NpdGlvbigpICE9IG9yaWdpbikgewotICAgICAgICBpZiAoZG9jdW1lbnQtPnJlbmRl
cmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlk
Rmlyc3RMYXlvdXQoKSkKKyAgICAgICAgaWYgKCFtX3NldHRpbmdzLT5hcHBseVBhZ2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRvY3VtZW50LT5y
ZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIHZpZXctPmRpZEZpcnN0TGF5b3V0KCkpCiAgICAg
ICAgICAgICB2aWV3LT5sYXlvdXQoKTsKICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
b3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4
IDhhNjk3NjkwY2RmMjAzNWY0YTYwYjQyMjUyOWE5Y2NhYTBhZmZkZTAuLjA0NzI3OTExNzIxZmRm
OTk3ZDBjYWIzMjgwNjQ4OTMyNDMzY2YyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC0yMjUsMTQgKzIyNSwxMyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldERlbGVn
YXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9sbGluZykKICAgICBkZWxlZ2F0ZXNTY3Jv
bGxpbmdEaWRDaGFuZ2UoKTsKIH0KIAotI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAor
SW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShib29sIGluY2x1
ZGVTY3JvbGxiYXJzKSBjb25zdAogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpOwor
ICAgICAgICByZXR1cm4gcGxhdGZvcm1WaXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJh
cnMpLnNpemUoKTsKIAogICAgIGlmICghbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OworICAgICAgICBy
ZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdC5zaXplKCk7CiAKICAgICBpbnQgdmVydGlj
YWxTY3JvbGxiYXJXaWR0aCA9IDA7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQg
PSAwOwpAQCAtMjQ0LDI2ICsyNDMsMjggQEAgSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29u
dGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKICAgICAgICAgICAgIGhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFy
KCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CiAgICAgfQogCi0gICAgcmV0dXJuIElu
dFJlY3QobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICBtX3Njcm9s
bE9mZnNldC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICBtYXgoMCwgd2lkdGgoKSAtIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgpLCAKKyAgICByZXR1cm4gSW50U2l6ZShtYXgoMCwgd2lkdGgo
KSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAogICAgICAgICAgICAgICAgICAgIG1heCgwLCBo
ZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKIH0KLSNlbmRpZgogCi1JbnRT
aXplIFNjcm9sbFZpZXc6OmxheW91dFNpemUoKSBjb25zdAorI2lmICFQTEFURk9STShHVEspCitJ
bnRSZWN0IFNjcm9sbFZpZXc6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxi
YXJzKSBjb25zdAogewotICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6ZS5pc0VtcHR5KCkgfHwg
IW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlU2l6ZSgpIDogbV9maXhlZExheW91dFNpemU7Ci19
CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybVZpc2li
bGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7CiAKLWludCBTY3JvbGxWaWV3OjpsYXlv
dXRXaWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHko
KSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVXaWR0aCgpIDogbV9maXhlZExheW91dFNp
emUud2lkdGgoKTsKKyAgICBpZiAoIW1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsKKworICAgIEZsb2F0
U2l6ZSB2aXNpYmxlQ29udGVudFNpemUgPSB1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShpbmNs
dWRlU2Nyb2xsYmFycyk7CisgICAgdmlzaWJsZUNvbnRlbnRTaXplLnNjYWxlKDEgLyB2aXNpYmxl
Q29udGVudFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KG1fc2Ny
b2xsT2Zmc2V0KSwgZXhwYW5kZWRJbnRTaXplKHZpc2libGVDb250ZW50U2l6ZSkpOwogfQorI2Vu
ZGlmCiAKLWludCBTY3JvbGxWaWV3OjpsYXlvdXRIZWlnaHQoKSBjb25zdAorSW50U2l6ZSBTY3Jv
bGxWaWV3OjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9maXhlZExheW91dFNp
emUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZUhlaWdodCgpIDogbV9m
aXhlZExheW91dFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlz
RW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXpl
KGZhbHNlKSA6IG1fZml4ZWRMYXlvdXRTaXplOwogfQogCiBJbnRTaXplIFNjcm9sbFZpZXc6OmZp
eGVkTGF5b3V0U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggZTA0M2Y2ZTlmNzQ4M2RjNDFjNDg1YmMxZDVmMWEwNTQwODY0Yzc0Ni4uZmU3YjAxMDExNTI4
NzFjMDIxZWVmZDE1MWI5ODYxOWI2ZGNmOTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaApAQCAtMTUxLDExICsxNTEsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHZp
c2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LndpZHRoKCk7IH0KICAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KIAorICAgIC8vIHZp
c2libGVDb250ZW50UmVjdCgpLnNpemUoKSBpcyBjb21wdXRlZCBmcm9tIHVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKCkgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2YgdmlzaWJsZUNvbnRlbnRTY2Fs
ZUZhY3Rvci4KKyAgICAvLyB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIHVzdWFsbHkgMSwg
ZXhjZXB0IHdoZW4gdGhlIHNldHRpbmcgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Ig
aXMgdHJ1ZSBhbmQgdGhlCisgICAgLy8gU2Nyb2xsVmlldyBpcyB0aGUgbWFpbiBmcmFtZTsgaW4g
dGhhdCBjYXNlLCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yIGlzIGVxdWFsIHRvIHRoZSBwYWdl
J3MgcGFnZVNjYWxlRmFjdG9yLgorICAgIC8vIFBvcnRzIHRoYXQgZG9uJ3QgdXNlIHBhZ2VTY2Fs
ZUZhY3RvciBjYW4gdHJlYXQgdW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUgYW5kIHZpc2libGVD
b250ZW50UmVjdCgpLnNpemUoKSBhcyBlcXVpdmFsZW50LgorICAgIEludFNpemUgdW5zY2FsZWRW
aXNpYmxlQ29udGVudFNpemUoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3Q7CisgICAgdmly
dHVhbCBmbG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsg
fQorCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0
IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRo
ZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8gY29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNl
dHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxsIGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0ZWFkLgogICAgIEludFNpemUgbGF5b3V0U2l6
ZSgpIGNvbnN0OwotICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0OwotICAgIGludCBsYXlvdXRI
ZWlnaHQoKSBjb25zdDsKKyAgICBpbnQgbGF5b3V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBsYXlv
dXRTaXplKCkud2lkdGgoKTsgfQorICAgIGludCBsYXlvdXRIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBsYXlvdXRTaXplKCkuaGVpZ2h0KCk7IH0KICAgICBJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICBib29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDZiMjk3YWVkNjVkMDIzNzY3
MzdiMDU1ZDQ4NzdlYjE3OWE1MDI4NzQuLjlhNTNkYTE1NWEyYjM1YTE5MjMwNGVmNGM1MjBkNjdl
OWQ1NjZlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpCiB7CiAgICAgaWYgKG1fY2xpcExheWVy
KSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZp
ZXcoKTsKLSAgICAgICAgbV9jbGlwTGF5ZXItPnNldFNpemUoZnJhbWVWaWV3LT52aXNpYmxlQ29u
dGVudFJlY3QoZmFsc2UgLyogZXhjbHVkZSBzY3JvbGxiYXJzICovKS5zaXplKCkpOworICAgICAg
ICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRT
aXplKGZhbHNlIC8qIGV4Y2x1ZGUgc2Nyb2xsYmFycyAqLykpOwogCiAgICAgICAgIGZyYW1lVmll
d0RpZFNjcm9sbCgpOwogICAgICAgICB1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCk7CkBA
IC0xNTQzLDcgKzE1NDMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9v
dExheWVyUG9zaXRpb24oKQogICAgIH0KICAgICBpZiAobV9jbGlwTGF5ZXIpIHsKICAgICAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAg
ICBtX2NsaXBMYXllci0+c2V0U2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxz
ZSAvKiBleGNsdWRlIHNjcm9sbGJhcnMgKi8pLnNpemUoKSk7CisgICAgICAgIG1fY2xpcExheWVy
LT5zZXRTaXplKGZyYW1lVmlldy0+dW5zY2FsZWRWaXNpYmxlQ29udGVudFNpemUoZmFsc2UgLyog
ZXhjbHVkZSBzY3JvbGxiYXJzICovKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCmluZGV4IDc5
ZWIxOWFjNWVlNmI4ZmU5NjJkNTg2NWVkNTkzNzFlOWE3MDM2NGYuLmJlZGUyODQ1YjZjN2U3YzRl
MTNkYjM0ZTY3ODU0NWI3NzkzOTA3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b3NpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9zaXplci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBUZXh0QXV0b3NpemVyOjpwcm9j
ZXNzU3VidHJlZShSZW5kZXJPYmplY3QqIGxheW91dFJvb3QpCiAgICAgd2luZG93SW5mby53aW5k
b3dTaXplID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKS0+dGV4dEF1dG9zaXppbmdXaW5kb3dTaXpl
T3ZlcnJpZGUoKTsKICAgICBpZiAod2luZG93SW5mby53aW5kb3dTaXplLmlzRW1wdHkoKSkgewog
ICAgICAgICBib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gIUluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkQXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKG1haW5GcmFtZSk7Ci0gICAgICAgIHdp
bmRvd0luZm8ud2luZG93U2l6ZSA9IG1haW5GcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJl
Y3QoaW5jbHVkZVNjcm9sbGJhcnMpLnNpemUoKTsKKyAgICAgICAgd2luZG93SW5mby53aW5kb3dT
aXplID0gbWFpbkZyYW1lLT52aWV3KCktPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKGluY2x1
ZGVTY3JvbGxiYXJzKTsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5zZXR0aW5ncygpLT5hcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAgICAgICAgICB3aW5kb3dJbmZv
LndpbmRvd1NpemUuc2NhbGUoMSAvIG1fZG9jdW1lbnQtPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IGI4MjdhNTY3MWNmNDE0M2Y2Zjk0MTA4MWNkMjI4NWMxYTQyNDc5YjQuLjkzOTQwYzFl
MjY4M2I2OWFhODk5MmU5NzRkMTQwZmJiMWUzNDQwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE2MjYsMTEgKzE2MjYsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+
d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogfQogCi1XZWJTaXplIFdlYlZpZXdJbXBsOjpzaXplKCkK
K0ludFNpemUgV2ViVmlld0ltcGw6OnNjYWxlZFNpemUoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBj
b25zdAogewotICAgIGlmIChpc0ZpeGVkTGF5b3V0TW9kZUVuYWJsZWQoKSAmJiBzZXR0aW5nc0lt
cGwoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKLSAgICAgICAgcmV0dXJu
IGxheW91dFNpemUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IGRpcFNpemUoKTsKKyAg
ICBzY2FsZWRTaXplLnNjYWxlKDEgLyBwYWdlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAKK1dlYlNpemUgV2ViVmlld0ltcGw6OnNpemUo
KQorewogICAgIHJldHVybiBtX3NpemU7CiB9CiAKQEAgLTE2NjEsNyArMTY2NSw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQogICAgIGlmICghYWdl
bnRQcml2YXRlIHx8ICFhZ2VudFByaXZhdGUtPm1ldHJpY3NPdmVycmlkZGVuKCkpIHsKICAgICAg
ICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKICAgICAgICAgaWYg
KHdlYkZyYW1lLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIHdlYkZyYW1lLT5mcmFtZVZpZXco
KS0+cmVzaXplKHNpemUoKSk7CisgICAgICAgICAgICB3ZWJGcmFtZS0+ZnJhbWVWaWV3KCktPnJl
c2l6ZShtX3NpemUpOwogICAgIH0KIAogI2lmIEVOQUJMRShWSUVXUE9SVCkKQEAgLTIwOTcsMzAg
KzIxMDEsMjQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJ
bnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKLSAgICAgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0
ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKLQog
ICAgIGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9ICZpbnB1dEV2
ZW50OwotICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKLSAgICBXZWJHZXN0dXJlRXZlbnQg
Z2VzdHVyZUV2ZW50OwotICAgIGlmIChXZWJJbnB1dEV2ZW50Ojppc01vdXNlRXZlbnRUeXBlKGlu
cHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25z
dCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotCi0gICAgICAgIEludFBvaW50IHRyYW5z
Zm9ybWVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobV9sYXllclRyZWVWaWV3LT5hZGp1c3RF
dmVudFBvaW50Rm9yUGluY2hab29tKFdlYkZsb2F0UG9pbnQobW91c2VFdmVudC54LCBtb3VzZUV2
ZW50LnkpKSk7Ci0gICAgICAgIG1vdXNlRXZlbnQueCA9IHRyYW5zZm9ybWVkTG9jYXRpb24ueCgp
OwotICAgICAgICBtb3VzZUV2ZW50LnkgPSB0cmFuc2Zvcm1lZExvY2F0aW9uLnkoKTsKLSAgICAg
ICAgaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVu
dCo+KCZtb3VzZUV2ZW50KTsKLSAgICB9IGVsc2UgaWYgKFdlYklucHV0RXZlbnQ6OmlzR2VzdHVy
ZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAgICAgIGdlc3R1cmVFdmVudCA9ICpz
dGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCk7Ci0KLSAgICAg
ICAgSW50UG9pbnQgdHJhbnNmb3JtZWRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2ludChtX2xheWVy
VHJlZVZpZXctPmFkanVzdEV2ZW50UG9pbnRGb3JQaW5jaFpvb20oV2ViRmxvYXRQb2ludChnZXN0
dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKSk7Ci0gICAgICAgIGdlc3R1cmVFdmVudC54ID0g
dHJhbnNmb3JtZWRMb2NhdGlvbi54KCk7Ci0gICAgICAgIGdlc3R1cmVFdmVudC55ID0gdHJhbnNm
b3JtZWRMb2NhdGlvbi55KCk7Ci0gICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKKyAgICBpZiAobV9w
YWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Cisg
ICAgICAgIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudDsKKyAgICAgICAgV2ViR2VzdHVyZUV2ZW50
IGdlc3R1cmVFdmVudDsKKyAgICAgICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5
cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOworICAgICAgICAgICAgbW91
c2VFdmVudC54ID0gbW91c2VFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAg
ICBtb3VzZUV2ZW50LnkgPSBtb3VzZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0
RXZlbnQqPigmbW91c2VFdmVudCk7CisgICAgICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6
aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKKyAgICAgICAgICAgIGdlc3R1
cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVu
dCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueCA9IGdlc3R1cmVFdmVudC54IC8gcGFnZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQueSA9IGdlc3R1cmVFdmVudC55
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQg
PSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJmdlc3R1cmVFdmVudCk7CisgICAg
ICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhbmRsZWQgPSBQYWdlV2lkZ2V0RGVsZWdhdGU6Omhh
bmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKmlucHV0RXZlbnRUcmFuc2Zvcm1l
ZCk7Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6
aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9y
bWVkKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgpCkBAIC0yOTM1
LDM0ICsyOTMzLDQwIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpjbGFtcFBhZ2VTY2FsZUZhY3RvclRv
TGltaXRzKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIHJldHVybiBtaW4obWF4KHNjYWxlRmFjdG9y
LCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwog
fQogCi1XZWJQb2ludCBXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYlBv
aW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKQorSW50UG9pbnQgV2ViVmlld0ltcGw6OmNsYW1wT2Zm
c2V0QXRTY2FsZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkgY29uc3QKIHsK
LSAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXplLiBXZSBuZWVkIHRvIGNvbnZl
cnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCi0gICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9
IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2Nh
bGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgZG9jV2lkdGhBdE5ld1NjYWxlID0gY29u
dGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOwotICAgIGludCBkb2NIZWlnaHRBdE5ld1NjYWxl
ID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsKLSAgICBpbnQgdmlld1dpZHRoID0g
bV9zaXplLndpZHRoOwotICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdodDsKLQotICAg
IC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0aW9ucyBhdCB0
aGUgbmV3IHNjYWxlLgogICAgIEludFBvaW50IGNsYW1wZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAg
Y2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoZG9jV2lkdGhB
dE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0gdmlld0hlaWdodCkp
OwotICAgIGNsYW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIGlmICghbV9w
YWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIHNjYWxlZCBjb250ZW50IHNpemUuIFdlIG5lZWQgdG8gY29u
dmVydCBpdCB0byB0aGUgbmV3IHNjYWxlIGZhY3Rvci4KKyAgICAgICAgV2ViU2l6ZSBjb250ZW50
U2l6ZSA9IGNvbnRlbnRzU2l6ZSgpOworICAgICAgICBpbnQgZG9jV2lkdGhBdE5ld1NjYWxlID0g
Y29udGVudFNpemUud2lkdGggKiBzY2FsZTsKKyAgICAgICAgaW50IGRvY0hlaWdodEF0TmV3U2Nh
bGUgPSBjb250ZW50U2l6ZS5oZWlnaHQgKiBzY2FsZTsKKyAgICAgICAgaW50IHZpZXdXaWR0aCA9
IG1fc2l6ZS53aWR0aDsKKyAgICAgICAgaW50IHZpZXdIZWlnaHQgPSBtX3NpemUuaGVpZ2h0Owor
CisgICAgICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0
aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgorICAgICAgICBjbGFtcGVkT2Zmc2V0ID0gY2xhbXBlZE9m
ZnNldC5zaHJ1bmtUbyhJbnRQb2ludChkb2NXaWR0aEF0TmV3U2NhbGUgLSB2aWV3V2lkdGgsIGRv
Y0hlaWdodEF0TmV3U2NhbGUgLSB2aWV3SGVpZ2h0KSk7CisgICAgICAgIGNsYW1wZWRPZmZzZXQu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsYW1wZWRPZmZz
ZXQgPSBjbGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGNvbnRlbnRzU2l6ZSgpIC0gc2Nh
bGVkU2l6ZShzY2FsZSkpKTsKKyAgICAgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisgICAgfQorCiAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQ7CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoZmxvYXQg
c2NhbGVGYWN0b3IpCiB7Ci0gICAgLy8gUGljayBhIHNjYWxlIGZhY3RvciB0aGF0IGlzIHdpdGhp
biB0aGUgZXhwZWN0ZWQgbGltaXRzCiAgICAgc2NhbGVGYWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZh
Y3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKIAotICAgIEludFBvaW50IHNjcm9sbE9mZnNldEF0
TmV3U2NhbGUobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBtYWluRnJhbWUoKS0+
c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKLSAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2NhbGVGYWN0
b3IgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLnNjYWxl
KGRlbHRhU2NhbGUsIGRlbHRhU2NhbGUpOworICAgIEludFBvaW50IHNjcm9sbE9mZnNldChtYWlu
RnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQo
KS5oZWlnaHQpOworICAgIGlmICghbV9wYWdlLT5zZXR0aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZh
Y3RvckluQ29tcG9zaXRvcigpKSB7CisgICAgICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZh
Y3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBzY3JvbGxPZmZzZXQuc2NhbGUoZGVs
dGFTY2FsZSwgZGVsdGFTY2FsZSk7CisgICAgfQorICAgIHNjcm9sbE9mZnNldCA9IGNsYW1wT2Zm
c2V0QXRTY2FsZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKIAotICAgIFdlYlBvaW50IGNs
YW1wZWRPZmZzZXRBdE5ld1NjYWxlID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldEF0
TmV3U2NhbGUsIHNjYWxlRmFjdG9yKTsKLSAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0
b3IsIGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlKTsKKyAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2Nh
bGVGYWN0b3IsIHNjcm9sbE9mZnNldCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikKQEAg
LTI5NzMsMjIgKzI5NzcsMTcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9y
KGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQogICAgIGlmICghc2Nh
bGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMTsKIAorICAgIEludFBvaW50IHNjcm9s
bE9mZnNldCA9IG9yaWdpbjsKICAgICBzY2FsZUZhY3RvciA9IGNsYW1wUGFnZVNjYWxlRmFjdG9y
VG9MaW1pdHMoc2NhbGVGYWN0b3IpOwotICAgIFdlYlBvaW50IHNjcm9sbE9mZnNldDsKLSAgICBp
ZiAoIW1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
KSkgewotICAgICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIG5vdCBhcHBsaWVkIGluIHRoZSBjb21w
b3NpdG9yLCB0aGVuIHRoZSBzY3JvbGwgb2Zmc2V0cyBzaG91bGQKLSAgICAgICAgLy8gYmUgbW9k
aWZpZWQgYnkgdGhlIHNjYWxlIGZhY3Rvci4KLSAgICAgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBP
ZmZzZXRBdFNjYWxlKG9yaWdpbiwgc2NhbGVGYWN0b3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEludFBvaW50IG9mZnNldCA9IG9yaWdpbjsKLSAgICAgICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9
IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgb2Zmc2V0LnNocnVua1RvKElu
dFBvaW50KGNvbnRlbnRTaXplLndpZHRoIC0gbV9zaXplLndpZHRoLCBjb250ZW50U2l6ZS5oZWln
aHQgLSBtX3NpemUuaGVpZ2h0KSk7Ci0gICAgICAgIG9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJv
KCk7Ci0gICAgICAgIHNjcm9sbE9mZnNldCA9IG9mZnNldDsKLSAgICB9CisgICAgc2Nyb2xsT2Zm
c2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwgc2NhbGVGYWN0b3IpOworCisg
ICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHNjcm9s
bE9mZnNldCkpOwogCi0gICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3Is
IHNjcm9sbE9mZnNldCk7CiAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9IHRydWU7CisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdXBkYXRlTGF5ZXJUcmVlVmlld3Bv
cnQoKTsKKyNlbmRpZgogfQogCiBmbG9hdCBXZWJWaWV3SW1wbDo6ZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdApAQCAtMzA3MiwxMiArMzA3MSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25v
cmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZShib29sIGZsYWcpCiAgICAgbV9wYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHBhZ2UoKS0+
bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCkpOwogfQogCi1zdGF0
aWMgSW50U2l6ZSB1bnNjYWxlZENvbnRlbnRzU2l6ZShGcmFtZSogZnJhbWUpCitJbnRTaXplIFdl
YlZpZXdJbXBsOjpjb250ZW50c1NpemUoKSBjb25zdAogeworICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKTsKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7Ci0g
ICAgcmV0dXJuIHJvb3QtPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkuc2l6ZSgpOworCisgICAgcmV0
dXJuIHJvb3QtPmRvY3VtZW50UmVjdCgpLnNpemUoKTsKIH0KIAogSW50U2l6ZSBXZWJWaWV3SW1w
bDo6bGF5b3V0U2l6ZSgpIGNvbnN0CkBAIC0zMDg1LDcgKzMwODYsOCBAQCBJbnRTaXplIFdlYlZp
ZXdJbXBsOjpsYXlvdXRTaXplKCkgY29uc3QKICAgICBpZiAoIWlzRml4ZWRMYXlvdXRNb2RlRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gbV9zaXplOwogCi0gICAgSW50U2l6ZSBjb250ZW50U2l6
ZSA9IHVuc2NhbGVkQ29udGVudHNTaXplKHBhZ2UoKS0+bWFpbkZyYW1lKCkpOworICAgIEludFNp
emUgY29udGVudFNpemUgPSBjb250ZW50c1NpemUoKTsKKwogICAgIGlmIChmaXhlZExheW91dFNp
emUoKS53aWR0aCA+PSBjb250ZW50U2l6ZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gZml4ZWRM
YXlvdXRTaXplKCk7CiAKQEAgLTMxMTMsNyArMzExNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNv
bXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKQogICAgIGludCB2aWV3V2lkdGhOb3RJbmNsdWRp
bmdTY3JvbGxiYXJzID0gbV9zaXplLndpZHRoOwogICAgIGlmICh2aWV3V2lkdGhOb3RJbmNsdWRp
bmdTY3JvbGxiYXJzICYmIHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIXZpZXctPnZlcnRp
Y2FsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpKQogICAgICAgICB2aWV3V2lkdGhO
b3RJbmNsdWRpbmdTY3JvbGxiYXJzIC09IHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRo
KCk7Ci0gICAgaW50IHVuc2NhbGVkQ29udGVudHNXaWR0aCA9IHVuc2NhbGVkQ29udGVudHNTaXpl
KHBhZ2UoKS0+bWFpbkZyYW1lKCkpLndpZHRoKCk7CisgICAgaW50IHVuc2NhbGVkQ29udGVudHNX
aWR0aCA9IGNvbnRlbnRzU2l6ZSgpLndpZHRoKCk7CiAgICAgaWYgKHZpZXdXaWR0aE5vdEluY2x1
ZGluZ1Njcm9sbGJhcnMgJiYgdW5zY2FsZWRDb250ZW50c1dpZHRoKSB7CiAgICAgICAgIC8vIExp
bWl0IHBhZ2Ugc2NhbGluZyBkb3duIHRvIHRoZSBkb2N1bWVudCB3aWR0aC4KICAgICAgICAgbV9t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yID0gbWF4KG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvciwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0aE5vdEluY2x1ZGluZ1Njcm9sbGJhcnMpIC8gdW5zY2Fs
ZWRDb250ZW50c1dpZHRoKTsKQEAgLTM3NjUsMTUgKzM3NjcsMTAgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKCkKICAgICB9IGVsc2UKICAgICAgICAgbWF5TmVlZExh
eW91dCA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKIAotICAgIEZyYW1lVmlldyog
dmlldyA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHNldHRpbmdzSW1w
bCgpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHZpZXcgJiYgdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpLndpZHRoKCkgIT0gbGF5b3V0U2l6ZSgpLndpZHRoKCkp
IHsKLSAgICAgICAgdmlldy0+cmVzaXplKGxheW91dFNpemUoKSk7Ci0gICAgICAgIG1heU5lZWRM
YXlvdXQgPSB0cnVlOwotICAgIH0KLQogICAgIC8vIGRpZENoYW5nZUNvbnRlbnRzU2l6ZSgpIG1h
eSBiZSBjYWxsZWQgZnJvbSBGcmFtZVZpZXc6OmxheW91dDsgd2UgbmVlZCB0bwogICAgIC8vIHJl
bGF5b3V0IHRvIGF2b2lkIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiB0aGF0IG5lZWRzTGF5b3V0
KCkgaXNuJ3Qgc2V0CiAgICAgLy8gYXQgdGhlIGVuZCBvZiBhIGxheW91dC4KKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOwogICAgIGlmIChtYXlOZWVk
TGF5b3V0ICYmIHZpZXcgJiYgdmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5
b3V0KCk7CiAjZW5kaWYKQEAgLTQyNDksMTYgKzQyNDYsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVjdCB2aXNp
YmxlUmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8qIGluY2x1ZGUgc2Nyb2xs
YmFycyAqLyk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKHZpZXctPnNjcm9sbFgoKSwgdmlldy0+c2Ny
b2xsWSgpKTsKIAotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydCh2
aXNpYmxlUmVjdC5zaXplKCksIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCBzY3JvbGwsIHZpZXctPnNj
cm9sbE9yaWdpbigpKTsKLQotICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gdmlzaWJs
ZVJlY3Quc2l6ZSgpOworICAgIEludFNpemUgbGF5b3V0Vmlld3BvcnRTaXplID0gbGF5b3V0U2l6
ZSgpOwogICAgIEludFNpemUgZGV2aWNlVmlld3BvcnRTaXplID0gbV9zaXplOwogICAgIGlmICht
X3dlYlNldHRpbmdzLT5hcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpCiAgICAg
ICAgIGRldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKIAorICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChkZXZpY2VWaWV3cG9ydFNp
emUsIHZpZXctPmNvbnRlbnRzU2l6ZSgpLCB2aWV3LT5zY3JvbGxQb3NpdGlvbigpLCB2aWV3LT5z
Y3JvbGxPcmlnaW4oKSk7CisKICAgICBtX2xheWVyVHJlZVZpZXctPnNldFZpZXdwb3J0U2l6ZShs
YXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CiAgICAgbV9sYXllclRyZWVW
aWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWlu
aW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDBmNmEyYWEzNDk4YjFiZTM0
MzM5Njk3ODczOWFjZTMzNDdkZjI5NjMuLmU3Y2UwZTdhN2I2OTMxMzc1ZjM1ZDA3OTI3ODQ0NDJh
OTJiMWMzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFNpemUgZGlwU2l6ZSgp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0OworICAgIFdl
YkNvcmU6OkludFNpemUgc2NhbGVkU2l6ZShmbG9hdCkgY29uc3Q7CiAKICAgICAvLyBTZXQgdGhl
IGRpc3Bvc2l0aW9uIGZvciBob3cgdGhpcyB3ZWJ2aWV3IGlzIHRvIGJlIGluaXRpYWxseSBzaG93
bi4KICAgICB2b2lkIHNldEluaXRpYWxOYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Qb2xp
Y3kgcG9saWN5KQpAQCAtNjE1LDcgKzYxNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9v
bCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxvYXQgY2xhbXBQYWdlU2Nh
bGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7Ci0gICAgV2ViUG9pbnQgY2xhbXBPZmZzZXRB
dFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxlKTsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9m
ZnNldCwgZmxvYXQgc2NhbGUpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFNpemUgY29udGVudHNT
aXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRl
eCA1M2ZmMmM3NDJmNTE4YzNjNWIyN2ViMTg3NjA1MzExZjUwMzA4MWI5Li5lYzVkYzY1YmFjOTgy
YWNjYmI3YmM0MTZiYTkyMDhlOGE0MGRlZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJh
bWVUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCkBAIC0z
MDcsNiArMzA4LDExMCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBTY2FsZUZhY3RvclNob3VsZE5v
dE9zY2lsbGF0ZSkKICAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CiB9CiAKK1RFU1RfRihXZWJG
cmFtZVRlc3QsIHNldFBhZ2VTY2FsZUZhY3RvckRvZXNOb3RMYXlvdXQpCit7CisgICAgcmVnaXN0
ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5
b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2
aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGlu
dCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9
IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRB
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygp
LT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJT
aXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPmxh
eW91dCgpOworCisgICAgaW50IHByZXZMYXlvdXRDb3VudCA9IHdlYlZpZXdJbXBsLT5tYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXRDb3VudCgpOworICAgIHdlYlZpZXdJbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoMywgV2ViUG9pbnQoKSk7CisgICAgRVhQRUNUX0VRKGZhbHNlLCB3
ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7
CisgICAgRVhQRUNUX0VRKHByZXZMYXlvdXRDb3VudCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dENvdW50KCkpOworfQorCitURVNUX0YoV2ViRnJhbWVU
ZXN0LCBwYWdlU2NhbGVGYWN0b3JXcml0dGVuVG9IaXN0b3J5SXRlbSkKK3sKKyAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9sYXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlv
dXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZp
Y2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50
IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50
KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFw
cGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5l
bmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCkt
PnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNp
emUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5
b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDMsIFdlYlBvaW50
KCkpOworICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOworICAgIHdlYlZpZXdJbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoMSwgV2ViUG9pbnQoKSk7CisgICAgd2ViVmlld0ltcGwtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlc3RvcmVTY3JvbGxQb3NpdGlv
bkFuZFZpZXdTdGF0ZSgpOworICAgIEVYUEVDVF9FUSgzLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxl
RmFjdG9yKCkpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBwYWdlU2NhbGVGYWN0b3JTaHJp
bmtzVmlld3BvcnQpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfbGF5
b3V0Lmh0bWwiKTsKKworICAgIEZpeGVkTGF5b3V0VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50Owor
ICAgIGNsaWVudC5tX3NjcmVlbkluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGludCB2
aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBp
bnQgdmlld3BvcnRXaWR0aE1pbnVzU2Nyb2xsYmFyID0gNjQwIC0gMTU7CisgICAgaW50IHZpZXdw
b3J0SGVpZ2h0TWludXNTY3JvbGxiYXIgPSA0ODAgLSAxNTsKKworICAgIFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1
ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURl
dmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXR0
aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3
ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBs
LT5zZXR0aW5ncygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwt
PnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2Vi
Vmlld0ltcGwtPmxheW91dCgpOworCisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rv
cigyLCBXZWJQb2ludCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgdW5zY2FsZWRTaXplID0g
d2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPnVuc2NhbGVkVmlzaWJs
ZUNvbnRlbnRTaXplKHRydWUpOworICAgIEVYUEVDVF9FUSh2aWV3cG9ydFdpZHRoLCB1bnNjYWxl
ZFNpemUud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKHZpZXdwb3J0SGVpZ2h0LCB1bnNjYWxlZFNp
emUuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSB1bnNjYWxlZFNpemVNaW51c1Nj
cm9sbGJhciA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT51bnNj
YWxlZFZpc2libGVDb250ZW50U2l6ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKHZpZXdwb3J0V2lk
dGhNaW51c1Njcm9sbGJhciwgdW5zY2FsZWRTaXplTWludXNTY3JvbGxiYXIud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0VRKHZpZXdwb3J0SGVpZ2h0TWludXNTY3JvbGxiYXIsIHVuc2NhbGVkU2l6ZU1p
bnVzU2Nyb2xsYmFyLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgc2NhbGVkU2l6
ZSA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT52aXNpYmxlQ29u
dGVudFJlY3QoKS5zaXplKCk7CisgICAgRVhQRUNUX0VRKGNlaWwodmlld3BvcnRXaWR0aE1pbnVz
U2Nyb2xsYmFyIC8gMi4wKSwgc2NhbGVkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoY2Vp
bCh2aWV3cG9ydEhlaWdodE1pbnVzU2Nyb2xsYmFyIC8gMi4wKSwgc2NhbGVkU2l6ZS5oZWlnaHQo
KSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvckRvZXNOb3RBcHBs
eUNzc1RyYW5zZm9ybSkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9s
YXlvdXQuaHRtbCIpOworCisgICAgRml4ZWRMYXlvdXRUZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7
CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaW50
IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworCisg
ICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRf
bGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRp
bmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAg
d2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7
CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsK
KyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRI
ZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOworCisgICAgRVhQRUNUX0VRKDEsIHdl
YlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5mcmFtZVNjYWxlRmFjdG9yKCkpOworICAg
IEVYUEVDVF9FUSg5ODAsIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5jb250ZW50
UmVuZGVyZXIoKS0+dW5zY2FsZWREb2N1bWVudFJlY3QoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoOTgwLCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+Y29udGVu
dHNTaXplKCkud2lkdGgoKSk7Cit9CiAjZW5kaWYKIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2Fu
T3ZlcnJpZGVNYXhpbXVtU2NhbGVGYWN0b3IpCkBAIC03ODQsNyArODg5LDcgQEAgVEVTVF9GKFdl
YkZyYW1lVGVzdCwgRGl2QXV0b1pvb21TY2FsZUZvbnRTY2FsZUZhY3RvclRlc3RDb21wb3NpdG9y
U2NhbGluZykKICAgICAvLyBab29tIGluIHRvIHJlc2V0IGRvdWJsZV90YXBfem9vbV9pbl9lZmZl
Y3QgZmxhZy4KICAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCks
IDEuMWYpOwogICAgIC8vIDEgPCB0ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvciA8IG1pbmlt
dW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQotICAgIHdlYlZp
ZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjJmLCA0KTsKKyAgICB3ZWJWaWV3LT5zZXRQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMoMS4wZiwgNCk7CiAgICAgZG91YmxlVGFwWm9vbUFscmVhZHlM
ZWdpYmxlU2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpICogZG91
YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CiAgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRM
YXlvdXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1Q
YWdlU2NhbGVGYWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlv
KSAvIDIpOwogICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2lu
dCwgc2NhbGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>