<?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>91661</bug_id>
          
          <creation_ts>2012-07-18 13:08:14 -0700</creation_ts>
          <short_desc>[Chromium] Support scrolling and zooming to focused input elements</short_desc>
          <delta_ts>2012-07-24 17:27:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91801</dependson>
          <blocked>91648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Beverloo">peter</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>leandrogracia</cc>
    
    <cc>olilan</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yusufo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672673</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-07-18 13:08:14 -0700</bug_when>
    <thetext>When an input element gets focused, the element should be positioned in a convenient position and size on the user&apos;s screen for editing.

Downstream CL is:
https://gerrit-int.chromium.org/#change,15078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673820</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-19 12:50:49 -0700</bug_when>
    <thetext>Assigned for investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674007</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-19 15:55:59 -0700</bug_when>
    <thetext>Looks like this covers these functions from WebView.h:

virtual void undoScrollFocusedNode() = 0;
virtual void zoomToFindInPageRect(const WebRect&amp;) = 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674012</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-19 15:59:06 -0700</bug_when>
    <thetext>This is going to require a bit of cleanup downstream first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674648</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 09:41:54 -0700</bug_when>
    <thetext>zoomToFindInPageRect is in Bug 91801.  Looking at undoScrollFocusedNode now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674652</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 09:45:21 -0700</bug_when>
    <thetext>undoScrollFocusedNode depends on 757bb01d84e3817ec56f1d2945744245d1a43962 to make any sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675005</commentid>
    <comment_count>6</comment_count>
      <attachid>153608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 15:04:16 -0700</bug_when>
    <thetext>Created attachment 153608
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675008</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 15:05:56 -0700</bug_when>
    <thetext>This patch as a simplified version of scrollFocusedNodeIntoRect.  We can upstream the full version in a future patch.

@aelias: Would you be willing to take a look at this patch?  In particular, I&apos;m not super confident in my simplification of scrollFocusedNodeIntoRect.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675020</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-20 15:27:26 -0700</bug_when>
    <thetext>Sorry, why do we want to upstream a simplified version?  Every line in there is there for a reason.  If it&apos;s blocked on some dependencies, we should upstream those dependencies first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675021</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 15:32:03 -0700</bug_when>
    <thetext>I&apos;m just trying to break things down in to smaller pieces.  That way we can iterate towards success instead of having to do things in large chunks.

In this particular case, the milestone we&apos;re aiming for is API compatibility.  In some sense, we could upstream stub implementations of these functions, but this patch takes a slightly bigger chunk than that.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675023</commentid>
    <comment_count>10</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-20 15:36:31 -0700</bug_when>
    <thetext>I understand API compatibility is a useful goal.  In that case, I would actually prefer a pure stub implementation.  Then there is no expectation that it works at all, and it&apos;s not confusing during merges.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675041</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:06:29 -0700</bug_when>
    <thetext>Ok.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675045</commentid>
    <comment_count>12</comment_count>
      <attachid>153616</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:09:18 -0700</bug_when>
    <thetext>Created attachment 153616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675047</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:10:36 -0700</bug_when>
    <thetext>Note: The implementation of undoScrollFocusedNode in this patch is complete.  It just doesn&apos;t do much without the changes to scrollFocusedNodeIntoRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675051</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 16:11:39 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675054</commentid>
    <comment_count>15</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-20 16:13:55 -0700</bug_when>
    <thetext>LGTM, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675062</commentid>
    <comment_count>16</comment_count>
      <attachid>153616</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-20 16:25:23 -0700</bug_when>
    <thetext>Comment on attachment 153616
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:201
&gt; +static const int minReadableCaretHeight = 18;

what is this line for?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2464
&gt; +void WebViewImpl::undoScrollFocusedNode()

I wish we had a term that embodied &quot;scrolling and scaling&quot; the viewport to
bring an element into view.  Maybe we could just refer to restoring the
viewport or something like that.  It might be easier to think about what
the transition into the scrolled and scaled state is called.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:815
&gt; +    WebPoint m_undoScrollFocusedNodeScrollOffset;

how do these fields get set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675069</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:36:31 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 153616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153616&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:201
&gt; &gt; +static const int minReadableCaretHeight = 18;
&gt; 
&gt; what is this line for?

A previous iteration of the patch.  Removed.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2464
&gt; &gt; +void WebViewImpl::undoScrollFocusedNode()
&gt; 
&gt; I wish we had a term that embodied &quot;scrolling and scaling&quot; the viewport to
&gt; bring an element into view.  Maybe we could just refer to restoring the
&gt; viewport or something like that.  It might be easier to think about what
&gt; the transition into the scrolled and scaled state is called.

I&apos;m open to naming suggestions.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:815
&gt; &gt; +    WebPoint m_undoScrollFocusedNodeScrollOffset;
&gt; 
&gt; how do these fields get set?

They get set by the version of scrollFocusedNodeIntoRect on the chromium-android branch that zooms in on the focused node.  An earlier version of this patch contained a simplified version of this function that set these variables but aelias asked that we not upstream a simplified version of that function.

Another alternative is to upstream all the changes to scrollFocusedNodeIntoRect in this patch.  The changes are just a bit hairy.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675070</commentid>
    <comment_count>18</comment_count>
      <attachid>153618</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:37:12 -0700</bug_when>
    <thetext>Created attachment 153618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675086</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-20 16:54:12 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; They get set by the version of scrollFocusedNodeIntoRect on the chromium-android branch that zooms in on the focused node.  An earlier version of this patch contained a simplified version of this function that set these variables but aelias asked that we not upstream a simplified version of that function.

I see, so we could go with:

   scrollFocusedNodeIntoRect
   undoScrollFocusedNodeIntoRect

The two functions would then be very clearly paired.

Adding &quot;scale&quot;:

   scrollAndScaleFocusedNodeIntoRect
   undoScrollAndScaleFocusedNodeIntoRect

More of a mouthful:

   scrollAndScaleViewportToBringFocusedNodeIntoRect
   undoScrollAndScaleShootMeNow

Other ideas:

   adjustViewportTo{Highlight,Feature}FocusedNode
   restoreViewport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675091</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 16:58:12 -0700</bug_when>
    <thetext>&gt; I see, so we could go with:
&gt; 
&gt;    scrollFocusedNodeIntoRect
&gt;    undoScrollFocusedNodeIntoRect
&gt; 
&gt; The two functions would then be very clearly paired.

Yes.  It&apos;s a bit unclear from those names what happens if the user scrolls/zooms in between.  Perhaps we should make the embedder manage the state explicitly?

pushScrollAndScaleState();
scrollFocusedNodeIntoRect(...);
...
popScrollAndScaleState();

&gt;    adjustViewportTo{Highlight,Feature}FocusedNode
&gt;    restoreViewport

Highlight isn&apos;t the best term to use because there&apos;s another feature that draws a highlight around nodes (e.g., as in Bug 84936).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675097</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 17:05:25 -0700</bug_when>
    <thetext>It occurs to me that push/pop could leak, maybe we should have a save/restore interface that only keeps one history entry:

saveScrollAndScaleState();
scrollFocusedNodeIntoRect(...);
...
restoreScrollAndScaleState();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675102</commentid>
    <comment_count>22</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-20 17:15:56 -0700</bug_when>
    <thetext>The use case for the undo is for when a user accidentally taps a form field, then presses the hardware back button to dismiss the on-screen-keyboard, we wanted to also return to the previous page scale level.  I think save/restore makes a lot of sense as we don&apos;t require a stack.

The term that we used in the past in Android to refer to a page scale action is &quot;magnify&quot;.  Essentially a synonym for &quot;zoom&quot; but not as overloaded :).  I don&apos;t know if it&apos;s clear enough in a codebase that doesn&apos;t commonly use the word, though.  &quot;scrollAndScale&quot; might be the best option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675436</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-22 21:59:36 -0700</bug_when>
    <thetext>save/restoreScrollAndScaleState SGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675438</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-22 22:02:07 -0700</bug_when>
    <thetext>may as well also be verbose with: scrollAndScaleFocusedNodeIntoRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675744</commentid>
    <comment_count>25</comment_count>
      <attachid>153618</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 09:00:45 -0700</bug_when>
    <thetext>Comment on attachment 153618
Patch

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675975</commentid>
    <comment_count>26</comment_count>
      <attachid>153857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 13:53:45 -0700</bug_when>
    <thetext>Created attachment 153857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675976</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 13:54:03 -0700</bug_when>
    <thetext>Any advice on writing a test is appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676035</commentid>
    <comment_count>28</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-23 14:54:42 -0700</bug_when>
    <thetext>There&apos;s helpers for creating WebViewImpl inside the WebFrameTest.cpp, that should work well to test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676039</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 14:55:47 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; There&apos;s helpers for creating WebViewImpl inside the WebFrameTest.cpp, that should work well to test this.

Creating the WebViewImpl isn&apos;t the issue.  It&apos;s the fact that startPageScaleAnimation is asynchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676088</commentid>
    <comment_count>30</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-23 15:37:18 -0700</bug_when>
    <thetext>In the downstream version of startPageScaleAnimation(), the method is synchronous   if durationSec == 0.  One option would be to upstream that and have animateScrollFocusedNodeSec parametrizable by test.  This approach could also be handy for adding more tests to double-tap zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676101</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 15:44:23 -0700</bug_when>
    <thetext>Ok.  I&apos;m happy to up the priority of upstreaming that change and to write a test for this patch once that lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676108</commentid>
    <comment_count>32</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-23 15:47:58 -0700</bug_when>
    <thetext>Yusuf is working on it in https://bugs.webkit.org/show_bug.cgi?id=90316 .  He told me he should be have time to restart work on it within a week or two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676388</commentid>
    <comment_count>33</comment_count>
      <attachid>153857</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-23 22:12:52 -0700</bug_when>
    <thetext>Comment on attachment 153857
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:201
&gt; +static const double scrollFocusedNodeAnimationDurationInSeconds = 0.2;

nit: since this is used with restoreScrollAndScaleState, it may be used in cases
that don&apos;t involve the focused node.  maybe call it scrollAndScaleAnimationDurationInSeconds?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2730
&gt; +#if ENABLE(GESTURE_EVENTS)

nit: not sure why this is protected by GESTURE_EVENTS feature guard, but that&apos;s ok.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2743
&gt; +    m_savedScrollOffset = WebSize();

... = IntSize();

&gt; Source/WebKit/chromium/src/WebViewImpl.h:724
&gt; +    WebSize m_savedScrollOffset;

nit: use IntSize instead.  better to use WebCore types in the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676394</commentid>
    <comment_count>34</comment_count>
      <attachid>153857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 22:29:44 -0700</bug_when>
    <thetext>Comment on attachment 153857
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2730
&gt;&gt; +#if ENABLE(GESTURE_EVENTS)
&gt; 
&gt; nit: not sure why this is protected by GESTURE_EVENTS feature guard, but that&apos;s ok.

startPageScaleAnimation only exists when ENABLE(GESTURE_EVENTS) is true.  The #else block gives the non-animated implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677341</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 16:36:52 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 153857 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153857&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:201
&gt; &gt; +static const double scrollFocusedNodeAnimationDurationInSeconds = 0.2;
&gt; 
&gt; nit: since this is used with restoreScrollAndScaleState, it may be used in cases
&gt; that don&apos;t involve the focused node.  maybe call it scrollAndScaleAnimationDurationInSeconds?

Done.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2743
&gt; &gt; +    m_savedScrollOffset = WebSize();
&gt; 
&gt; ... = IntSize();

Fixed.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:724
&gt; &gt; +    WebSize m_savedScrollOffset;
&gt; 
&gt; nit: use IntSize instead.  better to use WebCore types in the implementation.

Thanks.  I missed the implicit conversion from WebSize to IntSize.  Using IntSize makes all this code much prettier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677343</commentid>
    <comment_count>36</comment_count>
      <attachid>154172</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 16:37:41 -0700</bug_when>
    <thetext>Created attachment 154172
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677398</commentid>
    <comment_count>37</comment_count>
      <attachid>154172</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 17:27:39 -0700</bug_when>
    <thetext>Comment on attachment 154172
Patch for landing

Clearing flags on attachment: 154172

Committed r123554: &lt;http://trac.webkit.org/changeset/123554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677399</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 17:27:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153608</attachid>
            <date>2012-07-20 15:04:16 -0700</date>
            <delta_ts>2012-07-20 16:09:15 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-91661-20120720150412.patch</filename>
            <type>text/plain</type>
            <size>4366</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmgKaW5kZXggMDA4NWJhNTFhM2Q4MTNkNjliMjMxOGU0NjQxYzU2MGMwZTg3NDgxYi4u
YTU4MzU2MDFiMGFlZDM4ZmEyNmNlYjM4NDg3YjFlMjEzMzAxYTYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtMTk3LDYgKzE5NywxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gcHJldmlvdXMgZWxlbWVudCBpbiB0aGUgdGFiIHNlcXVlbmNlIChpZiByZXZlcnNlIGlz
IHRydWUpLgogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlRm9jdXMoYm9vbCByZXZlcnNlKSB7IH0K
IAorICAgIC8vIFJldHVybiB0byB0aGUgc2Nyb2xsIG9mZnNldCBhbmQgcGFnZSBzY2FsZSBmYWN0
b3IgZnJvbSBiZWZvcmUKKyAgICAvLyB0aGUgZm9jdXNlZCBub2RlIHdhcyBzY3JvbGxlZCBpbnRv
IHZpZXcuCisgICAgdmlydHVhbCB2b2lkIHVuZG9TY3JvbGxGb2N1c2VkTm9kZSgpID0gMDsKKwog
ICAgIC8vIEFuaW1hdGUgYSBzY2FsZSBpbnRvIHRoZSBzcGVjaWZpZWQgZmluZC1pbi1wYWdlIHJl
Y3QuCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub0ZpbmRJblBhZ2VSZWN0KGNvbnN0IFdlYlJlY3Qm
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCAwZDVmMjVhNTE5NDRlMzllNjk1ZDJiZThkMmYzNmU4MjJmYTM3ZTdiLi43ZTZlODUxZGU1ZDk0
OTgyZTFlNmQwMzg5OTk2NDU4NGU2N2RkMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xOTcsNiArMTk3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0
IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29uc3QgZmxv
YXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBjb25zdCBk
b3VibGUgZG91YmxlVGFiWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4yNTsKIAor
c3RhdGljIGNvbnN0IGRvdWJsZSBhbmltYXRlU2Nyb2xsRm9jdXNlZE5vZGVJblNlY29uZHMgPSAw
LjI7CitzdGF0aWMgY29uc3QgaW50IG1pblJlYWRhYmxlQ2FyZXRIZWlnaHQgPSAxODsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQxNiw2ICs0MTgsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9jb21wb3NpdG9yU3VyZmFjZVJl
YWR5KGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcigxKQogI2VuZGlmCisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgICwgbV91bmRvU2Nyb2xsRm9jdXNlZE5vZGVQ
YWdlU2NhbGVGYWN0b3IoMCkKKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAg
LCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVu
dCkpCiAjZW5kaWYKQEAgLTI0NDcsOCArMjQ1MiwyMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzY3Jv
bGxGb2N1c2VkTm9kZUludG9SZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAgTm9kZSogZm9j
dXNlZE5vZGUgPSBmb2N1c2VkV2ViQ29yZU5vZGUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+dmlldygpIHx8ICFmb2N1c2VkTm9kZSB8fCAhZm9jdXNlZE5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKICAgICAgICAgcmV0dXJuOworI2lmICFFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgRWxl
bWVudCogZWxlbWVudE5vZGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZm9jdXNlZE5vZGUpOwog
ICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbEVsZW1lbnRUb1JlY3QoZWxlbWVudE5vZGUsIEludFJl
Y3QocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KSk7CisjZWxzZQorICAg
IFdlYlJlY3QgY2FyZXQsIGVuZDsKKyAgICBzZWxlY3Rpb25Cb3VuZHMoY2FyZXQsIGVuZCk7Cisg
ICAgZmxvYXQgbmV3U2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHBhZ2VTY2Fs
ZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSAqIG1pblJlYWRhYmxlQ2FyZXRIZWlnaHQg
LyBjYXJldC5oZWlnaHQpOworCisgICAgLy8gRklYTUU6IFVzZSBoZXVyaXN0aWNzIHRvIGNvbXB1
dGUgYSBiZXR0ZXIgbmV3T2Zmc2V0LgorICAgIEludFBvaW50IG5ld09mZnNldCA9IEludFJlY3Qo
cmVjdCkuY2VudGVyKCk7CisKKyAgICBtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVBhZ2VTY2FsZUZh
Y3RvciA9IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlU2Ny
b2xsT2Zmc2V0ID0gV2ViUG9pbnQobWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoLCBt
YWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKKyAgICBzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihuZXdPZmZzZXQsIGZhbHNlLCBuZXdTY2FsZSwgYW5pbWF0ZVNjcm9sbEZvY3VzZWRO
b2RlSW5TZWNvbmRzKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjphZHZhbmNlRm9j
dXMoYm9vbCByZXZlcnNlKQpAQCAtMjQ1Niw2ICsyNDc0LDE2IEBAIHZvaWQgV2ViVmlld0ltcGw6
OmFkdmFuY2VGb2N1cyhib29sIHJldmVyc2UpCiAgICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+YWR2YW5jZUZvY3VzKHJldmVyc2UgPyBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkIDogRm9jdXNE
aXJlY3Rpb25Gb3J3YXJkLCAwKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dW5kb1Njcm9sbEZv
Y3VzZWROb2RlKCkKK3sKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgaWYgKCFtX3Vu
ZG9TY3JvbGxGb2N1c2VkTm9kZVBhZ2VTY2FsZUZhY3RvcikKKyAgICAgICAgcmV0dXJuOworICAg
IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlU2Nyb2xsT2Zm
c2V0LCBmYWxzZSwgbV91bmRvU2Nyb2xsRm9jdXNlZE5vZGVQYWdlU2NhbGVGYWN0b3IsIGFuaW1h
dGVTY3JvbGxGb2N1c2VkTm9kZUluU2Vjb25kcyk7CisgICAgbV91bmRvU2Nyb2xsRm9jdXNlZE5v
ZGVQYWdlU2NhbGVGYWN0b3IgPSAwOworI2VuZGlmCit9CisKIGRvdWJsZSBXZWJWaWV3SW1wbDo6
em9vbUxldmVsKCkKIHsKICAgICByZXR1cm4gbV96b29tTGV2ZWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBjMmYzNmJmNDVhNTQyNTRmZWU5MGU4M2YxYzcy
ZGRhZjBjNGUzNDA2Li5mZjY5NDU4ZjNiNzA4NmUxOTVhM2NlMjVlMGUxODdiMWI2Y2MxNzc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTIwNyw2ICsyMDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRm9jdXNlZE5vZGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5vZGVJbnRvVmlldygpOwogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxGb2N1c2VkTm9kZUludG9SZWN0KGNvbnN0IFdlYlJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5kb1Njcm9sbEZvY3VzZWROb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub0Zp
bmRJblBhZ2VSZWN0KGNvbnN0IFdlYlJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZUZv
Y3VzKGJvb2wgcmV2ZXJzZSk7CiAgICAgdmlydHVhbCBkb3VibGUgem9vbUxldmVsKCk7CkBAIC04
MTAsNiArODExLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgV2ViSW5w
dXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKKyAgICBXZWJQb2ludCBtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVNjcm9sbE9mZnNldDsKKyAg
ICBmbG9hdCBtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVBhZ2VTY2FsZUZhY3RvcjsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJ
bXBsPiBtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153616</attachid>
            <date>2012-07-20 16:09:18 -0700</date>
            <delta_ts>2012-07-20 16:37:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91661-20120720160914.patch</filename>
            <type>text/plain</type>
            <size>4748</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhhNTVmYTNmNTA3MjEzODU3ZjY4MzIzZWZlYTAxNGRlOTE0NzFiMmMuLjBlOTEzZTE4N2Q2YTk4
ODI0NDI4MjQyYjkxMTVjOWJiNzlhMzkwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDctMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgc2Nyb2xsaW5nIGFuZCB6b29taW5nIHRv
IGZvY3VzZWQgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjb250YWlucyB0aGUgdW5kb1Njcm9sbEZvY3VzZWRO
b2RlIGZ1bmN0aW9uLCB3aGljaCB0aGUKKyAgICAgICAgZW1iZWRkZXIgY2FuIHVzZSB0byByZXN0
b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgYSBmb2N1c2VkIG5vZGUKKyAgICAgICAgaW50
byB2aWV3LgorCisgICAgICAgIEN1cnJlbnRseSwgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvIG11
Y2ggYmVjYXVzZQorICAgICAgICBzY3JvbGxGb2N1c2VkTm9kZUludG9SZWN0IGRvZXNuJ3QgcmVj
b3JkIHRoZSBwcmV2aW91cyBzdGF0ZSBpbiB0aGUgbmV3CisgICAgICAgIG1lbWJlciB2YXJpYWJs
ZXMuIFRoYXQgd2lsbCBjaGFuZ2Ugd2hlbiB3ZSB1cHN0cmVhbSB0aGUgY2hhbmdlcyB0bworICAg
ICAgICBzY3JvbGxGb2N1c2VkTm9kZUludG9SZWN0LiAoWW91IGNhbiBzZWUgYSBzaW1wbGlmaWVk
IHZlcnNpb24gb2YgdGhlCisgICAgICAgIGNoYW5nZXMgdG8gdGhhdCBmdW5jdGlvbiBpbiBhbiBl
YXJsaWVyIHBhdGNoIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTY2MS4pCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAo
V2ViVmlldyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnVuZG9TY3JvbGxGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA3LTIw
ICBEYW5pZWwgTXVycGh5ICA8ZG11cnBoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1
Y2UgV2ViVmlld0JlbmNobWFya1N1cHBvcnQgZm9yIHBlcmZvcm1hbmNlIGV4cGVyaW1lbnRzIG9u
IGEgcmVhbCBXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5k
ZXggMDA4NWJhNTFhM2Q4MTNkNjliMjMxOGU0NjQxYzU2MGMwZTg3NDgxYi4uYTU4MzU2MDFiMGFl
ZDM4ZmEyNmNlYjM4NDg3YjFlMjEzMzAxYTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaApAQCAtMTk3LDYgKzE5NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gcHJldmlv
dXMgZWxlbWVudCBpbiB0aGUgdGFiIHNlcXVlbmNlIChpZiByZXZlcnNlIGlzIHRydWUpLgogICAg
IHZpcnR1YWwgdm9pZCBhZHZhbmNlRm9jdXMoYm9vbCByZXZlcnNlKSB7IH0KIAorICAgIC8vIFJl
dHVybiB0byB0aGUgc2Nyb2xsIG9mZnNldCBhbmQgcGFnZSBzY2FsZSBmYWN0b3IgZnJvbSBiZWZv
cmUKKyAgICAvLyB0aGUgZm9jdXNlZCBub2RlIHdhcyBzY3JvbGxlZCBpbnRvIHZpZXcuCisgICAg
dmlydHVhbCB2b2lkIHVuZG9TY3JvbGxGb2N1c2VkTm9kZSgpID0gMDsKKwogICAgIC8vIEFuaW1h
dGUgYSBzY2FsZSBpbnRvIHRoZSBzcGVjaWZpZWQgZmluZC1pbi1wYWdlIHJlY3QuCiAgICAgdmly
dHVhbCB2b2lkIHpvb21Ub0ZpbmRJblBhZ2VSZWN0KGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwZDVmMjVhNTE5
NDRlMzllNjk1ZDJiZThkMmYzNmU4MjJmYTM3ZTdiLi42NTYwZjhjMTU4NmViOTM1YTExNTY3ZDM0
YThmOWEwZGZjNzg4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0xOTcsNiArMTk3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpv
b21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFw
Wm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBjb25zdCBkb3VibGUgZG91Ymxl
VGFiWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4yNTsKIAorc3RhdGljIGNvbnN0
IGRvdWJsZSBhbmltYXRlU2Nyb2xsRm9jdXNlZE5vZGVJblNlY29uZHMgPSAwLjI7CitzdGF0aWMg
Y29uc3QgaW50IG1pblJlYWRhYmxlQ2FyZXRIZWlnaHQgPSAxODsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTQxNiw2ICs0MTgsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50KQogICAgICwgbV9jb21wb3NpdG9yU3VyZmFjZVJlYWR5KGZhbHNlKQog
ICAgICwgbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcigxKQogI2VuZGlmCisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorICAgICwgbV91bmRvU2Nyb2xsRm9jdXNlZE5vZGVQYWdlU2NhbGVGYWN0
b3IoMCkKKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElu
cHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVudCkpCiAjZW5kaWYK
QEAgLTI0NTYsNiArMjQ2MSwxNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjphZHZhbmNlRm9jdXMoYm9v
bCByZXZlcnNlKQogICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmFkdmFuY2VGb2N1cyhy
ZXZlcnNlID8gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCA6IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCwg
MCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnVuZG9TY3JvbGxGb2N1c2VkTm9kZSgpCit7Cisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGlmICghbV91bmRvU2Nyb2xsRm9jdXNlZE5v
ZGVQYWdlU2NhbGVGYWN0b3IpCisgICAgICAgIHJldHVybjsKKyAgICBzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVNjcm9sbE9mZnNldCwgZmFsc2UsIG1fdW5k
b1Njcm9sbEZvY3VzZWROb2RlUGFnZVNjYWxlRmFjdG9yLCBhbmltYXRlU2Nyb2xsRm9jdXNlZE5v
ZGVJblNlY29uZHMpOworICAgIG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlUGFnZVNjYWxlRmFjdG9y
ID0gMDsKKyNlbmRpZgorfQorCiBkb3VibGUgV2ViVmlld0ltcGw6Onpvb21MZXZlbCgpCiB7CiAg
ICAgcmV0dXJuIG1fem9vbUxldmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKaW5kZXggYzJmMzZiZjQ1YTU0MjU0ZmVlOTBlODNmMWM3MmRkYWYwYzRlMzQwNi4uZmY2
OTQ1OGYzYjcwODZlMTk1YTNjZTI1ZTBlMTg3YjFiNmNjMTc3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMDcsNiArMjA3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckZvY3VzZWROb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9s
bEZvY3VzZWROb2RlSW50b1ZpZXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRm9jdXNlZE5v
ZGVJbnRvUmVjdChjb25zdCBXZWJSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHVuZG9TY3JvbGxG
b2N1c2VkTm9kZSgpOwogICAgIHZpcnR1YWwgdm9pZCB6b29tVG9GaW5kSW5QYWdlUmVjdChjb25z
dCBXZWJSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkdmFuY2VGb2N1cyhib29sIHJldmVyc2Up
OwogICAgIHZpcnR1YWwgZG91YmxlIHpvb21MZXZlbCgpOwpAQCAtODEwLDYgKzgxMSwxMSBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVu
dElucHV0RXZlbnQ7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgV2ViUG9pbnQg
bV91bmRvU2Nyb2xsRm9jdXNlZE5vZGVTY3JvbGxPZmZzZXQ7CisgICAgZmxvYXQgbV91bmRvU2Ny
b2xsRm9jdXNlZE5vZGVQYWdlU2NhbGVGYWN0b3I7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCiAgICAgT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1
dENsaWVudDsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153618</attachid>
            <date>2012-07-20 16:37:12 -0700</date>
            <delta_ts>2012-07-23 13:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91661-20120720163706.patch</filename>
            <type>text/plain</type>
            <size>4701</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhhNTVmYTNmNTA3MjEzODU3ZjY4MzIzZWZlYTAxNGRlOTE0NzFiMmMuLjBlOTEzZTE4N2Q2YTk4
ODI0NDI4MjQyYjkxMTVjOWJiNzlhMzkwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDctMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgc2Nyb2xsaW5nIGFuZCB6b29taW5nIHRv
IGZvY3VzZWQgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjb250YWlucyB0aGUgdW5kb1Njcm9sbEZvY3VzZWRO
b2RlIGZ1bmN0aW9uLCB3aGljaCB0aGUKKyAgICAgICAgZW1iZWRkZXIgY2FuIHVzZSB0byByZXN0
b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgYSBmb2N1c2VkIG5vZGUKKyAgICAgICAgaW50
byB2aWV3LgorCisgICAgICAgIEN1cnJlbnRseSwgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvIG11
Y2ggYmVjYXVzZQorICAgICAgICBzY3JvbGxGb2N1c2VkTm9kZUludG9SZWN0IGRvZXNuJ3QgcmVj
b3JkIHRoZSBwcmV2aW91cyBzdGF0ZSBpbiB0aGUgbmV3CisgICAgICAgIG1lbWJlciB2YXJpYWJs
ZXMuIFRoYXQgd2lsbCBjaGFuZ2Ugd2hlbiB3ZSB1cHN0cmVhbSB0aGUgY2hhbmdlcyB0bworICAg
ICAgICBzY3JvbGxGb2N1c2VkTm9kZUludG9SZWN0LiAoWW91IGNhbiBzZWUgYSBzaW1wbGlmaWVk
IHZlcnNpb24gb2YgdGhlCisgICAgICAgIGNoYW5nZXMgdG8gdGhhdCBmdW5jdGlvbiBpbiBhbiBl
YXJsaWVyIHBhdGNoIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTY2MS4pCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAo
V2ViVmlldyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnVuZG9TY3JvbGxGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA3LTIw
ICBEYW5pZWwgTXVycGh5ICA8ZG11cnBoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1
Y2UgV2ViVmlld0JlbmNobWFya1N1cHBvcnQgZm9yIHBlcmZvcm1hbmNlIGV4cGVyaW1lbnRzIG9u
IGEgcmVhbCBXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5k
ZXggMDA4NWJhNTFhM2Q4MTNkNjliMjMxOGU0NjQxYzU2MGMwZTg3NDgxYi4uYTU4MzU2MDFiMGFl
ZDM4ZmEyNmNlYjM4NDg3YjFlMjEzMzAxYTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaApAQCAtMTk3LDYgKzE5NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gcHJldmlv
dXMgZWxlbWVudCBpbiB0aGUgdGFiIHNlcXVlbmNlIChpZiByZXZlcnNlIGlzIHRydWUpLgogICAg
IHZpcnR1YWwgdm9pZCBhZHZhbmNlRm9jdXMoYm9vbCByZXZlcnNlKSB7IH0KIAorICAgIC8vIFJl
dHVybiB0byB0aGUgc2Nyb2xsIG9mZnNldCBhbmQgcGFnZSBzY2FsZSBmYWN0b3IgZnJvbSBiZWZv
cmUKKyAgICAvLyB0aGUgZm9jdXNlZCBub2RlIHdhcyBzY3JvbGxlZCBpbnRvIHZpZXcuCisgICAg
dmlydHVhbCB2b2lkIHVuZG9TY3JvbGxGb2N1c2VkTm9kZSgpID0gMDsKKwogICAgIC8vIEFuaW1h
dGUgYSBzY2FsZSBpbnRvIHRoZSBzcGVjaWZpZWQgZmluZC1pbi1wYWdlIHJlY3QuCiAgICAgdmly
dHVhbCB2b2lkIHpvb21Ub0ZpbmRJblBhZ2VSZWN0KGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwZDVmMjVhNTE5
NDRlMzllNjk1ZDJiZThkMmYzNmU4MjJmYTM3ZTdiLi45MjdkZWU1Y2QyMmJhNDM5NDE3NDFkZjQ1
ODQ4ODA4MDMzNzQwZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0xOTcsNiArMTk3LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpv
b21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFw
Wm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBjb25zdCBkb3VibGUgZG91Ymxl
VGFiWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4yNTsKIAorc3RhdGljIGNvbnN0
IGRvdWJsZSBhbmltYXRlU2Nyb2xsRm9jdXNlZE5vZGVJblNlY29uZHMgPSAwLjI7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC00MTYsNiArNDE3LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29tcG9zaXRvclN1cmZhY2VSZWFk
eShmYWxzZSkKICAgICAsIG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IoMSkKICNlbmRpZgorI2lm
IEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICAsIG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlUGFn
ZVNjYWxlRmFjdG9yKDApCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwg
bV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQp
KQogI2VuZGlmCkBAIC0yNDU2LDYgKzI0NjAsMTYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YWR2YW5j
ZUZvY3VzKGJvb2wgcmV2ZXJzZSkKICAgICBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5hZHZh
bmNlRm9jdXMocmV2ZXJzZSA/IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQgOiBGb2N1c0RpcmVjdGlv
bkZvcndhcmQsIDApOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp1bmRvU2Nyb2xsRm9jdXNlZE5v
ZGUoKQoreworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBpZiAoIW1fdW5kb1Njcm9s
bEZvY3VzZWROb2RlUGFnZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm47CisgICAgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24obV91bmRvU2Nyb2xsRm9jdXNlZE5vZGVTY3JvbGxPZmZzZXQsIGZh
bHNlLCBtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVBhZ2VTY2FsZUZhY3RvciwgYW5pbWF0ZVNjcm9s
bEZvY3VzZWROb2RlSW5TZWNvbmRzKTsKKyAgICBtX3VuZG9TY3JvbGxGb2N1c2VkTm9kZVBhZ2VT
Y2FsZUZhY3RvciA9IDA7CisjZW5kaWYKK30KKwogZG91YmxlIFdlYlZpZXdJbXBsOjp6b29tTGV2
ZWwoKQogewogICAgIHJldHVybiBtX3pvb21MZXZlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IGMyZjM2YmY0NWE1NDI1NGZlZTkwZTgzZjFjNzJkZGFmMGM0
ZTM0MDYuLmZmNjk0NThmM2I3MDg2ZTE5NWEzY2UyNWUwZTE4N2IxYjZjYzE3NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxGb2N1c2VkTm9kZUludG9WaWV3KCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9s
bEZvY3VzZWROb2RlSW50b1JlY3QoY29uc3QgV2ViUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB1
bmRvU2Nyb2xsRm9jdXNlZE5vZGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgem9vbVRvRmluZEluUGFn
ZVJlY3QoY29uc3QgV2ViUmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlRm9jdXMoYm9v
bCByZXZlcnNlKTsKICAgICB2aXJ0dWFsIGRvdWJsZSB6b29tTGV2ZWwoKTsKQEAgLTgxMCw2ICs4
MTEsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50
KiBtX2N1cnJlbnRJbnB1dEV2ZW50OwogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAg
IFdlYlBvaW50IG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlU2Nyb2xsT2Zmc2V0OworICAgIGZsb2F0
IG1fdW5kb1Njcm9sbEZvY3VzZWROb2RlUGFnZVNjYWxlRmFjdG9yOworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1f
c3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153857</attachid>
            <date>2012-07-23 13:53:45 -0700</date>
            <delta_ts>2012-07-24 16:37:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91661-20120723135337.patch</filename>
            <type>text/plain</type>
            <size>6534</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDlmYzkxZjM2NjY4OGVmM2VkMzhhMjcxM2Y1ZWNlOGJkYzg2NmY1M2UuLjFmNzdmMmU0NGQzM2Jl
NzMxMWM3MDNiOWZiMWNiOGNhOWE1MGQ4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTItMDctMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgc2Nyb2xsaW5nIGFuZCB6b29taW5nIHRv
IGZvY3VzZWQgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNhdmVTY3JvbGxBbmRTY2FsZVN0
YXRlIGFuZAorICAgICAgICByZXN0b3JlU2Nyb2xsQW5kU2NhbGVTdGF0ZSwgd2hpY2ggY2FuIGJl
IHVzZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKKyAgICAgICAgc2Nyb2xsIGFuZCBzY2FsZSBz
dGF0ZSBvZiB0aGUgV2ViVmlldywgcmVzcGVjdGl2ZWx5LiAgVGhlc2UgZnVuY3Rpb25zCisgICAg
ICAgIHdpbGwgYmUgdXNlZCBieSBDaHJvbWl1bSBvbiBBbmRyb2lkIHRvIHNhdmUgdGhlIHNjYWxl
IGFuZCBzY3JvbGxzIHN0YXRlCisgICAgICAgIGJlZm9yZSB6b29tIGludG8gYSB0ZXh0IGZpZWxk
IHNvIHRoYXQgd2UgY2FuICJ1bmRvIiB0aGUgem9vbSBpZiB0aGUKKyAgICAgICAgdXNlciBkaWRu
J3QgbWVhbiB0byB6b29tIGludG8gdGhlIHRleHQgZmllbGQuCisKKyAgICAgICAgSSB3YW50ZWQg
dG8gd3JpdGUgdW5pdCB0ZXN0cyBmb3IgdGhlc2UgZnVuY3Rpb25zLCBidXQgaXQgd2Fzbid0IGNs
ZWFyCisgICAgICAgIHRvIG1lIGhvdyB0byB3cml0ZSB0aGUgdGVzdCBiZWNhdXNlIHN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uIGFwcGVhcnMgdG8KKyAgICAgICAgY29tcGxldGUgYXN5bmNocm9ub3Vz
bHkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNhdmVTY3Jv
bGxBbmRTY2FsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpyZXN0b3JlU2Nyb2xsQW5kU2NhbGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZXNldFNhdmVkU2Nyb2xsQW5kU2NhbGVTdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNy0yMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc3RpY2t5
IHBvc2l0aW9uaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXgg
MDA4NWJhNTFhM2Q4MTNkNjliMjMxOGU0NjQxYzU2MGMwZTg3NDgxYi4uN2U4ZGE4NjE3YWQ2Mzk2
OTU5ODZiYWVmMjNiNTFhYjdhMDJmYzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaApAQCAtMjU0LDYgKzI1NCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9h
dCBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQg
bWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIAorICAgIC8vIFNhdmUgdGhlIFdl
YlZpZXcncyBjdXJyZW50IHNjcm9sbCBhbmQgc2NhbGUgc3RhdGUuIEVhY2ggY2FsbCB0byB0aGlz
IGZ1bmN0aW9uCisgICAgLy8gb3ZlcndyaXRlcyB0aGUgcHJldmlvdXNseSBzYXZlZCBzY3JvbGwg
YW5kIHNjYWxlIHN0YXRlLgorICAgIHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsQW5kU2NhbGVTdGF0
ZSgpID0gMDsKKworICAgIC8vIFJlc3RvcmUgdGhlIHByZXZpb3VzbHkgc2F2ZWQgc2Nyb2xsIGFu
ZCBzY2FsZSBzdGF0ZS4gQWZ0ZXIgcmVzdHJvaW5nIHRoZQorICAgIC8vIHN0YXRlLCB0aGlzIGZ1
bmN0aW9uIGRlbGV0ZXMgYW55IHNhdmVkIHNjcm9sbCBhbmQgc2NhbGUgc3RhdGUuCisgICAgdmly
dHVhbCB2b2lkIHJlc3RvcmVTY3JvbGxBbmRTY2FsZVN0YXRlKCkgPSAwOworCiAgICAgLy8gUHJl
dmVudCB0aGUgd2ViIHBhZ2UgZnJvbSBzZXR0aW5nIGEgbWF4aW11bSBzY2FsZSB2aWEgdGhlIHZp
ZXdwb3J0IG1ldGEKICAgICAvLyB0YWcuIFRoaXMgaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJl
IHRoYXQgbGV0cyBmb2xrcyB6b29tIGluIHRvIHdlYgogICAgIC8vIHBhZ2VzIGV2ZW4gaWYgdGhl
IHdlYiBwYWdlIHRyaWVzIHRvIGJsb2NrIHNjYWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMGQ1ZjI1YTUxOTQ0ZTM5ZTY5NWQyYmU4ZDJmMzZl
ODIyZmEzN2U3Yi4uZTViYzJiODliNWFjMTgzNjA3ZmM0YTM4NGJmMjc5MzdkNGQ0NDdiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTk3LDYgKzE5
Nyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQ29udGVudERlZmF1bHRNYXJn
aW4gPSA1Owogc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50TWluaW11bU1h
cmdpbiA9IDI7CiBzdGF0aWMgY29uc3QgZG91YmxlIGRvdWJsZVRhYlpvb21BbmltYXRpb25EdXJh
dGlvbkluU2Vjb25kcyA9IDAuMjU7CiAKKy8vIENvbnN0YW50cyBmb3Igem9vbWluZyBpbiBvbiBh
IGZvY3VzZWQgdGV4dCBmaWVsZC4KK3N0YXRpYyBjb25zdCBkb3VibGUgc2Nyb2xsRm9jdXNlZE5v
ZGVBbmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA9IDAuMjsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTM5Miw2ICszOTQsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50KQogICAgICwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKG1heFBhZ2VTY2Fs
ZUZhY3RvcikKICAgICAsIG1faWdub3JlVmlld3BvcnRUYWdNYXhpbXVtU2NhbGUoZmFsc2UpCiAg
ICAgLCBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0KGZhbHNlKQorICAgICwgbV9zYXZlZFBhZ2VTY2Fs
ZUZhY3RvcigwKQogICAgICwgbV9jb250ZXh0TWVudUFsbG93ZWQoZmFsc2UpCiAgICAgLCBtX2Rv
aW5nRHJhZ0FuZERyb3AoZmFsc2UpCiAgICAgLCBtX2lnbm9yZUlucHV0RXZlbnRzKGZhbHNlKQpA
QCAtMjcxMyw2ICsyNzE2LDMzIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjptYXhpbXVtUGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yOwogfQog
Cit2b2lkIFdlYlZpZXdJbXBsOjpzYXZlU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpCit7CisgICAgbV9z
YXZlZFBhZ2VTY2FsZUZhY3RvciA9IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1fc2F2ZWRTY3Jv
bGxPZmZzZXQgPSBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCk7Cit9CisKK3ZvaWQgV2ViVmll
d0ltcGw6OnJlc3RvcmVTY3JvbGxBbmRTY2FsZVN0YXRlKCkKK3sKKyAgICBpZiAoIW1fc2F2ZWRQ
YWdlU2NhbGVGYWN0b3IpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRQb2ludChtX3NhdmVkU2Nyb2xs
T2Zmc2V0LndpZHRoLCBtX3NhdmVkU2Nyb2xsT2Zmc2V0LmhlaWdodCksIGZhbHNlLCBtX3NhdmVk
UGFnZVNjYWxlRmFjdG9yLCBzY3JvbGxGb2N1c2VkTm9kZUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNv
bmRzKTsKKyNlbHNlCisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKG1fc2F2ZWRQYWdlU2NhbGVGYWN0
b3IsIFdlYlBvaW50KCkpOworICAgIG1haW5GcmFtZSgpLT5zZXRTY3JvbGxPZmZzZXQobV9zYXZl
ZFNjcm9sbE9mZnNldCk7CisjZW5kaWYKKworICAgIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0
YXRlKCk7Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0
YXRlKCkKK3sKKyAgICBtX3NhdmVkUGFnZVNjYWxlRmFjdG9yID0gMDsKKyAgICBtX3NhdmVkU2Ny
b2xsT2Zmc2V0ID0gV2ViU2l6ZSgpOworfQorCiBXZWJTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExh
eW91dFNpemUoKSBjb25zdAogewogICAgIGlmICghcGFnZSgpKQpAQCAtMzI0Niw2ICszMjc2LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBpc05ld05hdmlnYXRpb24s
IGJvb2wgaXNOYXZpZ2F0aW9uV2l0aGluUGEKICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1Nl
dCA9IGZhbHNlOwogCiAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgcmVzZXRT
YXZlZFNjcm9sbEFuZFNjYWxlU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0
VXBkYXRlZChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKaW5kZXggYzJmMzZiZjQ1YTU0MjU0ZmVlOTBlODNmMWM3MmRkYWYwYzRl
MzQwNi4uMTZlYjRlOTU2ZWQ1M2FlYWM4Yzk5YzJmNjJhNzkyZTQzMTM2MmMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMjAsNiArMjIwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWlu
UGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIHZpcnR1YWwgZmxvYXQgbWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgbWF4aW11bVBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsQW5kU2NhbGVT
dGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJZ25vcmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZShib29sKTsK
IAogICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKQEAgLTU3OSw2
ICs1ODEsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1p
dHMoZmxvYXQgc2NhbGUpOwogICAgIFdlYlBvaW50IGNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBX
ZWJQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSk7CiAKKyAgICB2b2lkIHJlc2V0U2F2ZWRTY3Jv
bGxBbmRTY2FsZVN0YXRlKCk7CisKICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdl
YlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3Mg
V1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsKIApAQCAtNzA3LDE1ICs3MTEsMTggQEAgcHJp
dmF0ZToKIAogICAgIGRvdWJsZSBtX21heGltdW1ab29tTGV2ZWw7CiAKKyAgICAvLyBTdGF0ZSBy
ZWxhdGVkIHRvIHRoZSBwYWdlIHNjYWxlCiAgICAgZmxvYXQgbV9wYWdlRGVmaW5lZE1pbmltdW1Q
YWdlU2NhbGVGYWN0b3I7CiAgICAgZmxvYXQgbV9wYWdlRGVmaW5lZE1heGltdW1QYWdlU2NhbGVG
YWN0b3I7CiAgICAgZmxvYXQgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1f
bWF4aW11bVBhZ2VTY2FsZUZhY3RvcjsKLQogICAgIGJvb2wgbV9pZ25vcmVWaWV3cG9ydFRhZ01h
eGltdW1TY2FsZTsKLQogICAgIGJvb2wgbV9wYWdlU2NhbGVGYWN0b3JJc1NldDsKIAorICAgIC8v
IFNhdmVkIHBhZ2Ugc2NhbGUgc3RhdGUuCisgICAgZmxvYXQgbV9zYXZlZFBhZ2VTY2FsZUZhY3Rv
cjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFjdG9yIGlzIHNhdmVkLgorICAgIFdl
YlNpemUgbV9zYXZlZFNjcm9sbE9mZnNldDsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFsbG93
ZWQ7CiAKICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154172</attachid>
            <date>2012-07-24 16:37:41 -0700</date>
            <delta_ts>2012-07-24 17:27:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91661-20120724163731.patch</filename>
            <type>text/plain</type>
            <size>6531</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDUwNjIyYjk0ZWQ1ODc0Mzk1NGU2NGExOTk2ZjBhZWYwM2VjNTdmZTguLmIyNzIwMjkwYTViYTcw
N2NiMThmY2E2MDc1YWZlMTM2NzQ5MTdhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTItMDctMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgc2Nyb2xsaW5nIGFuZCB6b29taW5nIHRv
IGZvY3VzZWQgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVy
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzYXZlU2Nyb2xsQW5kU2NhbGVTdGF0
ZSBhbmQKKyAgICAgICAgcmVzdG9yZVNjcm9sbEFuZFNjYWxlU3RhdGUsIHdoaWNoIGNhbiBiZSB1
c2VkIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlCisgICAgICAgIHNjcm9sbCBhbmQgc2NhbGUgc3Rh
dGUgb2YgdGhlIFdlYlZpZXcsIHJlc3BlY3RpdmVseS4gIFRoZXNlIGZ1bmN0aW9ucworICAgICAg
ICB3aWxsIGJlIHVzZWQgYnkgQ2hyb21pdW0gb24gQW5kcm9pZCB0byBzYXZlIHRoZSBzY2FsZSBh
bmQgc2Nyb2xscyBzdGF0ZQorICAgICAgICBiZWZvcmUgem9vbSBpbnRvIGEgdGV4dCBmaWVsZCBz
byB0aGF0IHdlIGNhbiAidW5kbyIgdGhlIHpvb20gaWYgdGhlCisgICAgICAgIHVzZXIgZGlkbid0
IG1lYW4gdG8gem9vbSBpbnRvIHRoZSB0ZXh0IGZpZWxkLgorCisgICAgICAgIEkgd2FudGVkIHRv
IHdyaXRlIHVuaXQgdGVzdHMgZm9yIHRoZXNlIGZ1bmN0aW9ucywgYnV0IGl0IHdhc24ndCBjbGVh
cgorICAgICAgICB0byBtZSBob3cgdG8gd3JpdGUgdGhlIHRlc3QgYmVjYXVzZSBzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbiBhcHBlYXJzIHRvCisgICAgICAgIGNvbXBsZXRlIGFzeW5jaHJvbm91c2x5
LgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzYXZlU2Nyb2xs
QW5kU2NhbGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVzdG9yZVNjcm9sbEFuZFNjYWxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6cmVzZXRTYXZlZFNjcm9sbEFuZFNjYWxlU3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDctMjQgIFRlcnJ5IEFuZGVy
c29uICA8dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQg
YSBib3VuZGluZyBib3ggbWVtYmVyIGluIFdlYkdlc3R1cmVFdmVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDAwODViYTUxYTNkODEzZDY5YjIzMThlNDY0MWM1
NjBjMGU4NzQ4MWIuLjdlOGRhODYxN2FkNjM5Njk1OTg2YmFlZjIzYjUxYWI3YTAyZmMxNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTI1NCw2ICsyNTQsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgbWluaW11bVBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IG1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25z
dCA9IDA7CiAKKyAgICAvLyBTYXZlIHRoZSBXZWJWaWV3J3MgY3VycmVudCBzY3JvbGwgYW5kIHNj
YWxlIHN0YXRlLiBFYWNoIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgorICAgIC8vIG92ZXJ3cml0ZXMg
dGhlIHByZXZpb3VzbHkgc2F2ZWQgc2Nyb2xsIGFuZCBzY2FsZSBzdGF0ZS4KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVNjcm9sbEFuZFNjYWxlU3RhdGUoKSA9IDA7CisKKyAgICAvLyBSZXN0b3JlIHRo
ZSBwcmV2aW91c2x5IHNhdmVkIHNjcm9sbCBhbmQgc2NhbGUgc3RhdGUuIEFmdGVyIHJlc3Ryb2lu
ZyB0aGUKKyAgICAvLyBzdGF0ZSwgdGhpcyBmdW5jdGlvbiBkZWxldGVzIGFueSBzYXZlZCBzY3Jv
bGwgYW5kIHNjYWxlIHN0YXRlLgorICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlU2Nyb2xsQW5kU2Nh
bGVTdGF0ZSgpID0gMDsKKwogICAgIC8vIFByZXZlbnQgdGhlIHdlYiBwYWdlIGZyb20gc2V0dGlu
ZyBhIG1heGltdW0gc2NhbGUgdmlhIHRoZSB2aWV3cG9ydCBtZXRhCiAgICAgLy8gdGFnLiBUaGlz
IGlzIGFuIGFjY2Vzc2liaWxpdHkgZmVhdHVyZSB0aGF0IGxldHMgZm9sa3Mgem9vbSBpbiB0byB3
ZWIKICAgICAvLyBwYWdlcyBldmVuIGlmIHRoZSB3ZWIgcGFnZSB0cmllcyB0byBibG9jayBzY2Fs
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDM3
MjlkY2UwY2IwZTE0MzliZmRmNjY3ZDRhNjI5YjA1ZjgzMTg3ZmUuLjdjNmRhNjBkOTNhYmY2ZjEz
MGIwYjIxNzk3ZTBhMzMzNjI4MzcwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTE5Nyw2ICsxOTcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgZG91
YmxlVGFwWm9vbUNvbnRlbnREZWZhdWx0TWFyZ2luID0gNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBk
b3VibGVUYXBab29tQ29udGVudE1pbmltdW1NYXJnaW4gPSAyOwogc3RhdGljIGNvbnN0IGRvdWJs
ZSBkb3VibGVUYWJab29tQW5pbWF0aW9uRHVyYXRpb25JblNlY29uZHMgPSAwLjI1OwogCisvLyBD
b25zdGFudHMgZm9yIHpvb21pbmcgaW4gb24gYSBmb2N1c2VkIHRleHQgZmllbGQuCitzdGF0aWMg
Y29uc3QgZG91YmxlIHNjcm9sbEFuZFNjYWxlQW5pbWF0aW9uRHVyYXRpb25JblNlY29uZHMgPSAw
LjI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zOTIsNiArMzk0LDcgQEAgV2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fbWF4aW11bVBh
Z2VTY2FsZUZhY3RvcihtYXhQYWdlU2NhbGVGYWN0b3IpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0
VGFnTWF4aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxz
ZSkKKyAgICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKICAgICAsIG1fY29udGV4dE1lbnVB
bGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9wKGZhbHNlKQogICAgICwgbV9p
Z25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTI3MzAsNiArMjczMywzMyBAQCBmbG9hdCBXZWJW
aWV3SW1wbDo6bWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWF4
aW11bVBhZ2VTY2FsZUZhY3RvcjsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2F2ZVNjcm9sbEFu
ZFNjYWxlU3RhdGUoKQoreworICAgIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IgPSBwYWdlU2NhbGVG
YWN0b3IoKTsKKyAgICBtX3NhdmVkU2Nyb2xsT2Zmc2V0ID0gbWFpbkZyYW1lKCktPnNjcm9sbE9m
ZnNldCgpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpyZXN0b3JlU2Nyb2xsQW5kU2NhbGVTdGF0
ZSgpCit7CisgICAgaWYgKCFtX3NhdmVkUGFnZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm47
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgc3RhcnRQYWdlU2NhbGVBbmltYXRp
b24oSW50UG9pbnQobV9zYXZlZFNjcm9sbE9mZnNldCksIGZhbHNlLCBtX3NhdmVkUGFnZVNjYWxl
RmFjdG9yLCBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzKTsKKyNlbHNl
CisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IsIFdlYlBvaW50
KCkpOworICAgIG1haW5GcmFtZSgpLT5zZXRTY3JvbGxPZmZzZXQobV9zYXZlZFNjcm9sbE9mZnNl
dCk7CisjZW5kaWYKKworICAgIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCk7Cit9CisK
K3ZvaWQgV2ViVmlld0ltcGw6OnJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCkKK3sKKyAg
ICBtX3NhdmVkUGFnZVNjYWxlRmFjdG9yID0gMDsKKyAgICBtX3NhdmVkU2Nyb2xsT2Zmc2V0ID0g
SW50U2l6ZSgpOworfQorCiBXZWJTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExheW91dFNpemUoKSBj
b25zdAogewogICAgIGlmICghcGFnZSgpKQpAQCAtMzI2Myw2ICszMjkzLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBpc05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZp
Z2F0aW9uV2l0aGluUGEKICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9IGZhbHNlOwog
CiAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgcmVzZXRTYXZlZFNjcm9sbEFu
ZFNjYWxlU3RhdGUoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0VXBkYXRlZChXZWJG
cmFtZUltcGwqIHdlYmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggMTE1NTk2OWZkZjRjNTc5M2Q0NTJiNzc4YzRhMThhYTI4YjM3ZGQ3Zi4uMDFmNTA2
NmFhM2M1ZWZlNWEwNzNlM2I5NGUzN2QzNWRiZGVmMTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMjAsNiArMjIwLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluUGFnZVNjYWxlLCBm
bG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIHZpcnR1YWwgZmxvYXQgbWluaW11bVBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcigp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpOworICAg
IHZpcnR1YWwgdm9pZCByZXN0b3JlU2Nyb2xsQW5kU2NhbGVTdGF0ZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJZ25vcmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZShib29sKTsKIAogICAgIHZpcnR1
YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKQEAgLTU3OSw2ICs1ODEsOCBAQCBw
cml2YXRlOgogICAgIGZsb2F0IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMoZmxvYXQgc2Nh
bGUpOwogICAgIFdlYlBvaW50IGNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBXZWJQb2ludCYgb2Zm
c2V0LCBmbG9hdCBzY2FsZSk7CiAKKyAgICB2b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0
YXRlKCk7CisKICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0
ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3Vu
dGVkPFdlYlZpZXdJbXBsPjsKIApAQCAtNzA3LDE1ICs3MTEsMTggQEAgcHJpdmF0ZToKIAogICAg
IGRvdWJsZSBtX21heGltdW1ab29tTGV2ZWw7CiAKKyAgICAvLyBTdGF0ZSByZWxhdGVkIHRvIHRo
ZSBwYWdlIHNjYWxlCiAgICAgZmxvYXQgbV9wYWdlRGVmaW5lZE1pbmltdW1QYWdlU2NhbGVGYWN0
b3I7CiAgICAgZmxvYXQgbV9wYWdlRGVmaW5lZE1heGltdW1QYWdlU2NhbGVGYWN0b3I7CiAgICAg
ZmxvYXQgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fbWF4aW11bVBhZ2VT
Y2FsZUZhY3RvcjsKLQogICAgIGJvb2wgbV9pZ25vcmVWaWV3cG9ydFRhZ01heGltdW1TY2FsZTsK
LQogICAgIGJvb2wgbV9wYWdlU2NhbGVGYWN0b3JJc1NldDsKIAorICAgIC8vIFNhdmVkIHBhZ2Ug
c2NhbGUgc3RhdGUuCisgICAgZmxvYXQgbV9zYXZlZFBhZ2VTY2FsZUZhY3RvcjsgLy8gMCBtZWFu
cyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFjdG9yIGlzIHNhdmVkLgorICAgIFdlYkNvcmU6OkludFNp
emUgbV9zYXZlZFNjcm9sbE9mZnNldDsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFsbG93ZWQ7
CiAKICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>