<?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>59134</bug_id>
          
          <creation_ts>2011-04-21 13:41:54 -0700</creation_ts>
          <short_desc>WebKit2: Support docked mode for Web Inspector</short_desc>
          <delta_ts>2011-04-28 15:52:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390295</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 13:41:54 -0700</bug_when>
    <thetext>We need to support the docked mode for the Web Inspector in WebKit2.

&lt;rdar://problem/8739005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390298</commentid>
    <comment_count>1</comment_count>
      <attachid>90590</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 13:43:25 -0700</bug_when>
    <thetext>Created attachment 90590
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390306</commentid>
    <comment_count>2</comment_count>
      <attachid>90590</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-21 13:46:23 -0700</bug_when>
    <thetext>Comment on attachment 90590
WIP Patch

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

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:1513
&gt; +HWND WebView::parentWindow()
&gt; +{
&gt; +    return ::GetParent(m_window);
&gt; +}

I think you could just make people do ::GetParent(webView-&gt;nativeWindow()) and avoid adding this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390309</commentid>
    <comment_count>3</comment_count>
      <attachid>90590</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 13:49:11 -0700</bug_when>
    <thetext>Comment on attachment 90590
WIP Patch

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

&gt;&gt; Source/WebKit2/UIProcess/win/WebView.cpp:1513
&gt;&gt; +}
&gt; 
&gt; I think you could just make people do ::GetParent(webView-&gt;nativeWindow()) and avoid adding this function.

Okay. I can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390398</commentid>
    <comment_count>4</comment_count>
      <attachid>90616</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 15:30:21 -0700</bug_when>
    <thetext>Created attachment 90616
[PATCH] Win fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390399</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 15:32:27 -0700</bug_when>
    <thetext>Attachment 90616 did not pass style-queue:

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

Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:96:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390462</commentid>
    <comment_count>6</comment_count>
      <attachid>90616</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-04-21 16:54:30 -0700</bug_when>
    <thetext>Comment on attachment 90616
[PATCH] Win fix

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

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:152
&gt; +    // FIXME: Implement this.

I assume you&apos;ll be implementing this next, but you might want to put a notImplemented() in here for now.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:157
&gt; +    // FIME: Implement this.

Ditto.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:162
&gt; +    // FIXME: Implement this.

Ditto.

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:177
&gt; +    GetClientRect(inspectorWindow, &amp;inspectorRect);

You should preface Win32 API calls with ::, i.e. ::GetClientRect()

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:182
&gt; +    SetWindowPos(inspectorWindow, 0, windowPos-&gt;x, windowPos-&gt;y + windowPos-&gt;cy, windowPos-&gt;cx, inspectorHeight, SWP_NOZORDER);

Ditto, should be ::SetWindowPos().

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:295
&gt; +    GetClientRect(inspectedWindow, &amp;inspectedRect);

Should be ::GetClientRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390586</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 20:46:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 90616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90616&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:152
&gt; &gt; +    // FIXME: Implement this.
&gt; 
&gt; I assume you&apos;ll be implementing this next, but you might want to put a notImplemented() in here for now.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:157
&gt; &gt; +    // FIME: Implement this.
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:162
&gt; &gt; +    // FIXME: Implement this.
&gt; 
&gt; Ditto.

Fixed all three cases of this.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:177
&gt; &gt; +    GetClientRect(inspectorWindow, &amp;inspectorRect);
&gt; 
&gt; You should preface Win32 API calls with ::, i.e. ::GetClientRect()

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:182
&gt; &gt; +    SetWindowPos(inspectorWindow, 0, windowPos-&gt;x, windowPos-&gt;y + windowPos-&gt;cy, windowPos-&gt;cx, inspectorHeight, SWP_NOZORDER);
&gt; 
&gt; Ditto, should be ::SetWindowPos().

Ditto.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:295
&gt; &gt; +    GetClientRect(inspectedWindow, &amp;inspectedRect);
&gt; 
&gt; Should be ::GetClientRect().

And fixed.

Also fixed the style-bot grievance, as much as it pains me to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390588</commentid>
    <comment_count>8</comment_count>
      <attachid>90664</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-21 20:48:04 -0700</bug_when>
    <thetext>Created attachment 90664
[PATCH] Win fix v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390748</commentid>
    <comment_count>9</comment_count>
      <attachid>90664</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-22 06:24:46 -0700</bug_when>
    <thetext>Comment on attachment 90664
[PATCH] Win fix v2

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

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:61
&gt; +, public WebCore::WindowMessageListener

You should indent this.

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:220
&gt;  void WebInspectorProxy::platformClose()
&gt;  {
&gt; +    if (m_isAttached) {
&gt; +        // Detach here so we only need to have one code path that is responsible for cleaning up the inspector
&gt; +        // state.
&gt; +        detach();
&gt; +        
&gt; +        // When the docked inspector is closed, WebInspector::close is never called, so the InspectorController
&gt; +        // doesn&apos;t know that the inspector has been closed, and never tries to re-create it when the user
&gt; +        // tries to open the inspector for the same view. Call close here, which sends a message to call
&gt; +        // WebInspector::close.
&gt; +        close();
&gt; +    }

It seems really strange for platformClose to call close. On the surface it sounds like that would cause infinite recursion, though I see that platformClose is in fact called from didClose (so maybe it should be renamed to platformDidClose?). It would be nice to find some other way to do this.

Why is this code Windows-only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390848</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-22 10:02:11 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 90664 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90664&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:61
&gt; &gt; +, public WebCore::WindowMessageListener
&gt; 
&gt; You should indent this.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:220
&gt; &gt;  void WebInspectorProxy::platformClose()
&gt; &gt;  {
&gt; &gt; +    if (m_isAttached) {
&gt; &gt; +        // Detach here so we only need to have one code path that is responsible for cleaning up the inspector
&gt; &gt; +        // state.
&gt; &gt; +        detach();
&gt; &gt; +        
&gt; &gt; +        // When the docked inspector is closed, WebInspector::close is never called, so the InspectorController
&gt; &gt; +        // doesn&apos;t know that the inspector has been closed, and never tries to re-create it when the user
&gt; &gt; +        // tries to open the inspector for the same view. Call close here, which sends a message to call
&gt; &gt; +        // WebInspector::close.
&gt; &gt; +        close();
&gt; &gt; +    }
&gt; 
&gt; It seems really strange for platformClose to call close. On the surface it sounds like that would cause infinite recursion, though I see that platformClose is in fact called from didClose (so maybe it should be renamed to platformDidClose?). It would be nice to find some other way to do this.

I agree, it is really strange. It has been fixed, we were missing a call at the WebProcess level, and this was a hack. It is fixed now.

&gt; 
&gt; Why is this code Windows-only?

When the Mac side is implemented, it probably won&apos;t be, I was just putting it there because the Windows side is implemented. It will probably move to cross-platform code when the Mac side is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390907</commentid>
    <comment_count>11</comment_count>
      <attachid>90728</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-22 11:06:06 -0700</bug_when>
    <thetext>Created attachment 90728
[PATCH] Win fix v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390911</commentid>
    <comment_count>12</comment_count>
      <attachid>90728</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-22 11:17:17 -0700</bug_when>
    <thetext>Comment on attachment 90728
[PATCH] Win fix v3

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

&gt; Source/WebKit2/ChangeLog:43
&gt; +        * WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp:
&gt; +        (WebKit::WebInspectorFrontendClient::attachWindow): Call WebInspector::attach.
&gt; +        (WebKit::WebInspectorFrontendClient::detachWindow): Call WebInspector::detach.
&gt; +        (WebKit::WebInspectorFrontendClient::setAttachedWindowHeight): Call WebInspector::setAttachedWindowHeight.

No comment on closeWindow!?

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:216
&gt;  void WebInspectorProxy::platformClose()
&gt;  {
&gt; +    if (m_isAttached) {
&gt; +        // Detach here so we only need to have one code path that is responsible for cleaning up the inspector
&gt; +        // state.
&gt; +        detach();
&gt; +    }
&gt; +
&gt; +    ASSERT(!m_isAttached);

Sure seems like this code should be in the cross-platform file.

&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:269
&gt; +    // We only want to show the inspector window if we&apos;re visible, if not, we are in the process
&gt; +    // of being destroyed, and we don&apos;t want this window to flash.
&gt; +    if (m_isVisible)
&gt; +        ::ShowWindow(m_inspectorWindow, SW_SHOW);

I&apos;m not sure the comment is needed here. Not showing the window when we&apos;re not visible makes sense even if the &quot;being destroyed&quot; case isn&apos;t considered.

&gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:551
&gt;  {
&gt;      ASSERT(!m_isPaintingSuspended);
&gt;      ASSERT(!m_layerTreeHost || m_layerTreeHost-&gt;participatesInDisplay());
&gt; -    ASSERT(!m_webPage-&gt;size().isEmpty());
&gt; +
&gt; +    if (m_webPage-&gt;size().isEmpty())
&gt; +        return;

We should be bailing out at an earlier point than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390918</commentid>
    <comment_count>13</comment_count>
      <attachid>90728</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-22 11:22:11 -0700</bug_when>
    <thetext>Comment on attachment 90728
[PATCH] Win fix v3

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

&gt;&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:216
&gt;&gt; +    ASSERT(!m_isAttached);
&gt; 
&gt; Sure seems like this code should be in the cross-platform file.

Yeah, especially since detach() is a no-op for platforms that haven&apos;t implemented platformDetach(), that is fine.

&gt;&gt; Source/WebKit2/UIProcess/win/WebInspectorProxyWin.cpp:269
&gt;&gt; +        ::ShowWindow(m_inspectorWindow, SW_SHOW);
&gt; 
&gt; I&apos;m not sure the comment is needed here. Not showing the window when we&apos;re not visible makes sense even if the &quot;being destroyed&quot; case isn&apos;t considered.

Comment removed.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:551
&gt;&gt; +        return;
&gt; 
&gt; We should be bailing out at an earlier point than this.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391029</commentid>
    <comment_count>14</comment_count>
      <attachid>90754</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-22 13:51:12 -0700</bug_when>
    <thetext>Created attachment 90754
[PATCH] Win Fix v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391696</commentid>
    <comment_count>15</comment_count>
      <attachid>90754</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-24 23:30:01 -0700</bug_when>
    <thetext>Comment on attachment 90754
[PATCH] Win Fix v4

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

&gt; Source/WebKit2/ChangeLog:44
&gt; +        (WebKit::WebInspectorFrontendClient::closeWindow): Add a call to the InspectorController to disconnect the inspector frontend
&gt; +            from the inspector backend. Without this line, when we close the attached inspector, it won&apos;t re-open, because the
&gt; +            inspector controller still thinks there is a frontend.

Might be worth mentioning that this matches WebKit1. Maybe someday WebCore should do this automatically.

&gt; Source/WebKit2/ChangeLog:48
&gt; +        (WebKit::DrawingAreaImpl::sendUpdateBackingStoreState): Add an early return if the WebPageProxy&apos;s viewSize is empty.

It would be good to expand on this comment a little bit to explain why this is a good and OK thing to do.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:496
&gt; +    PageClient* pageClient() const { return m_pageClient; }
&gt; +

It would be better to add a nativeWindow function that just calls through to the PageClient rather than exposing the client itself. (That would match WebPage::viewSize, for example.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391822</commentid>
    <comment_count>16</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-25 10:38:03 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 90754 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90754&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:44
&gt; &gt; +        (WebKit::WebInspectorFrontendClient::closeWindow): Add a call to the InspectorController to disconnect the inspector frontend
&gt; &gt; +            from the inspector backend. Without this line, when we close the attached inspector, it won&apos;t re-open, because the
&gt; &gt; +            inspector controller still thinks there is a frontend.
&gt; 
&gt; Might be worth mentioning that this matches WebKit1. Maybe someday WebCore should do this automatically.

Added: This matches WebKit1&apos;s behavior, although it seems like this is
            something WebCore should handle.

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:48
&gt; &gt; +        (WebKit::DrawingAreaImpl::sendUpdateBackingStoreState): Add an early return if the WebPageProxy&apos;s viewSize is empty.
&gt; 
&gt; It would be good to expand on this comment a little bit to explain why this is a good and OK thing to do.

Added: This can be needed if the inspector takes up the whole view, and it is useful to prevent a possible synchronous message
            from the UIProcess -&gt; WebProcess to update a backing store that isn&apos;t visible in the first place.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:496
&gt; &gt; +    PageClient* pageClient() const { return m_pageClient; }
&gt; &gt; +
&gt; 
&gt; It would be better to add a nativeWindow function that just calls through to the PageClient rather than exposing the client itself. (That would match WebPage::viewSize, for example.)

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391825</commentid>
    <comment_count>17</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-25 10:43:04 -0700</bug_when>
    <thetext>Landed Windows part of this in r84785.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394037</commentid>
    <comment_count>18</comment_count>
      <attachid>91392</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-27 17:48:42 -0700</bug_when>
    <thetext>Created attachment 91392
[PATCH] Mac Fix v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394782</commentid>
    <comment_count>19</comment_count>
      <attachid>91392</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-04-28 15:00:48 -0700</bug_when>
    <thetext>Comment on attachment 91392
[PATCH] Mac Fix v1

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

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:92
&gt; +- (NSInteger)tag
&gt; +{
&gt; +    return WKInspectorViewTag;
&gt; +}

You don&apos;t need to do this as a subclass. You can call setTag: on the normal WKView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394785</commentid>
    <comment_count>20</comment_count>
      <attachid>91392</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-28 15:03:45 -0700</bug_when>
    <thetext>Comment on attachment 91392
[PATCH] Mac Fix v1

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

&gt;&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:92
&gt;&gt; +}
&gt; 
&gt; You don&apos;t need to do this as a subclass. You can call setTag: on the normal WKView.

According to http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html - you can&apos;t call setTag on an NSView - you can set it in Interface Builder, but not in code. It looks like I need to do a subclass. I wish I could use setTag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394827</commentid>
    <comment_count>21</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-04-28 15:34:40 -0700</bug_when>
    <thetext>Mac side of this landed in r85245.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394841</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 15:52:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85245 might have broken WinCE Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90590</attachid>
            <date>2011-04-21 13:43:25 -0700</date>
            <delta_ts>2011-04-21 15:30:21 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>win_docked_mode_wip.patch</filename>
            <type>text/plain</type>
            <size>14525</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gODQ1Mjkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsNiArMTMwLDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgSFdORCBuYXRpdmVXaW5kb3coKSA9IDA7CisgICAgdmlydHVhbCBIV05EIHBhcmVudFdp
bmRvdygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VzdHVyZVJlYWNoZWRTY3JvbGxpbmdM
aW1pdChib29sKSA9IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNywxMiArMTA3LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIG1faXNBdHRhY2hlZCA9IHRydWU7CisKKyAgICBwbGF0Zm9ybUF0dGFjaCgpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcGxhdGZvcm1EZXRhY2goKTsKKworICAgIG1faXNBdHRhY2hlZCA9IGZhbHNl
OworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCit7CisgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCho
ZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0MiwxMCBAQCBPQkpDX0NM
QVNTIFdLVmlldzsKIE9CSkNfQ0xBU1MgV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2Fn
ZUxpc3RlbmVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBh
Z2VHcm91cDsKQEAgLTUyLDcgKzU2LDExIEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOwogY2xhc3MgV2ViVmlldzsKICNlbmRpZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JQcm94eSA6
IHB1YmxpYyBBUElPYmplY3QgeworY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJ
T2JqZWN0CisjaWYgUExBVEZPUk0oV0lOKQorLCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2Fn
ZUxpc3RlbmVyCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElU
eXBlID0gVHlwZUluc3BlY3RvcjsKIApAQCAtNzcsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CiAgICAgdm9pZCBh
dHRhY2goKTsKICAgICB2b2lkIGRldGFjaCgpOworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQpOwogCiAgICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQogICAgIHZvaWQgdG9nZ2xlSmF2
YVNjcmlwdERlYnVnZ2luZygpOwpAQCAtMTA1LDYgKzExNCw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpOwogICAg
IHZvaWQgcGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgcGxhdGZvcm1BdHRhY2goKTsKKyAgICB2b2lkIHBsYXRmb3JtRGV0YWNoKCk7CisgICAgdm9p
ZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKIAogICAgIC8vIElt
cGxlbWVudGVkIHRoZSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBmaWxlCiAgICAgU3RyaW5n
IGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTEyNyw2ICsxMzksOSBAQCBwcml2YXRlOgog
ICAgIExSRVNVTFQgb25NaW5NYXhJbmZvRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKICAgICBMUkVTVUxUIG9uU2V0Rm9jdXNFdmVu
dChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQp
OwogICAgIExSRVNVTFQgb25DbG9zZUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7CisKKyAgICB2b2lkIG9uV2ViVmlld1dpbmRvd1Bv
c0NoYW5naW5nRXZlbnQoV1BBUkFNLCBMUEFSQU0pOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dS
ZWNlaXZlZE1lc3NhZ2UoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAjZW5k
aWYKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGggPSA1MDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIERpZENs
b3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQogICAgIEluc3BlY3RlZFVSTENoYW5nZWQoV1RGOjpT
dHJpbmcgdXJsU3RyaW5nKQorICAgIAorICAgIEF0dGFjaCgpCisgICAgRGV0YWNoKCkKKyAgICBT
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiB9CiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODQ1Mjkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5Miw2ICs0OTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxpbmtDbGlja2VkKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKIAorICAgIFBhZ2VDbGllbnQqIHBh
Z2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGllbnQ7IH0KKwogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGluIHZpb2xhdGlvbiBvZiB0aGUgbm8gc3luY2hyb25vdXMgbWVzc2FnZXMgdG8g
dGhlIFdlYiBQcm9jZXNzIHBvbGljeSBhbmQKICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBz
b29uIGFzIHBvc3NpYmxlLgogICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZVNuYXBzaG90
T2ZWaXNpYmxlQ29udGVudCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHJldmlzaW9uIDg0NTI5KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFu
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CkBAIC04Nyw2ICs4OCwx
OSBAQCBMUkVTVUxUIENBTExCQUNLIFdlYkluc3BlY3RvclByb3h5OjpJbnNwCiAgICAgcmV0dXJu
IDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiB9CiAKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1z
ZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBBU1NFUlQobV9pc0F0dGFj
aGVkKTsKKworICAgIHN3aXRjaCAobXNnKSB7CisgICAgICAgIGNhc2UgV01fV0lORE9XUE9TQ0hB
TkdJTkc6CisgICAgICAgICAgICBvbldlYlZpZXdXaW5kb3dQb3NDaGFuZ2luZ0V2ZW50KHdQYXJh
bSwgbFBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCiBMUkVTVUxUIFdlYkluc3BlY3RvclByb3h5Ojp3bmRQ
cm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KQogewogICAgIExSRVNVTFQgbFJlc3VsdCA9IDA7CkBAIC0xNTAsNiArMTY0LDI0IEBAIExSRVNV
TFQgV2ViSW5zcGVjdG9yUHJveHk6Om9uQ2xvc2VFdmVudCgKICAgICByZXR1cm4gMDsKIH0KIAor
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b25XZWJWaWV3V2luZG93UG9zQ2hhbmdpbmdFdmVudChX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAgIFdJTkRPV1BPUyogd2luZG93UG9z
ID0gcmVpbnRlcnByZXRfY2FzdDxXSU5ET1dQT1MqPihsUGFyYW0pOworCisgICAgaWYgKHdpbmRv
d1Bvcy0+ZmxhZ3MgJiBTV1BfTk9TSVpFKQorICAgICAgICByZXR1cm47CisKKyAgICBIV05EIGlu
c3BlY3RvcldpbmRvdyA9IG1faW5zcGVjdG9yVmlldy0+d2luZG93KCk7CisKKyAgICBSRUNUIGlu
c3BlY3RvclJlY3Q7CisgICAgR2V0Q2xpZW50UmVjdChpbnNwZWN0b3JXaW5kb3csICZpbnNwZWN0
b3JSZWN0KTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0b3JIZWlnaHQgPSBpbnNwZWN0b3JSZWN0LmJv
dHRvbSAtIGluc3BlY3RvclJlY3QudG9wOworCisgICAgd2luZG93UG9zLT5jeSAtPSBpbnNwZWN0
b3JIZWlnaHQ7CisKKyAgICBTZXRXaW5kb3dQb3MoaW5zcGVjdG9yV2luZG93LCAwLCB3aW5kb3dQ
b3MtPngsIHdpbmRvd1Bvcy0+eSArIHdpbmRvd1Bvcy0+Y3ksIHdpbmRvd1Bvcy0+Y3gsIGluc3Bl
Y3RvckhlaWdodCwgU1dQX05PWk9SREVSKTsKK30KKwogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKICAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yVmlldyk7CkBAIC0xNzUsNiArMjA3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtT3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2xv
c2UoKQogeworICAgIC8vIElmIHdlIGFyZSBhdHRhY2hlZCwgZGV0YWNoIHRoZSB3aW5kb3cuIFRo
aXMgdGFrZXMgY2FyZSBvZiBjbGVhbmluZyB1cCB0aGUgc3RhdGUKKyAgICAvLyBmcm9tIHRoZSBh
dHRhY2hlZCB3aW5kb3cgKHJlbW92aW5nIHRoZSBXaW5kb3dNZXNzYWdlTGlzdGVuZXIsIGV0Yyks
IGFuZCB0aGVuIHdlCisgICAgLy8gb25seSBuZWVkIG9uZSBjb2RlIHBhdGggdG8gY2xvc2UuCisg
ICAgaWYgKG1faXNBdHRhY2hlZCkKKyAgICAgICAgZGV0YWNoKCk7CisKICAgICBBU1NFUlQoIW1f
aXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yV2luZG93KTsKICAgICBBU1NFUlQoIW1faXNWaXNpYmxl
IHx8IG1faW5zcGVjdG9yVmlldyk7CiAKQEAgLTIwNSw2ICsyNDMsNjAgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIDo6U2V0V2luZG93VGV4dFcobV9pbnNw
ZWN0b3JXaW5kb3csIHRpdGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogfQog
Cit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCit7CisgICAgSFdORCBw
YXJlbnRXaW5kb3cgPSBtX3BhZ2UtPnBhZ2VDbGllbnQoKS0+cGFyZW50V2luZG93KCk7CisgICAg
SFdORCB3ZWJWaWV3V2luZG93ID0gbV9wYWdlLT5wYWdlQ2xpZW50KCktPm5hdGl2ZVdpbmRvdygp
OworCisgICAgV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyOjphZGRMaXN0ZW5lcih3ZWJWaWV3V2lu
ZG93LCB0aGlzKTsKKyAgICBtX2luc3BlY3RvclZpZXctPnNldFBhcmVudFdpbmRvdyhwYXJlbnRX
aW5kb3cpOworICAgIDo6U2hvd1dpbmRvdyhtX2luc3BlY3RvcldpbmRvdywgU1dfSElERSk7CisK
KyAgICA6OlNlbmRNZXNzYWdlKHBhcmVudFdpbmRvdywgV01fU0laRSwgMCwgMCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKK3sKKyAgICBXaW5kb3dNZXNz
YWdlQnJvYWRjYXN0ZXI6OnJlbW92ZUxpc3RlbmVyKG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRp
dmVXaW5kb3coKSwgdGhpcyk7CisKKyAgICBtX2luc3BlY3RvclZpZXctPnNldFBhcmVudFdpbmRv
dyhtX2luc3BlY3RvcldpbmRvdyk7CisKKyAgICA6OlNob3dXaW5kb3cobV9pbnNwZWN0b3JXaW5k
b3csIFNXX1NIT1cpOworCisgICAgLy8gU2VuZCB0aGUgZGV0YWNoZWQgaW5zcGVjdG9yIHdpbmRv
dyBhbmQgdGhlIFdlYlZpZXcncyBwYXJlbnQgd2luZG93IFdNX1NJWkUgbWVzc2FnZXMKKyAgICAv
LyB0byBoYXZlIHRoZW0gcmUtbGF5b3V0IGNvcnJlY3RseS4KKyAgICA6OlNlbmRNZXNzYWdlKG1f
aW5zcGVjdG9yV2luZG93LCBXTV9TSVpFLCAwLCAwKTsKKyAgICA6OlNlbmRNZXNzYWdlKG1fcGFn
ZS0+cGFnZUNsaWVudCgpLT5wYXJlbnRXaW5kb3coKSwgV01fU0laRSwgMCwgMCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5z
aWduZWQgaGVpZ2h0KQoreworICAgIGlmICghbV9pc0F0dGFjaGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBIV05EIHBhcmVudFdpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5wYXJlbnRX
aW5kb3coKTsKKworICAgIFJFQ1QgcGFyZW50V2luZG93UmVjdDsKKyAgICA6OkdldENsaWVudFJl
Y3QocGFyZW50V2luZG93LCAmcGFyZW50V2luZG93UmVjdCk7CisKKyAgICBIV05EIGluc3BlY3Rl
ZFdpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRpdmVXaW5kb3coKTsKKyAgICBSRUNU
IGluc3BlY3RlZFJlY3Q7CisgICAgR2V0Q2xpZW50UmVjdChpbnNwZWN0ZWRXaW5kb3csICZpbnNw
ZWN0ZWRSZWN0KTsKKworICAgIGludCB0b3RhbEhlaWdodCA9IHBhcmVudFdpbmRvd1JlY3QuYm90
dG9tIC0gcGFyZW50V2luZG93UmVjdC50b3A7CisgICAgaW50IHdlYlZpZXdXaWR0aCA9IGluc3Bl
Y3RlZFJlY3QucmlnaHQgLSBpbnNwZWN0ZWRSZWN0LmxlZnQ7CisKKyAgICBIV05EIGluc3BlY3Rv
cldpbmRvdyA9IG1faW5zcGVjdG9yVmlldy0+d2luZG93KCk7CisgICAgOjpTZXRXaW5kb3dQb3Mo
aW5zcGVjdG9yV2luZG93LCAwLCAwLCB0b3RhbEhlaWdodCAtIGhlaWdodCwgd2ViVmlld1dpZHRo
LCBoZWlnaHQsIFNXUF9OT1pPUkRFUik7CisKKyAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgaW5z
cGVjdGVkIHdlYiB2aWV3IGhlaWdodCB0byB0aGUgdG90YWxIZWlnaHQsIGJlY2F1c2UgdGhlIGhl
aWdodCBhZGp1c3RtZW50CisgICAgLy8gb2YgdGhlIGluc3BlY3RlZCBXZWJWaWV3IGhhcHBlbnMg
aW4gb25XaW5kb3dQb3NDaGFuZ2luZywgbm90IGhlcmUuCisgICAgOjpTZXRXaW5kb3dQb3MoaW5z
cGVjdGVkV2luZG93LCAwLCAwLCAwLCB3ZWJWaWV3V2lkdGgsIHRvdGFsSGVpZ2h0LCBTV1BfTk9a
T1JERVIpOworCisgICAgOjpSZWRyYXdXaW5kb3coaW5zcGVjdG9yV2luZG93LCAwLCAwLCBSRFdf
SU5WQUxJREFURSB8IFJEV19BTExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOyAKKyAgICA6OlJl
ZHJhd1dpbmRvdyhpbnNwZWN0ZWRXaW5kb3csIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRXX0FM
TENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dG1sVVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgp
LCBDRlNUUigiaW5zcGVjdG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lv
biA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MDcsNiArMTUwNywxMSBAQCBIV05EIFdlYlZpZXc6Om5hdGl2ZVdp
bmRvdygpCiAgICAgcmV0dXJuIG1fd2luZG93OwogfQogCitIV05EIFdlYlZpZXc6OnBhcmVudFdp
bmRvdygpCit7CisgICAgcmV0dXJuIDo6R2V0UGFyZW50KG1fd2luZG93KTsKK30KKwogLy8gV2Vi
Q29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCiAKIHZvaWQgV2ViVmlldzo6d2luZG93UmVjZWl2
ZWRNZXNzYWdlKEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDg0NTI5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4OSw2ICsxODksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKIAogICAgIHZpcnR1YWwgSFdORCBuYXRpdmVXaW5k
b3coKTsKKyAgICB2aXJ0dWFsIEhXTkQgcGFyZW50V2luZG93KCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0R2VzdHVyZVJlYWNoZWRTY3JvbGxpbmdMaW1pdChib29sIGxpbWl0UmVhY2hlZCkgeyBt
X2dlc3R1cmVSZWFjaGVkU2Nyb2xsaW5nTGltaXQgPSBsaW1pdFJlYWNoZWQ7IH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDE2ICs2NCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpoaWRlSGlnaGxpZ2h0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBXZWJJbnNwZWN0b3IqIGlu
c3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgJKHJldmlzaW9uIDg0NTI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCAr
NDksMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5v
ZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogCisgICAgLyoKICAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZh
bHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAqLwogCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAJKHJldmlzaW9uIDg0NTI5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE3ICs3OSwxNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpkaXNjb25uCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2Ut
Pmluc3BlY3RvcigpLT5hdHRhY2goKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6ZGV0YWNoV2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmRldGFjaCgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3ZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdo
dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWFJbXBsLmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2
LDcgKzU0Niw5IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8KIHsK
ICAgICBBU1NFUlQoIW1faXNQYWludGluZ1N1c3BlbmRlZCk7CiAgICAgQVNTRVJUKCFtX2xheWVy
VHJlZUhvc3QgfHwgbV9sYXllclRyZWVIb3N0LT5wYXJ0aWNpcGF0ZXNJbkRpc3BsYXkoKSk7Ci0g
ICAgQVNTRVJUKCFtX3dlYlBhZ2UtPnNpemUoKS5pc0VtcHR5KCkpOworCisgICAgaWYgKG1fd2Vi
UGFnZS0+c2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBhdm9pZCBwYWludGluZyBhbHRvZ2V0aGVy
IHdoZW4gdGhlcmUgaXMgYSBjdXN0b20gcmVwcmVzZW50YXRpb24uCiAgICAgaWYgKG1fd2ViUGFn
ZS0+bWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSkgewpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJKHJldmlz
aW9uIDg0NTI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDIxIEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGMKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxD
aGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYkluc3Bl
Y3Rvcjo6YXR0YWNoKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2goKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6
OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0
b3I6OnNob3coKQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYg
Kzc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGF0dGFjaCgpOwor
ICAgIHZvaWQgZGV0YWNoKCk7CisKKyAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKTsKKwogICAgIC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBm
aWxlCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90616</attachid>
            <date>2011-04-21 15:30:21 -0700</date>
            <delta_ts>2011-04-21 20:48:04 -0700</delta_ts>
            <desc>[PATCH] Win fix</desc>
            <filename>inspector_docked_win.patch</filename>
            <type>text/plain</type>
            <size>18986</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NTUwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDQtMjEgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpbmRvd3MgcGFydCBvZiAtIFdlYktpdDI6IFN1cHBv
cnQgZG9ja2VkIG1vZGUgZm9yIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NzM5MDA1PgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IGF0dGFjaGluZyBhbmQgZGV0YWNo
aW5nIG9mIHRoZSBXZWIgSW5zcGVjdG9yIG9uIFdpbmRvd3MsCisgICAgICAgIGFuZCBhbHNvIHN1
cHBvcnQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBo
ZWlnaHQKKyAgICAgICAgb2YgdGhlIGRvY2tlZCBpbnNwZWN0b3IuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHBhdGNoIGRvZXNuJ3QgcmVtZW1iZXIgd2hldGhlciB0aGUgdXNlciBwcmVmZXJzIGF0
dGFjaGVkIG9yIGRldGFjaGVkLCBhbmQKKyAgICAgICAgZG9lc24ndCByZW1lbWJlciB0aGUgdXNl
cidzIHByZWZlcnJlZCBkb2NrZWQgaGVpZ2h0LCBidXQgdGhhdCB3aWxsIGJlIGEgc2VwYXJhdGUK
KyAgICAgICAgYnVnLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKTog
U2V0IHRoZSBhdHRhY2hlZCBmbGFnIGFuZCBjYWxsIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTog
Q2FsbCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOiBTZXQgbV9pc1Zpc2libGUgYmVmb3JlIGNhbGxpbmcgcGxhdGZv
cm1DbG9zZS4gcGxhdGZvcm1DbG9zZQorICAgICAgICAgICAgY2FsbHMgZGV0YWNoIGlmIHRoZSBp
bnNwZWN0b3Igd2FzIGRvY2tlZCwgYW5kIGRldGFjaCBuZWVkcyB0byBrbm93IHdoZXRoZXIgb3Ig
bm90IHRoZSB3aW5kb3cgaXMKKyAgICAgICAgICAgIHZpc2libGUuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1lc3NhZ2VzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ2xp
ZW50KTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgcGFnZSBjbGllbnQuCisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5Ojp3aW5kb3dSZWNlaXZlZE1lc3NhZ2UpOiBSZWxheSBXTV9XSU5ET1dQT1ND
SEFOR0lORyBtZXNzYWdlcyBmcm9tIHRoZSBpbnNwZWN0ZWQKKyAgICAgICAgICAgIHdlYiB2aWV3
IHRvIHRoZSBXZWJJbnNwZWN0b3JQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQpOiBSZXNpemUgdGhlIGluc3Bl
Y3RlZCB3ZWIgdmlldyB0byBiZWhhdmUgd2VsbAorICAgICAgICAgICAgd2l0aCB0aGUgZG9ja2Vk
IGluc3BlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q2xvc2UpOiBJZiB3ZSBhcmUgYXR0YWNoZWQsIGRldGFjaCBhbmQgY2FsbCBjbG9zZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKTogU2V0IHRoZSBp
bnNwZWN0b3IncyBob3N0IHdpbmRvdyB0byBiZSB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3J3MgcGFy
ZW50CisgICAgICAgICAgICB3aW5kb3csIHNvIHRoZSBpbnNwZWN0ZWQgd2ViIHZpZXcgYW5kIHRo
ZSBpbnNwZWN0b3IgYXJlIHNpYmxpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1EZXRhY2gpOiBTZXQgdGhlIGluc3BlY3RvcidzIGhvc3Qgd2luZG93IHRv
IGJlIHRoZSBzdGFuZGFsb25lIGluc3BlY3RvciB3aW5kb3cuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogU2l6ZSB0
aGUgdmlld3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOiBDYWxsIFdlYkluc3BlY3Rvcjo6YXR0YWNo
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2lu
ZG93KTogQ2FsbCBXZWJJbnNwZWN0b3I6OmRldGFjaC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogQ2FsbCBXZWJJ
bnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUltcGw6OmRpc3BsYXkpOiBDaGFuZ2UgdGhlIGFzc2VydCB0byBhbiBlYXJseSByZXR1cm4uIElm
IHRoZSBpbnNwZWN0b3IgY292ZXJzIHVwIHRoZSBwYWdlIGR1ZSB0bworICAgICAgICAgICAgdGhl
IHVzZXIgcmVzaXppbmcgdGhlIHdpbmRvdywgd2UgZG9uJ3Qgd2FudCB0byBjcmFzaC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yOjphdHRhY2gpOiBTZW5kIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRldGFjaCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGl0dG8u
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOiBSZW1vdmUgc29t
ZSBkZWFkIGNvZGUuCisKIDIwMTEtMDQtMjEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5n
QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTIgKzEwNywyMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmF0dGFjaCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2lzQXR0YWNo
ZWQgPSB0cnVlOworCisgICAgcGxhdGZvcm1BdHRhY2goKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6ZGV0YWNoKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faXNBdHRh
Y2hlZCA9IGZhbHNlOworCisgICAgcGxhdGZvcm1EZXRhY2goKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQorewor
ICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpCkBAIC0xOTAsOSAr
MTk5LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkTG9hZEluc3BlY3RvcgogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiB7Ci0gICAgcGxhdGZvcm1DbG9zZSgpOwot
CiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKKworICAgIHBsYXRmb3JtQ2xvc2UoKTsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCShyZXZpc2lvbiA4NDUyOSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0MiwxMCBAQCBPQkpDX0NMQVNTIFdLVmlldzsKIE9CSkNfQ0xBU1MgV2Vi
SW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQor
I2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUxpc3RlbmVyLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTUyLDcgKzU2LDExIEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgV2ViVmlldzsKICNlbmRp
ZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworY2xhc3Mg
V2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0CisjaWYgUExBVEZPUk0oV0lOKQor
LCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCisjZW5kaWYKK3sKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUluc3BlY3RvcjsKIApAQCAt
NzcsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F0dGFjaGVkOyB9CiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIGRldGFjaCgp
OworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogCiAgICAgYm9v
bCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2
YVNjcmlwdDsgfQogICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwpAQCAtMTA1
LDYgKzExNCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgdm9p
ZCBwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgcGxhdGZvcm1JbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcGxhdGZvcm1BdHRhY2goKTsKKyAgICB2
b2lkIHBsYXRmb3JtRGV0YWNoKCk7CisgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkKTsKIAogICAgIC8vIEltcGxlbWVudGVkIHRoZSBwbGF0Zm9ybSBXZWJJ
bnNwZWN0b3JQcm94eSBmaWxlCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsK
QEAgLTEyNyw2ICsxMzksOSBAQCBwcml2YXRlOgogICAgIExSRVNVTFQgb25NaW5NYXhJbmZvRXZl
bnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVk
KTsKICAgICBMUkVTVUxUIG9uU2V0Rm9jdXNFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwg
V1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwogICAgIExSRVNVTFQgb25DbG9zZUV2ZW50
KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7
CisKKyAgICB2b2lkIG9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQoV1BBUkFNLCBMUEFS
QU0pOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dSZWNlaXZlZE1lc3NhZ2UoSFdORCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtaW5pbXVtV2luZG93V2lkdGggPSA1MDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4g
V2ViSW5zcGVjdG9yUHJveHkgewogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQog
ICAgIEluc3BlY3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQorICAgIAorICAg
IEF0dGFjaCgpCisgICAgRGV0YWNoKCkKKyAgICBTZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCBoZWlnaHQpCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5Miw2ICs0OTIsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxpbmtDbGlja2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYk1vdXNl
RXZlbnQmKTsKIAorICAgIFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VDbGllbnQ7IH0KKwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluIHZpb2xhdGlvbiBvZiB0
aGUgbm8gc3luY2hyb25vdXMgbWVzc2FnZXMgdG8gdGhlIFdlYiBQcm9jZXNzIHBvbGljeSBhbmQK
ICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIHBvc3NpYmxlLgogICAgIFBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudCgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMjEg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIFttX2luc3Bl
Y3RvcldpbmRvdy5nZXQoKSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKK3sKKyAgICAv
LyBGSU1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
UGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgTlNTdHJpbmcgKnBhdGggPSBbW05TQnVuZGxlIGJ1bmRs
ZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXSBwYXRoRm9yUmVzb3VyY2U6QCJp
bnNwZWN0b3IiIG9mVHlwZTpAImh0bWwiIGluRGlyZWN0b3J5OkAiaW5zcGVjdG9yIl07CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5
UXQuY3BwCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJJbnNwZWN0b3JQcm94eVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMjEgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybURldGFjaCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclBhZ2VVUkwoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5
V2luLmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYkluc3BlY3RvclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KQEAgLTg3LDYgKzg4LDE5IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViSW5z
cGVjdG9yUHJveHk6Okluc3AKICAgICByZXR1cm4gOjpEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3Nh
Z2UsIHdQYXJhbSwgbFBhcmFtKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93
UmVjZWl2ZWRNZXNzYWdlKEhXTkQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQoreworICAgIEFTU0VSVChtX2lzQXR0YWNoZWQpOworCisgICAgc3dpdGNoIChtc2cpIHsK
KyAgICAgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0lORzoKKyAgICAgICAgICAgIG9uV2ViVmll
d1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQod1BhcmFtLCBsUGFyYW0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIExS
RVNVTFQgV2ViSW5zcGVjdG9yUHJveHk6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgTFJFU1VMVCBsUmVzdWx0ID0g
MDsKQEAgLTE1MCw2ICsxNjQsMjQgQEAgTFJFU1VMVCBXZWJJbnNwZWN0b3JQcm94eTo6b25DbG9z
ZUV2ZW50KAogICAgIHJldHVybiAwOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpvbldl
YlZpZXdXaW5kb3dQb3NDaGFuZ2luZ0V2ZW50KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
Cit7CisgICAgV0lORE9XUE9TKiB3aW5kb3dQb3MgPSByZWludGVycHJldF9jYXN0PFdJTkRPV1BP
Uyo+KGxQYXJhbSk7CisKKyAgICBpZiAod2luZG93UG9zLT5mbGFncyAmIFNXUF9OT1NJWkUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEhXTkQgaW5zcGVjdG9yV2luZG93ID0gbV9pbnNwZWN0b3JW
aWV3LT53aW5kb3coKTsKKworICAgIFJFQ1QgaW5zcGVjdG9yUmVjdDsKKyAgICBHZXRDbGllbnRS
ZWN0KGluc3BlY3RvcldpbmRvdywgJmluc3BlY3RvclJlY3QpOworICAgIHVuc2lnbmVkIGluc3Bl
Y3RvckhlaWdodCA9IGluc3BlY3RvclJlY3QuYm90dG9tIC0gaW5zcGVjdG9yUmVjdC50b3A7CisK
KyAgICB3aW5kb3dQb3MtPmN5IC09IGluc3BlY3RvckhlaWdodDsKKworICAgIFNldFdpbmRvd1Bv
cyhpbnNwZWN0b3JXaW5kb3csIDAsIHdpbmRvd1Bvcy0+eCwgd2luZG93UG9zLT55ICsgd2luZG93
UG9zLT5jeSwgd2luZG93UG9zLT5jeCwgaW5zcGVjdG9ySGVpZ2h0LCBTV1BfTk9aT1JERVIpOwor
fQorCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKQogewogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKQEAgLTE3NSw2ICsy
MDcsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuKCkKIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DbG9zZSgpCiB7CisgICAgaWYgKG1faXNBdHRhY2hl
ZCkgeworICAgICAgICAvLyBEZXRhY2ggaGVyZSBzbyB3ZSBvbmx5IG5lZWQgdG8gaGF2ZSBvbmUg
Y29kZSBwYXRoIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIHRoZSBpbnNwZWN0
b3IKKyAgICAgICAgLy8gc3RhdGUuCisgICAgICAgIGRldGFjaCgpOworICAgICAgICAKKyAgICAg
ICAgLy8gV2hlbiB0aGUgZG9ja2VkIGluc3BlY3RvciBpcyBjbG9zZWQsIFdlYkluc3BlY3Rvcjo6
Y2xvc2UgaXMgbmV2ZXIgY2FsbGVkLCBzbyB0aGUgSW5zcGVjdG9yQ29udHJvbGxlcgorICAgICAg
ICAvLyBkb2Vzbid0IGtub3cgdGhhdCB0aGUgaW5zcGVjdG9yIGhhcyBiZWVuIGNsb3NlZCwgYW5k
IG5ldmVyIHRyaWVzIHRvIHJlLWNyZWF0ZSBpdCB3aGVuIHRoZSB1c2VyCisgICAgICAgIC8vIHRy
aWVzIHRvIG9wZW4gdGhlIGluc3BlY3RvciBmb3IgdGhlIHNhbWUgdmlldy4gQ2FsbCBjbG9zZSBo
ZXJlLCB3aGljaCBzZW5kcyBhIG1lc3NhZ2UgdG8gY2FsbAorICAgICAgICAvLyBXZWJJbnNwZWN0
b3I6OmNsb3NlLgorICAgICAgICBjbG9zZSgpOworICAgIH0KKworICAgIEFTU0VSVCghbV9pc0F0
dGFjaGVkKTsKICAgICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yV2luZG93KTsK
ICAgICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yVmlldyk7CiAKQEAgLTIwNSw2
ICsyNTAsNjQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAg
IDo6U2V0V2luZG93VGV4dFcobV9pbnNwZWN0b3JXaW5kb3csIHRpdGxlLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUF0dGFjaCgpCit7CisgICAgSFdORCB3ZWJWaWV3V2luZG93ID0gbV9wYWdlLT5wYWdlQ2xpZW50
KCktPm5hdGl2ZVdpbmRvdygpOworICAgIEhXTkQgcGFyZW50V2luZG93ID0gOjpHZXRQYXJlbnQo
d2ViVmlld1dpbmRvdyk7CisKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OmFkZExpc3Rl
bmVyKHdlYlZpZXdXaW5kb3csIHRoaXMpOworICAgIG1faW5zcGVjdG9yVmlldy0+c2V0UGFyZW50
V2luZG93KHBhcmVudFdpbmRvdyk7CisgICAgOjpTaG93V2luZG93KG1faW5zcGVjdG9yV2luZG93
LCBTV19ISURFKTsKKworICAgIDo6U2VuZE1lc3NhZ2UocGFyZW50V2luZG93LCBXTV9TSVpFLCAw
LCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQorewor
ICAgIEhXTkQgd2ViVmlld1dpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRpdmVXaW5k
b3coKTsKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OnJlbW92ZUxpc3RlbmVyKHdlYlZp
ZXdXaW5kb3csIHRoaXMpOworCisgICAgbV9pbnNwZWN0b3JWaWV3LT5zZXRQYXJlbnRXaW5kb3co
bV9pbnNwZWN0b3JXaW5kb3cpOworCisgICAgLy8gV2Ugb25seSB3YW50IHRvIHNob3cgdGhlIGlu
c3BlY3RvciB3aW5kb3cgaWYgd2UncmUgdmlzaWJsZSwgaWYgbm90LCB3ZSBhcmUgaW4gdGhlIHBy
b2Nlc3MKKyAgICAvLyBvZiBiZWluZyBkZXN0cm95ZWQsIGFuZCB3ZSBkb24ndCB3YW50IHRoaXMg
d2luZG93IHRvIGZsYXNoLgorICAgIGlmIChtX2lzVmlzaWJsZSkKKyAgICAgICAgOjpTaG93V2lu
ZG93KG1faW5zcGVjdG9yV2luZG93LCBTV19TSE9XKTsKKworICAgIC8vIFNlbmQgdGhlIGRldGFj
aGVkIGluc3BlY3RvciB3aW5kb3cgYW5kIHRoZSBXZWJWaWV3J3MgcGFyZW50IHdpbmRvdyBXTV9T
SVpFIG1lc3NhZ2VzCisgICAgLy8gdG8gaGF2ZSB0aGVtIHJlLWxheW91dCBjb3JyZWN0bHkuCisg
ICAgOjpTZW5kTWVzc2FnZShtX2luc3BlY3RvcldpbmRvdywgV01fU0laRSwgMCwgMCk7CisgICAg
OjpTZW5kTWVzc2FnZSg6OkdldFBhcmVudCh3ZWJWaWV3V2luZG93KSwgV01fU0laRSwgMCwgMCk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIGlmICghbV9pc0F0dGFjaGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBIV05EIGluc3BlY3RlZFdpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVu
dCgpLT5uYXRpdmVXaW5kb3coKTsKKyAgICBIV05EIHBhcmVudFdpbmRvdyA9IDo6R2V0UGFyZW50
KGluc3BlY3RlZFdpbmRvdyk7CisKKyAgICBSRUNUIHBhcmVudFdpbmRvd1JlY3Q7CisgICAgOjpH
ZXRDbGllbnRSZWN0KHBhcmVudFdpbmRvdywgJnBhcmVudFdpbmRvd1JlY3QpOworCisgICAgUkVD
VCBpbnNwZWN0ZWRSZWN0OworICAgIEdldENsaWVudFJlY3QoaW5zcGVjdGVkV2luZG93LCAmaW5z
cGVjdGVkUmVjdCk7CisKKyAgICBpbnQgdG90YWxIZWlnaHQgPSBwYXJlbnRXaW5kb3dSZWN0LmJv
dHRvbSAtIHBhcmVudFdpbmRvd1JlY3QudG9wOworICAgIGludCB3ZWJWaWV3V2lkdGggPSBpbnNw
ZWN0ZWRSZWN0LnJpZ2h0IC0gaW5zcGVjdGVkUmVjdC5sZWZ0OworCisgICAgSFdORCBpbnNwZWN0
b3JXaW5kb3cgPSBtX2luc3BlY3RvclZpZXctPndpbmRvdygpOworICAgIDo6U2V0V2luZG93UG9z
KGluc3BlY3RvcldpbmRvdywgMCwgMCwgdG90YWxIZWlnaHQgLSBoZWlnaHQsIHdlYlZpZXdXaWR0
aCwgaGVpZ2h0LCBTV1BfTk9aT1JERVIpOworCisgICAgLy8gV2Ugd2FudCB0byBzZXQgdGhlIGlu
c3BlY3RlZCB3ZWIgdmlldyBoZWlnaHQgdG8gdGhlIHRvdGFsSGVpZ2h0LCBiZWNhdXNlIHRoZSBo
ZWlnaHQgYWRqdXN0bWVudAorICAgIC8vIG9mIHRoZSBpbnNwZWN0ZWQgV2ViVmlldyBoYXBwZW5z
IGluIG9uV2luZG93UG9zQ2hhbmdpbmcsIG5vdCBoZXJlLgorICAgIDo6U2V0V2luZG93UG9zKGlu
c3BlY3RlZFdpbmRvdywgMCwgMCwgMCwgd2ViVmlld1dpZHRoLCB0b3RhbEhlaWdodCwgU1dQX05P
Wk9SREVSKTsKKworICAgIDo6UmVkcmF3V2luZG93KGluc3BlY3RvcldpbmRvdywgMCwgMCwgUkRX
X0lOVkFMSURBVEUgfCBSRFdfQUxMQ0hJTERSRU4gfCBSRFdfVVBEQVRFTk9XKTsgCisgICAgOjpS
ZWRyYXdXaW5kb3coaW5zcGVjdGVkV2luZG93LCAwLCAwLCBSRFdfSU5WQUxJREFURSB8IFJEV19B
TExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RvclBhZ2VVUkwoKSBjb25zdAogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
aHRtbFVSTFJlZihBZG9wdENGLCBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUo
KSwgQ0ZTVFIoImluc3BlY3RvciIpLCBDRlNUUigiaHRtbCIpLCBDRlNUUigiaW5zcGVjdG9yIikp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDg0NTI5KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNiArNjQsNiBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSwgU3RyaW5nKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgV2ViSW5z
cGVjdG9yKiBpbnNwZWN0b3IgPSBtX3BhZ2UtPmluc3BlY3RvcigpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDkgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdl
YkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2
YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAJKHJldmlzaW9uIDg0NTI5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE3ICs3OSwxNyBAQCB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uCiAKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2goKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRldGFjaCgpOwogfQogCi12b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkK
K3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+
aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQ2LDcgKzU0Niw5IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5
KFVwZGF0ZUluZm8KIHsKICAgICBBU1NFUlQoIW1faXNQYWludGluZ1N1c3BlbmRlZCk7CiAgICAg
QVNTRVJUKCFtX2xheWVyVHJlZUhvc3QgfHwgbV9sYXllclRyZWVIb3N0LT5wYXJ0aWNpcGF0ZXNJ
bkRpc3BsYXkoKSk7Ci0gICAgQVNTRVJUKCFtX3dlYlBhZ2UtPnNpemUoKS5pc0VtcHR5KCkpOwor
CisgICAgaWYgKG1fd2ViUGFnZS0+c2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBhdm9pZCBwYWlu
dGluZyBhbHRvZ2V0aGVyIHdoZW4gdGhlcmUgaXMgYSBjdXN0b20gcmVwcmVzZW50YXRpb24uCiAg
ICAgaWYgKG1fd2ViUGFnZS0+bWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSkgewpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAJKHJldmlzaW9uIDg0NTI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDIxIEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGMKICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
Cit2b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2go
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQor
eworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkK
K3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKK30KKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwog
dm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gODQ1MjkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDYgKzc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQo
KTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2
b2lkIGF0dGFjaCgpOworICAgIHZvaWQgZGV0YWNoKCk7CisKKyAgICB2b2lkIHNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKKwogICAgIC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3Jt
IFdlYkluc3BlY3RvciBmaWxlCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25z
dDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90664</attachid>
            <date>2011-04-21 20:48:04 -0700</date>
            <delta_ts>2011-04-22 11:06:06 -0700</delta_ts>
            <desc>[PATCH] Win fix v2</desc>
            <filename>inspector_docked_win.patch</filename>
            <type>text/plain</type>
            <size>19165</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NTUwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDQtMjEgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpbmRvd3MgcGFydCBvZiAtIFdlYktpdDI6IFN1cHBv
cnQgZG9ja2VkIG1vZGUgZm9yIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NzM5MDA1PgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IGF0dGFjaGluZyBhbmQgZGV0YWNo
aW5nIG9mIHRoZSBXZWIgSW5zcGVjdG9yIG9uIFdpbmRvd3MsCisgICAgICAgIGFuZCBhbHNvIHN1
cHBvcnQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBo
ZWlnaHQKKyAgICAgICAgb2YgdGhlIGRvY2tlZCBpbnNwZWN0b3IuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHBhdGNoIGRvZXNuJ3QgcmVtZW1iZXIgd2hldGhlciB0aGUgdXNlciBwcmVmZXJzIGF0
dGFjaGVkIG9yIGRldGFjaGVkLCBhbmQKKyAgICAgICAgZG9lc24ndCByZW1lbWJlciB0aGUgdXNl
cidzIHByZWZlcnJlZCBkb2NrZWQgaGVpZ2h0LCBidXQgdGhhdCB3aWxsIGJlIGEgc2VwYXJhdGUK
KyAgICAgICAgYnVnLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKTog
U2V0IHRoZSBhdHRhY2hlZCBmbGFnIGFuZCBjYWxsIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTog
Q2FsbCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOiBTZXQgbV9pc1Zpc2libGUgYmVmb3JlIGNhbGxpbmcgcGxhdGZv
cm1DbG9zZS4gcGxhdGZvcm1DbG9zZQorICAgICAgICAgICAgY2FsbHMgZGV0YWNoIGlmIHRoZSBp
bnNwZWN0b3Igd2FzIGRvY2tlZCwgYW5kIGRldGFjaCBuZWVkcyB0byBrbm93IHdoZXRoZXIgb3Ig
bm90IHRoZSB3aW5kb3cgaXMKKyAgICAgICAgICAgIHZpc2libGUuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1lc3NhZ2VzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ2xp
ZW50KTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgcGFnZSBjbGllbnQuCisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5Ojp3aW5kb3dSZWNlaXZlZE1lc3NhZ2UpOiBSZWxheSBXTV9XSU5ET1dQT1ND
SEFOR0lORyBtZXNzYWdlcyBmcm9tIHRoZSBpbnNwZWN0ZWQKKyAgICAgICAgICAgIHdlYiB2aWV3
IHRvIHRoZSBXZWJJbnNwZWN0b3JQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQpOiBSZXNpemUgdGhlIGluc3Bl
Y3RlZCB3ZWIgdmlldyB0byBiZWhhdmUgd2VsbAorICAgICAgICAgICAgd2l0aCB0aGUgZG9ja2Vk
IGluc3BlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q2xvc2UpOiBJZiB3ZSBhcmUgYXR0YWNoZWQsIGRldGFjaCBhbmQgY2FsbCBjbG9zZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKTogU2V0IHRoZSBp
bnNwZWN0b3IncyBob3N0IHdpbmRvdyB0byBiZSB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3J3MgcGFy
ZW50CisgICAgICAgICAgICB3aW5kb3csIHNvIHRoZSBpbnNwZWN0ZWQgd2ViIHZpZXcgYW5kIHRo
ZSBpbnNwZWN0b3IgYXJlIHNpYmxpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1EZXRhY2gpOiBTZXQgdGhlIGluc3BlY3RvcidzIGhvc3Qgd2luZG93IHRv
IGJlIHRoZSBzdGFuZGFsb25lIGluc3BlY3RvciB3aW5kb3cuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogU2l6ZSB0
aGUgdmlld3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOiBDYWxsIFdlYkluc3BlY3Rvcjo6YXR0YWNo
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2lu
ZG93KTogQ2FsbCBXZWJJbnNwZWN0b3I6OmRldGFjaC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogQ2FsbCBXZWJJ
bnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUltcGw6OmRpc3BsYXkpOiBDaGFuZ2UgdGhlIGFzc2VydCB0byBhbiBlYXJseSByZXR1cm4uIElm
IHRoZSBpbnNwZWN0b3IgY292ZXJzIHVwIHRoZSBwYWdlIGR1ZSB0bworICAgICAgICAgICAgdGhl
IHVzZXIgcmVzaXppbmcgdGhlIHdpbmRvdywgd2UgZG9uJ3Qgd2FudCB0byBjcmFzaC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yOjphdHRhY2gpOiBTZW5kIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRldGFjaCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGl0dG8u
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOiBSZW1vdmUgc29t
ZSBkZWFkIGNvZGUuCisKIDIwMTEtMDQtMjEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5n
QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTIgKzEwNywyMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmF0dGFjaCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2lzQXR0YWNo
ZWQgPSB0cnVlOworCisgICAgcGxhdGZvcm1BdHRhY2goKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6ZGV0YWNoKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faXNBdHRh
Y2hlZCA9IGZhbHNlOworCisgICAgcGxhdGZvcm1EZXRhY2goKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQorewor
ICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpCkBAIC0xOTAsOSAr
MTk5LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkTG9hZEluc3BlY3RvcgogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiB7Ci0gICAgcGxhdGZvcm1DbG9zZSgpOwot
CiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKKworICAgIHBsYXRmb3JtQ2xvc2UoKTsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCShyZXZpc2lvbiA4NDUyOSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0MiwxMCBAQCBPQkpDX0NMQVNTIFdLVmlldzsKIE9CSkNfQ0xBU1MgV2Vi
SW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQor
I2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUxpc3RlbmVyLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTUyLDcgKzU2LDExIEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgV2ViVmlldzsKICNlbmRp
ZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworY2xhc3Mg
V2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0CisjaWYgUExBVEZPUk0oV0lOKQor
LCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCisjZW5kaWYKK3sKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUluc3BlY3RvcjsKIApAQCAt
NzcsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F0dGFjaGVkOyB9CiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIGRldGFjaCgp
OworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogCiAgICAgYm9v
bCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2
YVNjcmlwdDsgfQogICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwpAQCAtMTA1
LDYgKzExNCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgdm9p
ZCBwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgcGxhdGZvcm1JbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcGxhdGZvcm1BdHRhY2goKTsKKyAgICB2
b2lkIHBsYXRmb3JtRGV0YWNoKCk7CisgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkKTsKIAogICAgIC8vIEltcGxlbWVudGVkIHRoZSBwbGF0Zm9ybSBXZWJJ
bnNwZWN0b3JQcm94eSBmaWxlCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsK
QEAgLTEyNyw2ICsxMzksOSBAQCBwcml2YXRlOgogICAgIExSRVNVTFQgb25NaW5NYXhJbmZvRXZl
bnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVk
KTsKICAgICBMUkVTVUxUIG9uU2V0Rm9jdXNFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwg
V1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwogICAgIExSRVNVTFQgb25DbG9zZUV2ZW50
KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7
CisKKyAgICB2b2lkIG9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQoV1BBUkFNLCBMUEFS
QU0pOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dSZWNlaXZlZE1lc3NhZ2UoSFdORCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtaW5pbXVtV2luZG93V2lkdGggPSA1MDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4g
V2ViSW5zcGVjdG9yUHJveHkgewogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQog
ICAgIEluc3BlY3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQorICAgIAorICAg
IEF0dGFjaCgpCisgICAgRGV0YWNoKCkKKyAgICBTZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCBoZWlnaHQpCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5Miw2ICs0OTIsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxpbmtDbGlja2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYk1vdXNl
RXZlbnQmKTsKIAorICAgIFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VDbGllbnQ7IH0KKwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluIHZpb2xhdGlvbiBvZiB0
aGUgbm8gc3luY2hyb25vdXMgbWVzc2FnZXMgdG8gdGhlIFdlYiBQcm9jZXNzIHBvbGljeSBhbmQK
ICAgICAvLyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIHBvc3NpYmxlLgogICAgIFBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudCgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCShyZXZpc2lvbiA4NDUyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE0Nyw2ICsxNDgsMjEgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIFttX2luc3BlY3RvcldpbmRvdy5n
ZXQoKSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXR0YWNoKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBTdHJpbmcgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSBjb25zdAogewogICAgIE5TU3RyaW5nICpw
YXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3Jl
Il0gcGF0aEZvclJlc291cmNlOkAiaW5zcGVjdG9yIiBvZlR5cGU6QCJodG1sIiBpbkRpcmVjdG9y
eTpAImluc3BlY3RvciJdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYklu
c3BlY3RvclByb3h5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDYgKzU5LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5z
cGVjdGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUF0dGFjaCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5n
IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHJldmlzaW9uIDg0NTI5KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5k
bGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CkBAIC04Nyw2ICs4OCwxOSBAQCBM
UkVTVUxUIENBTExCQUNLIFdlYkluc3BlY3RvclByb3h5OjpJbnNwCiAgICAgcmV0dXJuIDo6RGVm
V2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiB9CiAKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OndpbmRvd1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1zZywgV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBBU1NFUlQobV9pc0F0dGFjaGVkKTsK
KworICAgIHN3aXRjaCAobXNnKSB7CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0lORzoKKyAg
ICAgICAgb25XZWJWaWV3V2luZG93UG9zQ2hhbmdpbmdFdmVudCh3UGFyYW0sIGxQYXJhbSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwog
TFJFU1VMVCBXZWJJbnNwZWN0b3JQcm94eTo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUkVTVUxUIGxSZXN1bHQg
PSAwOwpAQCAtMTUwLDYgKzE2NCwyNCBAQCBMUkVTVUxUIFdlYkluc3BlY3RvclByb3h5OjpvbkNs
b3NlRXZlbnQoCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9u
V2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSkKK3sKKyAgICBXSU5ET1dQT1MqIHdpbmRvd1BvcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0lORE9X
UE9TKj4obFBhcmFtKTsKKworICAgIGlmICh3aW5kb3dQb3MtPmZsYWdzICYgU1dQX05PU0laRSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSFdORCBpbnNwZWN0b3JXaW5kb3cgPSBtX2luc3BlY3Rv
clZpZXctPndpbmRvdygpOworCisgICAgUkVDVCBpbnNwZWN0b3JSZWN0OworICAgIDo6R2V0Q2xp
ZW50UmVjdChpbnNwZWN0b3JXaW5kb3csICZpbnNwZWN0b3JSZWN0KTsKKyAgICB1bnNpZ25lZCBp
bnNwZWN0b3JIZWlnaHQgPSBpbnNwZWN0b3JSZWN0LmJvdHRvbSAtIGluc3BlY3RvclJlY3QudG9w
OworCisgICAgd2luZG93UG9zLT5jeSAtPSBpbnNwZWN0b3JIZWlnaHQ7CisKKyAgICA6OlNldFdp
bmRvd1BvcyhpbnNwZWN0b3JXaW5kb3csIDAsIHdpbmRvd1Bvcy0+eCwgd2luZG93UG9zLT55ICsg
d2luZG93UG9zLT5jeSwgd2luZG93UG9zLT5jeCwgaW5zcGVjdG9ySGVpZ2h0LCBTV1BfTk9aT1JE
RVIpOworfQorCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUluc3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKQEAgLTE3
NSw2ICsyMDcsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuKCkKIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DbG9zZSgpCiB7CisgICAgaWYgKG1faXNB
dHRhY2hlZCkgeworICAgICAgICAvLyBEZXRhY2ggaGVyZSBzbyB3ZSBvbmx5IG5lZWQgdG8gaGF2
ZSBvbmUgY29kZSBwYXRoIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIHRoZSBp
bnNwZWN0b3IKKyAgICAgICAgLy8gc3RhdGUuCisgICAgICAgIGRldGFjaCgpOworICAgICAgICAK
KyAgICAgICAgLy8gV2hlbiB0aGUgZG9ja2VkIGluc3BlY3RvciBpcyBjbG9zZWQsIFdlYkluc3Bl
Y3Rvcjo6Y2xvc2UgaXMgbmV2ZXIgY2FsbGVkLCBzbyB0aGUgSW5zcGVjdG9yQ29udHJvbGxlcgor
ICAgICAgICAvLyBkb2Vzbid0IGtub3cgdGhhdCB0aGUgaW5zcGVjdG9yIGhhcyBiZWVuIGNsb3Nl
ZCwgYW5kIG5ldmVyIHRyaWVzIHRvIHJlLWNyZWF0ZSBpdCB3aGVuIHRoZSB1c2VyCisgICAgICAg
IC8vIHRyaWVzIHRvIG9wZW4gdGhlIGluc3BlY3RvciBmb3IgdGhlIHNhbWUgdmlldy4gQ2FsbCBj
bG9zZSBoZXJlLCB3aGljaCBzZW5kcyBhIG1lc3NhZ2UgdG8gY2FsbAorICAgICAgICAvLyBXZWJJ
bnNwZWN0b3I6OmNsb3NlLgorICAgICAgICBjbG9zZSgpOworICAgIH0KKworICAgIEFTU0VSVCgh
bV9pc0F0dGFjaGVkKTsKICAgICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yV2lu
ZG93KTsKICAgICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yVmlldyk7CiAKQEAg
LTIwNSw2ICsyNTAsNjQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0
ZQogICAgIDo6U2V0V2luZG93VGV4dFcobV9pbnNwZWN0b3JXaW5kb3csIHRpdGxlLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUF0dGFjaCgpCit7CisgICAgSFdORCB3ZWJWaWV3V2luZG93ID0gbV9wYWdlLT5wYWdl
Q2xpZW50KCktPm5hdGl2ZVdpbmRvdygpOworICAgIEhXTkQgcGFyZW50V2luZG93ID0gOjpHZXRQ
YXJlbnQod2ViVmlld1dpbmRvdyk7CisKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OmFk
ZExpc3RlbmVyKHdlYlZpZXdXaW5kb3csIHRoaXMpOworICAgIG1faW5zcGVjdG9yVmlldy0+c2V0
UGFyZW50V2luZG93KHBhcmVudFdpbmRvdyk7CisgICAgOjpTaG93V2luZG93KG1faW5zcGVjdG9y
V2luZG93LCBTV19ISURFKTsKKworICAgIDo6U2VuZE1lc3NhZ2UocGFyZW50V2luZG93LCBXTV9T
SVpFLCAwLCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2go
KQoreworICAgIEhXTkQgd2ViVmlld1dpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRp
dmVXaW5kb3coKTsKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OnJlbW92ZUxpc3RlbmVy
KHdlYlZpZXdXaW5kb3csIHRoaXMpOworCisgICAgbV9pbnNwZWN0b3JWaWV3LT5zZXRQYXJlbnRX
aW5kb3cobV9pbnNwZWN0b3JXaW5kb3cpOworCisgICAgLy8gV2Ugb25seSB3YW50IHRvIHNob3cg
dGhlIGluc3BlY3RvciB3aW5kb3cgaWYgd2UncmUgdmlzaWJsZSwgaWYgbm90LCB3ZSBhcmUgaW4g
dGhlIHByb2Nlc3MKKyAgICAvLyBvZiBiZWluZyBkZXN0cm95ZWQsIGFuZCB3ZSBkb24ndCB3YW50
IHRoaXMgd2luZG93IHRvIGZsYXNoLgorICAgIGlmIChtX2lzVmlzaWJsZSkKKyAgICAgICAgOjpT
aG93V2luZG93KG1faW5zcGVjdG9yV2luZG93LCBTV19TSE9XKTsKKworICAgIC8vIFNlbmQgdGhl
IGRldGFjaGVkIGluc3BlY3RvciB3aW5kb3cgYW5kIHRoZSBXZWJWaWV3J3MgcGFyZW50IHdpbmRv
dyBXTV9TSVpFIG1lc3NhZ2VzCisgICAgLy8gdG8gaGF2ZSB0aGVtIHJlLWxheW91dCBjb3JyZWN0
bHkuCisgICAgOjpTZW5kTWVzc2FnZShtX2luc3BlY3RvcldpbmRvdywgV01fU0laRSwgMCwgMCk7
CisgICAgOjpTZW5kTWVzc2FnZSg6OkdldFBhcmVudCh3ZWJWaWV3V2luZG93KSwgV01fU0laRSwg
MCwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIGlmICghbV9pc0F0dGFjaGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBIV05EIGluc3BlY3RlZFdpbmRvdyA9IG1fcGFnZS0+cGFn
ZUNsaWVudCgpLT5uYXRpdmVXaW5kb3coKTsKKyAgICBIV05EIHBhcmVudFdpbmRvdyA9IDo6R2V0
UGFyZW50KGluc3BlY3RlZFdpbmRvdyk7CisKKyAgICBSRUNUIHBhcmVudFdpbmRvd1JlY3Q7Cisg
ICAgOjpHZXRDbGllbnRSZWN0KHBhcmVudFdpbmRvdywgJnBhcmVudFdpbmRvd1JlY3QpOworCisg
ICAgUkVDVCBpbnNwZWN0ZWRSZWN0OworICAgIDo6R2V0Q2xpZW50UmVjdChpbnNwZWN0ZWRXaW5k
b3csICZpbnNwZWN0ZWRSZWN0KTsKKworICAgIGludCB0b3RhbEhlaWdodCA9IHBhcmVudFdpbmRv
d1JlY3QuYm90dG9tIC0gcGFyZW50V2luZG93UmVjdC50b3A7CisgICAgaW50IHdlYlZpZXdXaWR0
aCA9IGluc3BlY3RlZFJlY3QucmlnaHQgLSBpbnNwZWN0ZWRSZWN0LmxlZnQ7CisKKyAgICBIV05E
IGluc3BlY3RvcldpbmRvdyA9IG1faW5zcGVjdG9yVmlldy0+d2luZG93KCk7CisgICAgOjpTZXRX
aW5kb3dQb3MoaW5zcGVjdG9yV2luZG93LCAwLCAwLCB0b3RhbEhlaWdodCAtIGhlaWdodCwgd2Vi
Vmlld1dpZHRoLCBoZWlnaHQsIFNXUF9OT1pPUkRFUik7CisKKyAgICAvLyBXZSB3YW50IHRvIHNl
dCB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3IGhlaWdodCB0byB0aGUgdG90YWxIZWlnaHQsIGJlY2F1
c2UgdGhlIGhlaWdodCBhZGp1c3RtZW50CisgICAgLy8gb2YgdGhlIGluc3BlY3RlZCBXZWJWaWV3
IGhhcHBlbnMgaW4gb25XaW5kb3dQb3NDaGFuZ2luZywgbm90IGhlcmUuCisgICAgOjpTZXRXaW5k
b3dQb3MoaW5zcGVjdGVkV2luZG93LCAwLCAwLCAwLCB3ZWJWaWV3V2lkdGgsIHRvdGFsSGVpZ2h0
LCBTV1BfTk9aT1JERVIpOworCisgICAgOjpSZWRyYXdXaW5kb3coaW5zcGVjdG9yV2luZG93LCAw
LCAwLCBSRFdfSU5WQUxJREFURSB8IFJEV19BTExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOyAK
KyAgICA6OlJlZHJhd1dpbmRvdyhpbnNwZWN0ZWRXaW5kb3csIDAsIDAsIFJEV19JTlZBTElEQVRF
IHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7Cit9CisKIFN0cmluZyBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktp
dEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVjdG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNw
ZWN0b3IiKSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24g
ODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDE2ICs2NCw2IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDg0NTI5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksOSArNDksNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoaWdo
bGlnaHQoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBT
dHJpbmcqIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAkocmV2aXNp
b24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTcgKzc5
LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRpc2Nvbm4KIAogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaCgpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGV0YWNoKCk7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCShyZXZpc2lvbiA4NDUyOSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNyArNTQ2LDkgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6
OmRpc3BsYXkoVXBkYXRlSW5mbwogewogICAgIEFTU0VSVCghbV9pc1BhaW50aW5nU3VzcGVuZGVk
KTsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdCB8fCBtX2xheWVyVHJlZUhvc3QtPnBhcnRp
Y2lwYXRlc0luRGlzcGxheSgpKTsKLSAgICBBU1NFUlQoIW1fd2ViUGFnZS0+c2l6ZSgpLmlzRW1w
dHkoKSk7CisKKyAgICBpZiAobV93ZWJQYWdlLT5zaXplKCkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIGF2
b2lkIHBhaW50aW5nIGFsdG9nZXRoZXIgd2hlbiB0aGVyZSBpcyBhIGN1c3RvbSByZXByZXNlbnRh
dGlvbi4KICAgICBpZiAobV93ZWJQYWdlLT5tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
bigpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gODQ1MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiAr
OTYsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3I6Omluc3BlY3RlZFVSTENoYW5nZWQoYwogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2goKQoreworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkF0dGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OmRl
dGFjaCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
fQorCit2b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1l
c3NhZ2VzCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvdygpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCShyZXZpc2lvbiA4NDUy
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJyaW5n
VG9Gcm9udCgpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsK
IAorICAgIHZvaWQgYXR0YWNoKCk7CisgICAgdm9pZCBkZXRhY2goKTsKKworICAgIHZvaWQgc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4g
cGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUKICAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TCgpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90728</attachid>
            <date>2011-04-22 11:06:06 -0700</date>
            <delta_ts>2011-04-22 13:51:12 -0700</delta_ts>
            <desc>[PATCH] Win fix v3</desc>
            <filename>inspector_docked_win.patch</filename>
            <type>text/plain</type>
            <size>19190</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NjQ1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDQtMjIgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpbmRvd3MgcGFydCBvZiAtIFdlYktpdDI6IFN1cHBv
cnQgZG9ja2VkIG1vZGUgZm9yIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NzM5MDA1PgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IGF0dGFjaGluZyBhbmQgZGV0YWNo
aW5nIG9mIHRoZSBXZWIgSW5zcGVjdG9yIG9uIFdpbmRvd3MsCisgICAgICAgIGFuZCBhbHNvIHN1
cHBvcnQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBo
ZWlnaHQKKyAgICAgICAgb2YgdGhlIGRvY2tlZCBpbnNwZWN0b3IuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHBhdGNoIGRvZXNuJ3QgcmVtZW1iZXIgd2hldGhlciB0aGUgdXNlciBwcmVmZXJzIGF0
dGFjaGVkIG9yIGRldGFjaGVkLCBhbmQKKyAgICAgICAgZG9lc24ndCByZW1lbWJlciB0aGUgdXNl
cidzIHByZWZlcnJlZCBkb2NrZWQgaGVpZ2h0LCBidXQgdGhhdCB3aWxsIGJlIGEgc2VwYXJhdGUK
KyAgICAgICAgYnVnLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKTog
U2V0IHRoZSBhdHRhY2hlZCBmbGFnIGFuZCBjYWxsIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTog
Q2FsbCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOiBTZXQgbV9pc1Zpc2libGUgYmVmb3JlIGNhbGxpbmcgcGxhdGZv
cm1DbG9zZS4gcGxhdGZvcm1DbG9zZQorICAgICAgICAgICAgY2FsbHMgZGV0YWNoIGlmIHRoZSBp
bnNwZWN0b3Igd2FzIGRvY2tlZCwgYW5kIGRldGFjaCBuZWVkcyB0byBrbm93IHdoZXRoZXIgb3Ig
bm90IHRoZSB3aW5kb3cgaXMKKyAgICAgICAgICAgIHZpc2libGUuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1lc3NhZ2VzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ2xp
ZW50KTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgcGFnZSBjbGllbnQuCisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5Ojp3aW5kb3dSZWNlaXZlZE1lc3NhZ2UpOiBSZWxheSBXTV9XSU5ET1dQT1ND
SEFOR0lORyBtZXNzYWdlcyBmcm9tIHRoZSBpbnNwZWN0ZWQKKyAgICAgICAgICAgIHdlYiB2aWV3
IHRvIHRoZSBXZWJJbnNwZWN0b3JQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQpOiBSZXNpemUgdGhlIGluc3Bl
Y3RlZCB3ZWIgdmlldyB0byBiZWhhdmUgd2VsbAorICAgICAgICAgICAgd2l0aCB0aGUgZG9ja2Vk
IGluc3BlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q2xvc2UpOiBJZiB3ZSBhcmUgYXR0YWNoZWQsIGRldGFjaCBiZWZvcmUgZGVzdHJveWluZy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKTogU2V0IHRo
ZSBpbnNwZWN0b3IncyBob3N0IHdpbmRvdyB0byBiZSB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3J3Mg
cGFyZW50CisgICAgICAgICAgICB3aW5kb3csIHNvIHRoZSBpbnNwZWN0ZWQgd2ViIHZpZXcgYW5k
IHRoZSBpbnNwZWN0b3IgYXJlIHNpYmxpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOiBTZXQgdGhlIGluc3BlY3RvcidzIGhvc3Qgd2luZG93
IHRvIGJlIHRoZSBzdGFuZGFsb25lIGluc3BlY3RvciB3aW5kb3cuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogU2l6
ZSB0aGUgdmlld3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOiBDYWxsIFdlYkluc3BlY3Rvcjo6YXR0
YWNoLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNo
V2luZG93KTogQ2FsbCBXZWJJbnNwZWN0b3I6OmRldGFjaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogQ2FsbCBX
ZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0LgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5n
QXJlYUltcGw6OmRpc3BsYXkpOiBDaGFuZ2UgdGhlIGFzc2VydCB0byBhbiBlYXJseSByZXR1cm4u
IElmIHRoZSBpbnNwZWN0b3IgY292ZXJzIHVwIHRoZSBwYWdlIGR1ZSB0bworICAgICAgICAgICAg
dGhlIHVzZXIgcmVzaXppbmcgdGhlIHdpbmRvdywgd2UgZG9uJ3Qgd2FudCB0byBjcmFzaC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yOjphdHRhY2gpOiBTZW5kIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9j
ZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRldGFjaCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOiBSZW1vdmUg
c29tZSBkZWFkIGNvZGUuCisKIDIwMTEtMDQtMjIgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3Rl
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlz
aW9uIDg0NjQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDEyICsxMDcsMjEgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2go
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKKwor
ICAgIHBsYXRmb3JtQXR0YWNoKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRldGFj
aCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsK
KworICAgIHBsYXRmb3JtRGV0YWNoKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBwbGF0Zm9ybVNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKQpAQCAtMTkwLDkgKzE5OSw5IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmRpZExvYWRJbnNwZWN0b3IKIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6ZGlkQ2xvc2UoKQogewotICAgIHBsYXRmb3JtQ2xvc2UoKTsKLQogICAgIG1faXNWaXNp
YmxlID0gZmFsc2U7CisKKyAgICBwbGF0Zm9ybUNsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmJyaW5nVG9Gcm9udCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAkocmV2aXNpb24gODQ2NDUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsMTAgQEAgT0JKQ19DTEFTUyBXS1ZpZXc7CiBPQkpDX0NMQVNTIFdlYkluc3BlY3RvclByb3h5
T2JqQ0FkYXB0ZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd01lc3NhZ2VMaXN0ZW5lci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJQYWdlR3JvdXA7CkBAIC01Miw3ICs1NiwxMSBAQCBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIFdlYlZpZXc7CiAjZW5kaWYKIAotY2xhc3MgV2Vi
SW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkluc3BlY3RvclBy
b3h5IDogcHVibGljIEFQSU9iamVjdAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW5zcGVjdG9yOwogCkBAIC03Nyw2ICs4NSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0
YWNoZWQ7IH0KICAgICB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CisgICAgdm9p
ZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CiAKICAgICBib29sIGlzRGVidWdn
aW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OyB9
CiAgICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7CkBAIC0xMDUsNiArMTE0LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKICAgICB2b2lkIHBsYXRmb3Jt
QnJpbmdUb0Zyb250KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBwbGF0Zm9ybUF0dGFjaCgpOworICAgIHZvaWQgcGxhdGZv
cm1EZXRhY2goKTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5z
aWduZWQpOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgdGhlIHBsYXRmb3JtIFdlYkluc3BlY3RvclBy
b3h5IGZpbGUKICAgICBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0OwpAQCAtMTI3LDYg
KzEzOSw5IEBAIHByaXZhdGU6CiAgICAgTFJFU1VMVCBvbk1pbk1heEluZm9FdmVudChIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwogICAgIExS
RVNVTFQgb25TZXRGb2N1c0V2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQ
QVJBTSwgYm9vbCYgaGFuZGxlZCk7CiAgICAgTFJFU1VMVCBvbkNsb3NlRXZlbnQoSFdORCBoV25k
LCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKKworICAgIHZv
aWQgb25XZWJWaWV3V2luZG93UG9zQ2hhbmdpbmdFdmVudChXUEFSQU0sIExQQVJBTSk7CisgICAg
dmlydHVhbCB2b2lkIHdpbmRvd1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSwgTFBBUkFNKTsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmlt
dW1XaW5kb3dXaWR0aCA9IDUwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDg0NjQ1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3JQcm94eSB7CiAgICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCiAgICAgSW5zcGVj
dGVkVVJMQ2hhbmdlZChXVEY6OlN0cmluZyB1cmxTdHJpbmcpCisgICAgCisgICAgQXR0YWNoKCkK
KyAgICBEZXRhY2goKQorICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdo
dCkKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiA4NDY0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDkyLDYgKzQ5Miw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViTW91c2VFdmVudCYpOwog
CisgICAgUGFnZUNsaWVudCogcGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUNsaWVu
dDsgfQorCiAgICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsgfQogCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgaW4gdmlvbGF0aW9uIG9mIHRoZSBubyBzeW5jaHJvbm91cyBtZXNzYWdlcyB0
byB0aGUgV2ViIFByb2Nlc3MgcG9saWN5IGFuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiA4NDY0
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTE0Nyw2ICsxNDgsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1JbnNwZWN0ZQogICAgIFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBzZXRUaXRsZTp0aXRsZV07
CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURl
dGFjaCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clBhZ2VVUkwoKSBjb25zdAogewogICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5k
bGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl0gcGF0aEZvclJlc291cmNlOkAi
aW5zcGVjdG9yIiBvZlR5cGU6QCJodG1sIiBpbkRpcmVjdG9yeTpAImluc3BlY3RvciJdOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94
eVF0LmNwcAkocmV2aXNpb24gODQ2NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViSW5zcGVjdG9yUHJveHlRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDIxIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGUKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1EZXRhY2goKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAJKHJldmlzaW9uIDg0NjQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CkBAIC04Nyw2ICs4OCwxOSBAQCBMUkVTVUxUIENBTExCQUNLIFdlYklu
c3BlY3RvclByb3h5OjpJbnNwCiAgICAgcmV0dXJuIDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRv
d1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQ
YXJhbSkKK3sKKyAgICBBU1NFUlQobV9pc0F0dGFjaGVkKTsKKworICAgIHN3aXRjaCAobXNnKSB7
CisgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0lORzoKKyAgICAgICAgb25XZWJWaWV3V2luZG93
UG9zQ2hhbmdpbmdFdmVudCh3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogTFJFU1VMVCBXZWJJbnNwZWN0b3JQ
cm94eTo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKIHsKICAgICBMUkVTVUxUIGxSZXN1bHQgPSAwOwpAQCAtMTUwLDYgKzE2NCwy
NCBAQCBMUkVTVUxUIFdlYkluc3BlY3RvclByb3h5OjpvbkNsb3NlRXZlbnQoCiAgICAgcmV0dXJu
IDA7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5n
aW5nRXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBXSU5ET1dQT1Mq
IHdpbmRvd1BvcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0lORE9XUE9TKj4obFBhcmFtKTsKKworICAg
IGlmICh3aW5kb3dQb3MtPmZsYWdzICYgU1dQX05PU0laRSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSFdORCBpbnNwZWN0b3JXaW5kb3cgPSBtX2luc3BlY3RvclZpZXctPndpbmRvdygpOworCisg
ICAgUkVDVCBpbnNwZWN0b3JSZWN0OworICAgIDo6R2V0Q2xpZW50UmVjdChpbnNwZWN0b3JXaW5k
b3csICZpbnNwZWN0b3JSZWN0KTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0b3JIZWlnaHQgPSBpbnNw
ZWN0b3JSZWN0LmJvdHRvbSAtIGluc3BlY3RvclJlY3QudG9wOworCisgICAgd2luZG93UG9zLT5j
eSAtPSBpbnNwZWN0b3JIZWlnaHQ7CisKKyAgICA6OlNldFdpbmRvd1BvcyhpbnNwZWN0b3JXaW5k
b3csIDAsIHdpbmRvd1Bvcy0+eCwgd2luZG93UG9zLT55ICsgd2luZG93UG9zLT5jeSwgd2luZG93
UG9zLT5jeCwgaW5zcGVjdG9ySGVpZ2h0LCBTV1BfTk9aT1JERVIpOworfQorCiBXZWJQYWdlUHJv
eHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewog
ICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKQEAgLTE3NSw2ICsyMDcsMTMgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1PcGVuKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DbG9zZSgpCiB7CisgICAgaWYgKG1faXNBdHRhY2hlZCkgeworICAgICAgICAv
LyBEZXRhY2ggaGVyZSBzbyB3ZSBvbmx5IG5lZWQgdG8gaGF2ZSBvbmUgY29kZSBwYXRoIHRoYXQg
aXMgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIHRoZSBpbnNwZWN0b3IKKyAgICAgICAgLy8g
c3RhdGUuCisgICAgICAgIGRldGFjaCgpOworICAgIH0KKworICAgIEFTU0VSVCghbV9pc0F0dGFj
aGVkKTsKICAgICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yV2luZG93KTsKICAg
ICBBU1NFUlQoIW1faXNWaXNpYmxlIHx8IG1faW5zcGVjdG9yVmlldyk7CiAKQEAgLTIwNSw2ICsy
NDQsNjQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZQogICAgIDo6
U2V0V2luZG93VGV4dFcobV9pbnNwZWN0b3JXaW5kb3csIHRpdGxlLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaCgpCit7CisgICAgSFdORCB3ZWJWaWV3V2luZG93ID0gbV9wYWdlLT5wYWdlQ2xpZW50KCkt
Pm5hdGl2ZVdpbmRvdygpOworICAgIEhXTkQgcGFyZW50V2luZG93ID0gOjpHZXRQYXJlbnQod2Vi
Vmlld1dpbmRvdyk7CisKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OmFkZExpc3RlbmVy
KHdlYlZpZXdXaW5kb3csIHRoaXMpOworICAgIG1faW5zcGVjdG9yVmlldy0+c2V0UGFyZW50V2lu
ZG93KHBhcmVudFdpbmRvdyk7CisgICAgOjpTaG93V2luZG93KG1faW5zcGVjdG9yV2luZG93LCBT
V19ISURFKTsKKworICAgIDo6U2VuZE1lc3NhZ2UocGFyZW50V2luZG93LCBXTV9TSVpFLCAwLCAw
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQoreworICAg
IEhXTkQgd2ViVmlld1dpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRpdmVXaW5kb3co
KTsKKyAgICBXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXI6OnJlbW92ZUxpc3RlbmVyKHdlYlZpZXdX
aW5kb3csIHRoaXMpOworCisgICAgbV9pbnNwZWN0b3JWaWV3LT5zZXRQYXJlbnRXaW5kb3cobV9p
bnNwZWN0b3JXaW5kb3cpOworCisgICAgLy8gV2Ugb25seSB3YW50IHRvIHNob3cgdGhlIGluc3Bl
Y3RvciB3aW5kb3cgaWYgd2UncmUgdmlzaWJsZSwgaWYgbm90LCB3ZSBhcmUgaW4gdGhlIHByb2Nl
c3MKKyAgICAvLyBvZiBiZWluZyBkZXN0cm95ZWQsIGFuZCB3ZSBkb24ndCB3YW50IHRoaXMgd2lu
ZG93IHRvIGZsYXNoLgorICAgIGlmIChtX2lzVmlzaWJsZSkKKyAgICAgICAgOjpTaG93V2luZG93
KG1faW5zcGVjdG9yV2luZG93LCBTV19TSE9XKTsKKworICAgIC8vIFNlbmQgdGhlIGRldGFjaGVk
IGluc3BlY3RvciB3aW5kb3cgYW5kIHRoZSBXZWJWaWV3J3MgcGFyZW50IHdpbmRvdyBXTV9TSVpF
IG1lc3NhZ2VzCisgICAgLy8gdG8gaGF2ZSB0aGVtIHJlLWxheW91dCBjb3JyZWN0bHkuCisgICAg
OjpTZW5kTWVzc2FnZShtX2luc3BlY3RvcldpbmRvdywgV01fU0laRSwgMCwgMCk7CisgICAgOjpT
ZW5kTWVzc2FnZSg6OkdldFBhcmVudCh3ZWJWaWV3V2luZG93KSwgV01fU0laRSwgMCwgMCk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIGlmICghbV9pc0F0dGFjaGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBIV05EIGluc3BlY3RlZFdpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgp
LT5uYXRpdmVXaW5kb3coKTsKKyAgICBIV05EIHBhcmVudFdpbmRvdyA9IDo6R2V0UGFyZW50KGlu
c3BlY3RlZFdpbmRvdyk7CisKKyAgICBSRUNUIHBhcmVudFdpbmRvd1JlY3Q7CisgICAgOjpHZXRD
bGllbnRSZWN0KHBhcmVudFdpbmRvdywgJnBhcmVudFdpbmRvd1JlY3QpOworCisgICAgUkVDVCBp
bnNwZWN0ZWRSZWN0OworICAgIDo6R2V0Q2xpZW50UmVjdChpbnNwZWN0ZWRXaW5kb3csICZpbnNw
ZWN0ZWRSZWN0KTsKKworICAgIGludCB0b3RhbEhlaWdodCA9IHBhcmVudFdpbmRvd1JlY3QuYm90
dG9tIC0gcGFyZW50V2luZG93UmVjdC50b3A7CisgICAgaW50IHdlYlZpZXdXaWR0aCA9IGluc3Bl
Y3RlZFJlY3QucmlnaHQgLSBpbnNwZWN0ZWRSZWN0LmxlZnQ7CisKKyAgICBIV05EIGluc3BlY3Rv
cldpbmRvdyA9IG1faW5zcGVjdG9yVmlldy0+d2luZG93KCk7CisgICAgOjpTZXRXaW5kb3dQb3Mo
aW5zcGVjdG9yV2luZG93LCAwLCAwLCB0b3RhbEhlaWdodCAtIGhlaWdodCwgd2ViVmlld1dpZHRo
LCBoZWlnaHQsIFNXUF9OT1pPUkRFUik7CisKKyAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgaW5z
cGVjdGVkIHdlYiB2aWV3IGhlaWdodCB0byB0aGUgdG90YWxIZWlnaHQsIGJlY2F1c2UgdGhlIGhl
aWdodCBhZGp1c3RtZW50CisgICAgLy8gb2YgdGhlIGluc3BlY3RlZCBXZWJWaWV3IGhhcHBlbnMg
aW4gb25XaW5kb3dQb3NDaGFuZ2luZywgbm90IGhlcmUuCisgICAgOjpTZXRXaW5kb3dQb3MoaW5z
cGVjdGVkV2luZG93LCAwLCAwLCAwLCB3ZWJWaWV3V2lkdGgsIHRvdGFsSGVpZ2h0LCBTV1BfTk9a
T1JERVIpOworCisgICAgOjpSZWRyYXdXaW5kb3coaW5zcGVjdG9yV2luZG93LCAwLCAwLCBSRFdf
SU5WQUxJREFURSB8IFJEV19BTExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOyAKKyAgICA6OlJl
ZHJhd1dpbmRvdyhpbnNwZWN0ZWRXaW5kb3csIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRXX0FM
TENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dG1sVVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgp
LCBDRlNUUigiaW5zcGVjdG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gODQ2NDUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDE2ICs2NCw2IEBAIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBTdHJpbmcqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBXZWJJbnNw
ZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDg0NjQ1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksOSArNDksNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoV2Vi
Q29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZh
bHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJik7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAkocmV2aXNpb24gODQ2NDUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTY5LDYgKzcwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6YnJpbmdUbwogCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9z
ZVdpbmRvdygpCiB7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENs
b3NlKCk7CiB9CiAKQEAgLTc5LDE3ICs4MSwxNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpkaXNjb25uCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFj
aFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5hdHRhY2goKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0
YWNoV2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5zcGVj
dG9yKCktPmRldGFjaCgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpz
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KGhlaWdodCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJ
bXBsLmNwcAkocmV2aXNpb24gODQ2NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDcgKzU0Niw5
IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8KIHsKICAgICBBU1NF
UlQoIW1faXNQYWludGluZ1N1c3BlbmRlZCk7CiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3Qg
fHwgbV9sYXllclRyZWVIb3N0LT5wYXJ0aWNpcGF0ZXNJbkRpc3BsYXkoKSk7Ci0gICAgQVNTRVJU
KCFtX3dlYlBhZ2UtPnNpemUoKS5pc0VtcHR5KCkpOworCisgICAgaWYgKG1fd2ViUGFnZS0+c2l6
ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxk
IGJlIGJldHRlciBpZiB3ZSBjb3VsZCBhdm9pZCBwYWludGluZyBhbHRvZ2V0aGVyIHdoZW4gdGhl
cmUgaXMgYSBjdXN0b20gcmVwcmVzZW50YXRpb24uCiAgICAgaWYgKG1fd2ViUGFnZS0+bWFpbkZy
YW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDg0NjQ1
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGMKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVy
bFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYkluc3BlY3Rvcjo6YXR0
YWNoKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2goKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFj
aCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRB
dHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogLy8g
Q2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3co
KQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IuaAkocmV2aXNpb24gODQ2NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVS
TENoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGF0dGFjaCgpOworICAgIHZvaWQg
ZGV0YWNoKCk7CisKKyAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsK
KwogICAgIC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCiAgICAg
U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKIAo=
</data>
<flag name="review"
          id="83492"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90754</attachid>
            <date>2011-04-22 13:51:12 -0700</date>
            <delta_ts>2011-04-24 23:30:00 -0700</delta_ts>
            <desc>[PATCH] Win Fix v4</desc>
            <filename>inspector_docked_win.patch</filename>
            <type>text/plain</type>
            <size>19360</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDQtMjIgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpbmRvd3MgcGFydCBvZiAtIFdlYktpdDI6IFN1cHBv
cnQgZG9ja2VkIG1vZGUgZm9yIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NzM5MDA1PgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IGF0dGFjaGluZyBhbmQgZGV0YWNo
aW5nIG9mIHRoZSBXZWIgSW5zcGVjdG9yIG9uIFdpbmRvd3MsCisgICAgICAgIGFuZCBhbHNvIHN1
cHBvcnQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBo
ZWlnaHQKKyAgICAgICAgb2YgdGhlIGRvY2tlZCBpbnNwZWN0b3IuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHBhdGNoIGRvZXNuJ3QgcmVtZW1iZXIgd2hldGhlciB0aGUgdXNlciBwcmVmZXJzIGF0
dGFjaGVkIG9yIGRldGFjaGVkLCBhbmQKKyAgICAgICAgZG9lc24ndCByZW1lbWJlciB0aGUgdXNl
cidzIHByZWZlcnJlZCBkb2NrZWQgaGVpZ2h0LCBidXQgdGhhdCB3aWxsIGJlIGEgc2VwYXJhdGUK
KyAgICAgICAgYnVnLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKTog
U2V0IHRoZSBhdHRhY2hlZCBmbGFnIGFuZCBjYWxsIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTog
Q2FsbCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOiBTZXQgbV9pc1Zpc2libGUgYmVmb3JlIGNhbGxpbmcgcGxhdGZv
cm1DbG9zZS4gcGxhdGZvcm1DbG9zZQorICAgICAgICAgICAgY2FsbHMgZGV0YWNoIGlmIHRoZSBp
bnNwZWN0b3Igd2FzIGRvY2tlZCwgYW5kIGRldGFjaCBuZWVkcyB0byBrbm93IHdoZXRoZXIgb3Ig
bm90IHRoZSB3aW5kb3cgaXMKKyAgICAgICAgICAgIHZpc2libGUuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1lc3NhZ2VzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ2xp
ZW50KTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgcGFnZSBjbGllbnQuCisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5Ojp3aW5kb3dSZWNlaXZlZE1lc3NhZ2UpOiBSZWxheSBXTV9XSU5ET1dQT1ND
SEFOR0lORyBtZXNzYWdlcyBmcm9tIHRoZSBpbnNwZWN0ZWQKKyAgICAgICAgICAgIHdlYiB2aWV3
IHRvIHRoZSBXZWJJbnNwZWN0b3JQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQpOiBSZXNpemUgdGhlIGluc3Bl
Y3RlZCB3ZWIgdmlldyB0byBiZWhhdmUgd2VsbAorICAgICAgICAgICAgd2l0aCB0aGUgZG9ja2Vk
IGluc3BlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q2xvc2UpOiBJZiB3ZSBhcmUgYXR0YWNoZWQsIGRldGFjaCBiZWZvcmUgZGVzdHJveWluZy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKTogU2V0IHRo
ZSBpbnNwZWN0b3IncyBob3N0IHdpbmRvdyB0byBiZSB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3J3Mg
cGFyZW50CisgICAgICAgICAgICB3aW5kb3csIHNvIHRoZSBpbnNwZWN0ZWQgd2ViIHZpZXcgYW5k
IHRoZSBpbnNwZWN0b3IgYXJlIHNpYmxpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOiBTZXQgdGhlIGluc3BlY3RvcidzIGhvc3Qgd2luZG93
IHRvIGJlIHRoZSBzdGFuZGFsb25lIGluc3BlY3RvciB3aW5kb3cuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogU2l6
ZSB0aGUgdmlld3MuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3cpOiBDYWxsIFdlYkluc3BlY3Rvcjo6YXR0
YWNoLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VX
aW5kb3cpOiBBZGQgYSBjYWxsIHRvIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyIHRvIGRpc2Nvbm5l
Y3QgdGhlIGluc3BlY3RvciBmcm9udGVuZAorICAgICAgICAgICAgZnJvbSB0aGUgaW5zcGVjdG9y
IGJhY2tlbmQuIFdpdGhvdXQgdGhpcyBsaW5lLCB3aGVuIHdlIGNsb3NlIHRoZSBhdHRhY2hlZCBp
bnNwZWN0b3IsIGl0IHdvbid0IHJlLW9wZW4sIGJlY2F1c2UgdGhlCisgICAgICAgICAgICBpbnNw
ZWN0b3IgY29udHJvbGxlciBzdGlsbCB0aGlua3MgdGhlcmUgaXMgYSBmcm9udGVuZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdyk6IENh
bGwgV2ViSW5zcGVjdG9yOjpkZXRhY2guCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6IENhbGwgV2ViSW5zcGVjdG9y
OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OnNlbmRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk6IEFkZCBhbiBlYXJseSByZXR1cm4gaWYgdGhlIFdlYlBh
Z2VQcm94eSdzIHZpZXdTaXplIGlzIGVtcHR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmF0dGFj
aCk6IFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3Rvcjo6ZGV0YWNoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
cjo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6IFJlbW92ZSBzb21lIGRlYWQgY29kZS4KKwogMjAxMS0w
NC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzIsNiArMjcyLDkgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2VuZFVw
ZGF0ZUJhYwogICAgIGlmIChtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV93ZWJQYWdlUHJveHktPnZpZXdTaXplKCku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2lzV2FpdGluZ0ZvckRpZFVwZGF0
ZUJhY2tpbmdTdG9yZVN0YXRlID0gcmVzcG9uZEltbWVkaWF0ZWx5T3JOb3QgPT0gUmVzcG9uZElt
bWVkaWF0ZWx5OwogICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhOjpVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZShtX25leHRCYWNraW5nU3RvcmVT
dGF0ZUlELCByZXNwb25kSW1tZWRpYXRlbHlPck5vdCA9PSBSZXNwb25kSW1tZWRpYXRlbHksIG1f
c2l6ZSwgbV9zY3JvbGxPZmZzZXQpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOwogICAgIG1f
c2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNywxMiArMTA3LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIG1faXNBdHRhY2hlZCA9IHRydWU7CisKKyAgICBwbGF0Zm9ybUF0dGFjaCgpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisKKyAgICBwbGF0Zm9ybURldGFjaCgp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCit7CisgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCho
ZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKCkKQEAgLTE5MCw5ICsxOTksMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlk
TG9hZEluc3BlY3RvcgogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiB7Ci0g
ICAgcGxhdGZvcm1DbG9zZSgpOwotCiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKKworICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKKyAgICAgICAgLy8gRGV0YWNoIGhlcmUgc28gd2Ugb25seSBuZWVk
IHRvIGhhdmUgb25lIGNvZGUgcGF0aCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1
cCB0aGUgaW5zcGVjdG9yCisgICAgICAgIC8vIHN0YXRlLgorICAgICAgICBkZXRhY2goKTsKKyAg
ICB9CisKKyAgICBwbGF0Zm9ybUNsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmJyaW5nVG9Gcm9udCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTAgQEAg
T0JKQ19DTEFTUyBXS1ZpZXc7CiBPQkpDX0NMQVNTIFdlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0
ZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VMaXN0ZW5lci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJQYWdlR3JvdXA7CkBAIC01Miw3ICs1NiwxMSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlZpZXc7CiAjZW5kaWYKIAotY2xhc3MgV2ViSW5zcGVjdG9y
UHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkluc3BlY3RvclByb3h5IDogcHVi
bGljIEFQSU9iamVjdAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpX
aW5kb3dNZXNzYWdlTGlzdGVuZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBUeXBlIEFQSVR5cGUgPSBUeXBlSW5zcGVjdG9yOwogCkBAIC03Nyw2ICs4NSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0K
ICAgICB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CisgICAgdm9pZCBzZXRBdHRh
Y2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CiAKICAgICBib29sIGlzRGVidWdnaW5nSmF2YVNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OyB9CiAgICAgdm9p
ZCB0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7CkBAIC0xMDUsNiArMTE0LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKICAgICB2b2lkIHBsYXRmb3JtQnJpbmdUb0Zy
b250KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBwbGF0Zm9ybUF0dGFjaCgpOworICAgIHZvaWQgcGxhdGZvcm1EZXRhY2go
KTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwog
CiAgICAgLy8gSW1wbGVtZW50ZWQgdGhlIHBsYXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGZpbGUK
ICAgICBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0OwpAQCAtMTI3LDYgKzEzOSw5IEBA
IHByaXZhdGU6CiAgICAgTFJFU1VMVCBvbk1pbk1heEluZm9FdmVudChIV05EIGhXbmQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwogICAgIExSRVNVTFQgb25T
ZXRGb2N1c0V2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9v
bCYgaGFuZGxlZCk7CiAgICAgTFJFU1VMVCBvbkNsb3NlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1l
c3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKKworICAgIHZvaWQgb25XZWJW
aWV3V2luZG93UG9zQ2hhbmdpbmdFdmVudChXUEFSQU0sIExQQVJBTSk7CisgICAgdmlydHVhbCB2
b2lkIHdpbmRvd1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBB
UkFNKTsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dX
aWR0aCA9IDUwMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7
CiAgICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCiAgICAgSW5zcGVjdGVkVVJMQ2hh
bmdlZChXVEY6OlN0cmluZyB1cmxTdHJpbmcpCisgICAgCisgICAgQXR0YWNoKCkKKyAgICBEZXRh
Y2goKQorICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIH0KIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZp
c2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDkyLDYgKzQ5Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGlu
a0NsaWNrZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViTW91c2VFdmVudCYpOwogCisgICAgUGFn
ZUNsaWVudCogcGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUNsaWVudDsgfQorCiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMg
aXMgaW4gdmlvbGF0aW9uIG9mIHRoZSBubyBzeW5jaHJvbm91cyBtZXNzYWdlcyB0byB0aGUgV2Vi
IFByb2Nlc3MgcG9saWN5IGFuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiA4NDY2NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTE0Nyw2ICsxNDgsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0
ZQogICAgIFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwo
KSBjb25zdAogewogICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRl
bnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl0gcGF0aEZvclJlc291cmNlOkAiaW5zcGVjdG9y
IiBvZlR5cGU6QCJodG1sIiBpbkRpcmVjdG9yeTpAImluc3BlY3RvciJdOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAko
cmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVj
dG9yUHJveHlRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDIxIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRh
Y2goKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQ
YWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJ
KHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CkBAIC04Nyw2ICs4OCwxOSBAQCBMUkVTVUxUIENBTExCQUNLIFdlYkluc3BlY3RvclBy
b3h5OjpJbnNwCiAgICAgcmV0dXJuIDo6RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFy
YW0sIGxQYXJhbSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd1JlY2VpdmVk
TWVzc2FnZShIV05ELCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sK
KyAgICBBU1NFUlQobV9pc0F0dGFjaGVkKTsKKworICAgIHN3aXRjaCAobXNnKSB7CisgICAgY2Fz
ZSBXTV9XSU5ET1dQT1NDSEFOR0lORzoKKyAgICAgICAgb25XZWJWaWV3V2luZG93UG9zQ2hhbmdp
bmdFdmVudCh3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwogTFJFU1VMVCBXZWJJbnNwZWN0b3JQcm94eTo6d25k
UHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSkKIHsKICAgICBMUkVTVUxUIGxSZXN1bHQgPSAwOwpAQCAtMTUwLDYgKzE2NCwyNCBAQCBMUkVT
VUxUIFdlYkluc3BlY3RvclByb3h5OjpvbkNsb3NlRXZlbnQoCiAgICAgcmV0dXJuIDA7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nRXZlbnQo
V1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBXSU5ET1dQT1MqIHdpbmRvd1Bv
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0lORE9XUE9TKj4obFBhcmFtKTsKKworICAgIGlmICh3aW5k
b3dQb3MtPmZsYWdzICYgU1dQX05PU0laRSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSFdORCBp
bnNwZWN0b3JXaW5kb3cgPSBtX2luc3BlY3RvclZpZXctPndpbmRvdygpOworCisgICAgUkVDVCBp
bnNwZWN0b3JSZWN0OworICAgIDo6R2V0Q2xpZW50UmVjdChpbnNwZWN0b3JXaW5kb3csICZpbnNw
ZWN0b3JSZWN0KTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0b3JIZWlnaHQgPSBpbnNwZWN0b3JSZWN0
LmJvdHRvbSAtIGluc3BlY3RvclJlY3QudG9wOworCisgICAgd2luZG93UG9zLT5jeSAtPSBpbnNw
ZWN0b3JIZWlnaHQ7CisKKyAgICA6OlNldFdpbmRvd1BvcyhpbnNwZWN0b3JXaW5kb3csIDAsIHdp
bmRvd1Bvcy0+eCwgd2luZG93UG9zLT55ICsgd2luZG93UG9zLT5jeSwgd2luZG93UG9zLT5jeCwg
aW5zcGVjdG9ySGVpZ2h0LCBTV1BfTk9aT1JERVIpOworfQorCiBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VS
VCghbV9pbnNwZWN0b3JWaWV3KTsKQEAgLTE3NSw2ICsyMDcsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybU9wZW4oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNsb3NlKCkKIHsKKyAgICBBU1NFUlQoIW1faXNBdHRhY2hlZCk7CiAgICAgQVNTRVJUKCFtX2lz
VmlzaWJsZSB8fCBtX2luc3BlY3RvcldpbmRvdyk7CiAgICAgQVNTRVJUKCFtX2lzVmlzaWJsZSB8
fCBtX2luc3BlY3RvclZpZXcpOwogCkBAIC0yMDUsNiArMjM4LDYyIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGUKICAgICA6OlNldFdpbmRvd1RleHRXKG1faW5zcGVj
dG9yV2luZG93LCB0aXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKIH0KIAor
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQoreworICAgIEhXTkQgd2Vi
Vmlld1dpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRpdmVXaW5kb3coKTsKKyAgICBI
V05EIHBhcmVudFdpbmRvdyA9IDo6R2V0UGFyZW50KHdlYlZpZXdXaW5kb3cpOworCisgICAgV2lu
ZG93TWVzc2FnZUJyb2FkY2FzdGVyOjphZGRMaXN0ZW5lcih3ZWJWaWV3V2luZG93LCB0aGlzKTsK
KyAgICBtX2luc3BlY3RvclZpZXctPnNldFBhcmVudFdpbmRvdyhwYXJlbnRXaW5kb3cpOworICAg
IDo6U2hvd1dpbmRvdyhtX2luc3BlY3RvcldpbmRvdywgU1dfSElERSk7CisKKyAgICA6OlNlbmRN
ZXNzYWdlKHBhcmVudFdpbmRvdywgV01fU0laRSwgMCwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKK3sKKyAgICBIV05EIHdlYlZpZXdXaW5kb3cgPSBt
X3BhZ2UtPnBhZ2VDbGllbnQoKS0+bmF0aXZlV2luZG93KCk7CisgICAgV2luZG93TWVzc2FnZUJy
b2FkY2FzdGVyOjpyZW1vdmVMaXN0ZW5lcih3ZWJWaWV3V2luZG93LCB0aGlzKTsKKworICAgIG1f
aW5zcGVjdG9yVmlldy0+c2V0UGFyZW50V2luZG93KG1faW5zcGVjdG9yV2luZG93KTsKKworICAg
IGlmIChtX2lzVmlzaWJsZSkKKyAgICAgICAgOjpTaG93V2luZG93KG1faW5zcGVjdG9yV2luZG93
LCBTV19TSE9XKTsKKworICAgIC8vIFNlbmQgdGhlIGRldGFjaGVkIGluc3BlY3RvciB3aW5kb3cg
YW5kIHRoZSBXZWJWaWV3J3MgcGFyZW50IHdpbmRvdyBXTV9TSVpFIG1lc3NhZ2VzCisgICAgLy8g
dG8gaGF2ZSB0aGVtIHJlLWxheW91dCBjb3JyZWN0bHkuCisgICAgOjpTZW5kTWVzc2FnZShtX2lu
c3BlY3RvcldpbmRvdywgV01fU0laRSwgMCwgMCk7CisgICAgOjpTZW5kTWVzc2FnZSg6OkdldFBh
cmVudCh3ZWJWaWV3V2luZG93KSwgV01fU0laRSwgMCwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIGlmICghbV9pc0F0dGFjaGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBIV05E
IGluc3BlY3RlZFdpbmRvdyA9IG1fcGFnZS0+cGFnZUNsaWVudCgpLT5uYXRpdmVXaW5kb3coKTsK
KyAgICBIV05EIHBhcmVudFdpbmRvdyA9IDo6R2V0UGFyZW50KGluc3BlY3RlZFdpbmRvdyk7CisK
KyAgICBSRUNUIHBhcmVudFdpbmRvd1JlY3Q7CisgICAgOjpHZXRDbGllbnRSZWN0KHBhcmVudFdp
bmRvdywgJnBhcmVudFdpbmRvd1JlY3QpOworCisgICAgUkVDVCBpbnNwZWN0ZWRSZWN0OworICAg
IDo6R2V0Q2xpZW50UmVjdChpbnNwZWN0ZWRXaW5kb3csICZpbnNwZWN0ZWRSZWN0KTsKKworICAg
IGludCB0b3RhbEhlaWdodCA9IHBhcmVudFdpbmRvd1JlY3QuYm90dG9tIC0gcGFyZW50V2luZG93
UmVjdC50b3A7CisgICAgaW50IHdlYlZpZXdXaWR0aCA9IGluc3BlY3RlZFJlY3QucmlnaHQgLSBp
bnNwZWN0ZWRSZWN0LmxlZnQ7CisKKyAgICBIV05EIGluc3BlY3RvcldpbmRvdyA9IG1faW5zcGVj
dG9yVmlldy0+d2luZG93KCk7CisgICAgOjpTZXRXaW5kb3dQb3MoaW5zcGVjdG9yV2luZG93LCAw
LCAwLCB0b3RhbEhlaWdodCAtIGhlaWdodCwgd2ViVmlld1dpZHRoLCBoZWlnaHQsIFNXUF9OT1pP
UkRFUik7CisKKyAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3IGhl
aWdodCB0byB0aGUgdG90YWxIZWlnaHQsIGJlY2F1c2UgdGhlIGhlaWdodCBhZGp1c3RtZW50Cisg
ICAgLy8gb2YgdGhlIGluc3BlY3RlZCBXZWJWaWV3IGhhcHBlbnMgaW4gb25XaW5kb3dQb3NDaGFu
Z2luZywgbm90IGhlcmUuCisgICAgOjpTZXRXaW5kb3dQb3MoaW5zcGVjdGVkV2luZG93LCAwLCAw
LCAwLCB3ZWJWaWV3V2lkdGgsIHRvdGFsSGVpZ2h0LCBTV1BfTk9aT1JERVIpOworCisgICAgOjpS
ZWRyYXdXaW5kb3coaW5zcGVjdG9yV2luZG93LCAwLCAwLCBSRFdfSU5WQUxJREFURSB8IFJEV19B
TExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOyAKKyAgICA6OlJlZHJhd1dpbmRvdyhpbnNwZWN0
ZWRXaW5kb3csIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQ
REFURU5PVyk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVS
TCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0Ys
IENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVjdG9y
IiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDE2ICs2NCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGln
aGxpZ2h0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9
IG1fcGFnZS0+aW5zcGVjdG9yKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJl
dmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksNiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSopOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxh
dGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKLQogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTY5LDYgKzcwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUbwog
CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiB7CisgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9u
dGVuZCgpOwogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKQEAgLTc5
LDE3ICs4MSwxNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uCiAK
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2goKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRldGFjaCgpOwog
fQogCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hl
aWdodCh1bnNpZ25lZCkKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gODQ2NjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3I6Omluc3Bl
Y3RlZFVSTENoYW5nZWQoYwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJs
U3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yOjphdHRh
Y2goKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNo
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvdygp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgYXR0YWNoKCk7CisgICAgdm9pZCBk
ZXRhY2goKTsKKworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwor
CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUKICAgICBT
dHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwogCg==
</data>
<flag name="review"
          id="83517"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91392</attachid>
            <date>2011-04-27 17:48:42 -0700</date>
            <delta_ts>2011-04-28 15:03:45 -0700</delta_ts>
            <desc>[PATCH] Mac Fix v1</desc>
            <filename>docked_inspector_mac.patch</filename>
            <type>text/plain</type>
            <size>17450</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTI4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDQtMjcgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hYyBzaWRlIG9mOiBXZWJLaXQyOiBTdXBwb3J0IGRv
Y2tlZCBtb2RlIGZvciBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01OTEzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODczOTAw
NT4KKworICAgICAgICBJbXBsZW1lbnQgZG9ja2luZyBvZiB0aGUgV2ViIEluc3BlY3RvciBvbiBN
YWMuIFRoaXMgbWF0Y2hlcyB0aGUgV2luZG93cyAoV0sxIGFuZCBXSzIpIGNsb3NlbHksCisgICAg
ICAgIHdoZXJlIHRoZSBpbnNwZWN0b3IgYW5kIHRoZSBpbnNwZWN0ZWQgdmlldyBhcmUgc2libGlu
Z3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvbWFjL1dLSW5zcGVjdG9yTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjp3a1ZpZXcpOiBSZXR1cm5zIHRoZSBXS1ZpZXcuCisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aDogVGhlIGluc3BlY3RlZCB2aWV3IGlzIG5vdyBhIFdlYkluc3BlY3RvcldLVmlldywgc28gd2Ug
Y2FuIG92ZXJyaWRlIHRhZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IEFk
ZGVkIGEgZ2V0dGVyIGZvciB0aGUgV0tWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yUHJveHlPYmpD
QWRhcHRlciBpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6XSk6IENhbGxzIHRocm91Z2ggdG8g
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZS4KKyAgICAgICAg
KC1bV2ViSW5zcGVjdG9yV0tWaWV3IHRhZ10pOiBSZXR1cm5zIGEgY29uc3RhbnQgZGVmaW5lZCBp
biBXS0luc3BlY3Rvck1hYy5oLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKTogQ3JlYXRlIGEgV2ViSW5zcGVjdG9yV0tWaWV3
IGluc3RlYWQgb2YgYSBXS1ZpZXcuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNsb3NlKTogUmVtb3ZlZCBhIEZJWE1FIHRoYXQgaXNuJ3QgbmVlZGVkIGFueW1v
cmUgKHdlIGFsd2F5cyBkZXRhY2ggYmVmb3JlIGNsb3NpbmcpLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKTogUGxhY2Ugb3Vy
IGluc3BlY3RvciBhbmQgdGhlIGluc3BlY3RlZCB2aWV3IG5leHQgdG8gZWFjaCBvdGhlciwgYXNz
dW1pbmcgdGhlCisgICAgICAgICAgICBib3R0b20gb2YgdGhlIGluc3BlY3RvciBpcyBhdCB0aGUg
WSBvcmlnaW4uCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaCk6IExpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgaW5zcGVjdGVkIHZpZXcncyBmcmFtZSwg
YW5kIG1vdmUgdGhlIGluc3BlY3RvclZpZXcgZnJvbSB0aGUKKyAgICAgICAgICAgIGRldGFjaGVk
IGluc3BlY3RvciB3aW5kb3cgdG8gdGhlIHN1cGVydmlldyBvZiB0aGUgaW5zcGVjdGVkIHZpZXcg
KHRvIG1ha2UgdGhlIGluc3BlY3RvciBhbmQgaW5zcGVjdGVkIHZpZXcgc2libGluZ3MpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOiBTdG9wIGxp
c3RlbmluZyBmb3IgY2hhbmdlcyB0byB0aGUgaW5zcGVjdGVkIHZpZXcncyBmcmFtZSwgYW5kIG1v
dmUgdGhlIGluc3BlY3RvclZpZXcKKyAgICAgICAgICAgIGJhY2sgdG8gdGhlIGRldGFjaGVkIGlu
c3BlY3RvciB3aW5kb3cuIFdlIGFsc28gcmVzaXplIHRoZSBpbnNwZWN0ZWQgdmlldyB0byB0YWtl
IHVwIHRoZSBzcGFjZSB0aGUgaW5zcGVjdG9yIHRvb2sgdXAgYmVmb3JlCisgICAgICAgICAgICAo
YXNzdW1pbmcgdGhlIGJvdHRvbSBvZiB0aGUgaW5zcGVjdG9yIHdhcyBhdCB0aGUgWSBvcmlnaW4p
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCk6IFJlc2l6ZSB0aGUgaW5zcGVjdG9yJ3MgdmlldywgYW5kIGNhbGwgaW5z
cGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlICh3aGljaAorICAgICAgICAgICAgc3luY3MgdGhlIGlu
c3BlY3RvciBhbmQgdGhlIGluc3BlY3RlZCB2aWV3KSwgYW5kIGNhbGwgc2V0TmVlZHNEaXNwbGF5
IG9uIGJvdGggdmlld3MuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2tWaWV3KToKKyAgICAgICAgCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgYSBuZXcgZmls
ZS4KKwogMjAxMS0wNC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgJKHJldmlzaW9uIDg1MDU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTQgQEAKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZiBQTEFU
Rk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBXS1ZpZXc7CisjZWxzZQorY2xhc3Mg
V0tWaWV3OworI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEN1cnNvcjsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CkBAIC0xNDIsNiArMTUwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykgPSAwOworICAgIAorICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXco
KSBjb25zdCA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxi
YXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgJKHJldmlzaW9uIDg1MDU4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDggKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgTlNX
aW5kb3c7Ci1PQkpDX0NMQVNTIFdLVmlldzsKIE9CSkNfQ0xBU1MgV2ViSW5zcGVjdG9yUHJveHlP
YmpDQWRhcHRlcjsKK09CSkNfQ0xBU1MgV2ViSW5zcGVjdG9yV0tWaWV3OwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShXSU4pCkBAIC03OSw2ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogICAgIHZvaWQgc2hvdygpOwog
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBpbnNw
ZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzaG93Q29uc29s
ZSgpOwogCkBAIC0xNTksNyArMTYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQcm9maWxp
bmdQYWdlOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxXS1ZpZXc+IG1faW5z
cGVjdG9yVmlldzsKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV0tWaWV3PiBtX2luc3BlY3Rv
clZpZXc7CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX2luc3BlY3RvcldpbmRvdzsKICAgICBS
ZXRhaW5QdHI8V2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcj4gbV9pbnNwZWN0b3JQcm94eU9i
akNBZGFwdGVyOwogI2VsaWYgUExBVEZPUk0oV0lOKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODUwNTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKKyNp
ZiBQTEFURk9STShNQUMpCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBXS1ZpZXc7CisjZWxzZQor
Y2xhc3MgV0tWaWV3OworI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CkBAIC0yNzEsNiArMjc5LDggQEAgcHVibGljOgog
ICAgIENHQ29udGV4dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhpY3NDb250ZXh0KCk7CiAgICAg
Ym9vbCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYpOwogICAgIGJvb2wgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBX
ZWJNb3VzZUV2ZW50Jik7CisgICAgCisgICAgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdDsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRpZENoYW5nZUNvbXBvc2l0aW9uU2VsZWN0
aW9uKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0lu
c3BlY3Rvck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tJbnNwZWN0b3JNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tJbnNwZWN0b3JNYWMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tJbnNwZWN0b3JNYWNfaAorI2RlZmluZSBX
S0luc3BlY3Rvck1hY19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworY29uc3QgTlNJbnRlZ2VyIFdLSW5zcGVjdG9yVmlld1RhZyA9IDEwMDA7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS0luc3BlY3Rvck1hY19oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmgJKHJldmlzaW9uIDg1MDU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAK
ICAgICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgCisg
ICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2tWaWV3OyB9CiAK
ICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXRP
YmpDPiBtX3VuZG9UYXJnZXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHJldmlzaW9uIDg1MDU4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbXBv
cnQgIldLQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tJbnNwZWN0b3JNYWMuaCIKICNpbXBvcnQgIldL
Vmlldy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKQEAgLTczLDYgKzc0LDIzIEBAIC0gKHZvaWQpd2luZG93V2lsbENsb3NlOihOU05vdGlm
aWNhdGlvbiAKICAgICBfaW5zcGVjdG9yUHJveHktPmNsb3NlKCk7CiB9CiAKKy0gKHZvaWQpaW5z
cGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgor
eworICAgIF9pbnNwZWN0b3JQcm94eS0+aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKCk7Cit9
CisKK0BlbmQKKworQGludGVyZmFjZSBXZWJJbnNwZWN0b3JXS1ZpZXcgOiBXS1ZpZXcKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvcldLVmlldworCistIChOU0ludGVnZXIpdGFn
Cit7CisgICAgcmV0dXJuIFdLSW5zcGVjdG9yVmlld1RhZzsKK30KKwogQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTgyLDcgKzEwMCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3IKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5zcGVj
dG9yVmlldyk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcuYWRvcHROUyhbW1dLVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlh
bFdpbmRvd0hlaWdodCkgY29udGV4dFJlZjp0b0FQSShwYWdlKCktPnByb2Nlc3MoKS0+Y29udGV4
dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpXSk7CisgICAgbV9p
bnNwZWN0b3JWaWV3LmFkb3B0TlMoW1tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dI
ZWlnaHQpIGNvbnRleHRSZWY6dG9BUEkocGFnZSgpLT5wcm9jZXNzKCktPmNvbnRleHQoKSkgcGFn
ZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKV0pOwogICAgIEFTU0VSVChtX2lu
c3BlY3RvclZpZXcpOwogCiAgICAgW21faW5zcGVjdG9yVmlldy5nZXQoKSBzZXREcmF3c0JhY2tn
cm91bmQ6Tk9dOwpAQCAtMTI1LDggKzE0Myw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtT3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2xvc2UoKQog
ewotICAgIC8vIEZJWE1FOiBzdXBwb3J0IGNsb3NpbmcgaW4gZG9ja2VkIG1vZGUgaGVyZS4KLQog
ICAgIFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFttX2lu
c3BlY3RvcldpbmRvdy5nZXQoKSBvcmRlck91dDpuaWxdOwogCkBAIC0xNDgsMTkgKzE2NCw3NSBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlCiAgICAgW21faW5zcGVj
dG9yV2luZG93LmdldCgpIHNldFRpdGxlOnRpdGxlXTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIW1faXNBdHRh
Y2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9w
YWdlLT53a1ZpZXcoKTsKKyAgICBOU1JlY3QgaW5zcGVjdGVkVmlld0ZyYW1lID0gW2luc3BlY3Rl
ZFZpZXcgZnJhbWVdOworCisgICAgQ0dGbG9hdCBpbnNwZWN0ZWRMZWZ0ID0gTlNNaW5YKGluc3Bl
Y3RlZFZpZXdGcmFtZSk7CisgICAgQ0dGbG9hdCBpbnNwZWN0ZWRUb3AgPSBOU01heFkoaW5zcGVj
dGVkVmlld0ZyYW1lKTsKKyAgICBDR0Zsb2F0IGluc3BlY3RlZFdpZHRoID0gTlNXaWR0aChpbnNw
ZWN0ZWRWaWV3RnJhbWUpOworICAgIENHRmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gTlNIZWlnaHQo
W21faW5zcGVjdG9yVmlldy5nZXQoKSBmcmFtZV0pOworCisgICAgW21faW5zcGVjdG9yVmlldy5n
ZXQoKSBzZXRGcmFtZTpOU01ha2VSZWN0KGluc3BlY3RlZExlZnQsIDAuMCwgaW5zcGVjdGVkV2lk
dGgsIGluc3BlY3RvckhlaWdodCldOworICAgIFtpbnNwZWN0ZWRWaWV3IHNldEZyYW1lOk5TTWFr
ZVJlY3QoaW5zcGVjdGVkTGVmdCwgaW5zcGVjdG9ySGVpZ2h0LCBpbnNwZWN0ZWRXaWR0aCwgaW5z
cGVjdGVkVG9wIC0gaW5zcGVjdG9ySGVpZ2h0KV07Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQXR0YWNoKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFdLVmll
dyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX2luc3BlY3RvclByb3h5T2JqQ0Fk
YXB0ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5n
ZTopIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Omluc3BlY3Rl
ZFZpZXddOworCisgICAgW21faW5zcGVjdG9yVmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3
XTsKKworICAgIFtbaW5zcGVjdGVkVmlldyBzdXBlcnZpZXddIGFkZFN1YnZpZXc6bV9pbnNwZWN0
b3JWaWV3LmdldCgpIHBvc2l0aW9uZWQ6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOmluc3BlY3Rl
ZFZpZXddOworCisgICAgW21faW5zcGVjdG9yV2luZG93LmdldCgpIG9yZGVyT3V0Om5pbF07CisK
KyAgICBpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
V0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1faW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlci5nZXQoKSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9u
IG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKKworICAgIFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CisKKyAgICAvLyBNb3ZlIHRoZSBpbnNwZWN0b3IgdmlldyBiYWNr
IGludG8gdGhlIGluc3BlY3RvciB3aW5kb3cuCisgICAgTlNWaWV3ICppbnNwZWN0b3JXaW5kb3dD
b250ZW50VmlldyA9IFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb250ZW50Vmlld107CisgICAg
W21faW5zcGVjdG9yVmlldy5nZXQoKSBzZXRGcmFtZTpbaW5zcGVjdG9yV2luZG93Q29udGVudFZp
ZXcgYm91bmRzXV07CisgICAgW2luc3BlY3RvcldpbmRvd0NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
bV9pbnNwZWN0b3JWaWV3LmdldCgpXTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHNpemUg
dGhlIGluc3BlY3RlZCB2aWV3J3MgZnJhbWUgYWZ0ZXIgZGV0YWNoaW5nIHNvIHRoYXQgaXQgdGFr
ZXMgdXAgdGhlIHNwYWNlIHRoYXQgdGhlCisgICAgLy8gYXR0YWNoZWQgaW5zcGVjdG9yIHVzZWQg
dG8uIFRoaXMgYXNzdW1lcyB0aGUgcHJldmlvdXMgaGVpZ2h0IHdhcyB0aGUgWSBvcmlnaW4uCisg
ICAgTlNSZWN0IGluc3BlY3RlZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOworICAg
IGluc3BlY3RlZFZpZXdSZWN0LnNpemUuaGVpZ2h0ICs9IE5TTWluWShpbnNwZWN0ZWRWaWV3UmVj
dCk7CisgICAgaW5zcGVjdGVkVmlld1JlY3Qub3JpZ2luLnkgPSAwLjA7CisgICAgW2luc3BlY3Rl
ZFZpZXcgc2V0RnJhbWU6aW5zcGVjdGVkVmlld1JlY3RdOworCisgICAgaWYgKG1faXNWaXNpYmxl
KQorICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cuZ2V0KCkgbWFrZUtleUFuZE9yZGVyRnJvbnQ6
bmlsXTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCkKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaWYgKCFtX2lzQXR0YWNoZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdL
VmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgTlNSZWN0IGluc3Bl
Y3RlZFZpZXdGcmFtZSA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKKworICAgIC8vIFRoZSBpbnNw
ZWN0b3IgdmlldyBzaGFyZXMgdGhlIHdpZHRoIGFuZCB0aGUgbGVmdCBzdGFydGluZyBwb2ludCBv
ZiB0aGUgaW5zcGVjdGVkIHZpZXcuCisgICAgW21faW5zcGVjdG9yVmlldy5nZXQoKSBzZXRGcmFt
ZTpOU01ha2VSZWN0KE5TTWluWChpbnNwZWN0ZWRWaWV3RnJhbWUpLCAwLjAsIE5TV2lkdGgoaW5z
cGVjdGVkVmlld0ZyYW1lKSwgaGVpZ2h0KV07CisKKyAgICBpbnNwZWN0ZWRWaWV3RnJhbWVEaWRD
aGFuZ2UoKTsKKworICAgIFttX2luc3BlY3RvclZpZXcuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5OllF
U107CisgICAgW2luc3BlY3RlZFZpZXcgc2V0TmVlZHNEaXNwbGF5OllFU107CiB9CiAKIFN0cmlu
ZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNp
b24gODUwNTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE2LDQgKzMxNiw5IEBAIGJvb2wgV2ViUGFnZVByb3h5
OjphY2NlcHRzRmlyc3RNb3VzZShpbnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitXS1ZpZXcq
IFdlYlBhZ2VQcm94eTo6d2tWaWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlQ2xpZW50
LT53a1ZpZXcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4
NTA1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzYzLDYgKzM2Myw3IEBACiAJCTY1OUM1NTFFMTMwMDA2NDEw
MDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkE4MjkxMzAwMDE2
NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi87
IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk2RDhBOTFBNjExRjBFRkQxMDBERDAxRkUgLyog
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2Vi
UHJvY2Vzcy5zYiAqLzsgfTsKKwkJNkVFODQ5QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVj
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTc2MkI3NDhEMTIwQkM3NUMwMDgx
OTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVy
ZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2IC8qIEluZm9QbGlzdC5zdHJpbmdzIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODlDMTY2NkZF
ODQxMTU4QzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi87IH07CiAJCThEQzJFRjU3MDQ4
NkE2OTQwMDk4QjIxNiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMDU4QzdCMUZFQTU1ODVFMTFDQTJDQkIgLyogQ29j
b2EuZnJhbWV3b3JrICovOyB9OwpAQCAtMTI2MSw2ICsxMjYyLDcgQEAKIAkJNjVCODZGMTcxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZEOEE5MUE1MTFGMEVGRDEwMEREMDFG
RSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYjsgcGF0aCA9IFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nl
c3Muc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4
RDQ4MSAvKiBXS0luc3BlY3Rvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS0luc3BlY3Rvck1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21v
b3RoaW5nTGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNtb290
aGluZ0xldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0MTIwQkJB
MkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4REMyRUY1QTA0ODZBNjk0MDA5OEIyMTYgLyogSW5mby5wbGlzdCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIzNzcsNiArMjM3OSwxNCBAQAogCQkJbmFtZSA9IEljb25EYXRhYmFzZTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4
RDQ4MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3Rvck1hYy5oICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlC
QzAzMkQ1QzEwRjQzNkQ1MDA1OEMxNUEgLyogV2ViUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNjI4LDYgKzI2MzgsNyBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTIzQ0YxODEzM0QyNUU2MDA1NkY4MDAg
LyogY2cgKi8sCisJCQkJNkVFODQ5QzQxMzY4RDkwNDAwMzhENDgxIC8qIG1hYyAqLywKIAkJCQlC
Q0I2MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyogV2ViS2l0Mi5oICovLAogCQkJCUJDRERCMzJDMTI0
RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAqLywKIAkJCQk1MTdBMzNCMzEzMEIzMDhDMDBG
ODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8sCkBAIC0zNjg0LDYgKzM2
OTUsNyBAQAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1l
bnRDb2RlcnNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJB
OCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JNYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9Owo=
</data>
<flag name="review"
          id="84235"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>