<?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>49904</bug_id>
          
          <creation_ts>2010-11-22 05:12:07 -0800</creation_ts>
          <short_desc>[GTK] Add a signal to allow applications to handle its own context menu</short_desc>
          <delta_ts>2012-03-23 02:41:27 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>67660</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>312300</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-11-22 05:12:07 -0800</bug_when>
    <thetext>In addition to the populate-popup signal that allows to add custom options to the default context menu, it would be useful to have a signal that allows application to handle its own context menu. We only need to provide the hit test result and the coordinates to the application. I would allow us to get rid of the enable-default-context-menu setting. See also ephy bug: https://bugzilla.gnome.org/show_bug.cgi?id=608491</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312303</commentid>
    <comment_count>1</comment_count>
      <attachid>74543</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-11-22 05:16:48 -0800</bug_when>
    <thetext>Created attachment 74543
Add WebKitWebView::context-menu signal

Note that this change is compatible with the current code and doesn&apos;t break any application using the default context menu or its own one, since the default handler returns FALSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312305</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-22 05:18:51 -0800</bug_when>
    <thetext>Attachment 74543 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/gtk/ChangeLog&apos;, u&apos;WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;WebKit/gtk/webkit/webkitwebview.h&apos;, u&apos;WebKit/gtk/webkitmarshal.list&apos;]&quot; exit_code: 1
WebKit/gtk/webkit/webkitwebview.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/gtk/webkit/webkitwebview.h:131:  Extra space between gint and x  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:132:  Extra space between gint and y  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:133:  Extra space between gboolean and keyboard_mode  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:134:  Extra space between WebKitHitTestResult and *hit_test_result  [whitespace/declaration] [3]
Total errors found: 5 in 4 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>314367</commentid>
    <comment_count>3</comment_count>
      <attachid>75018</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-11-29 05:44:23 -0800</bug_when>
    <thetext>Created attachment 75018
Updated patch to apply cleanly in current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314369</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-29 05:46:37 -0800</bug_when>
    <thetext>Attachment 75018 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/gtk/ChangeLog&apos;, u&apos;WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;WebKit/gtk/webkit/webkitwebview.h&apos;, u&apos;WebKit/gtk/webkitmarshal.list&apos;]&quot; exit_code: 1
WebKit/gtk/webkit/webkitwebview.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/gtk/webkit/webkitwebview.h:144:  Extra space between gint and x  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:145:  Extra space between gint and y  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:146:  Extra space between gboolean and keyboard_mode  [whitespace/declaration] [3]
WebKit/gtk/webkit/webkitwebview.h:147:  Extra space between WebKitHitTestResult and *hit_test_result  [whitespace/declaration] [3]
Total errors found: 5 in 4 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>317523</commentid>
    <comment_count>5</comment_count>
      <attachid>75018</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-12-06 03:38:10 -0800</bug_when>
    <thetext>Comment on attachment 75018
Updated patch to apply cleanly in current git master

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

A few comments: in general, I like the patch. Epiphany replaces the context menu completely by using a different technique, though: handling the right-clicks that should cause a context menu to appear itself, and then showing the menu it creates if the page doesn&apos;t claim the right click. That said, it was a pain to get the behaviour right, and having a separate signal could make life simpler for other applications, so +1 from me. I&apos;d like to hear what Xan thinks, though.

&gt; WebKit/gtk/webkit/webkitwebview.h:147
&gt; +    gboolean                   (*context_menu)            (WebKitWebView        *web_view,
&gt; +                                                           gint                  x,
&gt; +                                                           gint                  y,
&gt; +                                                           gboolean              keyboard_mode,
&gt; +                                                           WebKitHitTestResult  *hit_test_result);

This breaks ABI, I would suggest adding the signal and avoiding the virtual method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317531</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-06 03:54:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 75018 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75018&amp;action=review
&gt; 
&gt; A few comments: in general, I like the patch. Epiphany replaces the context menu completely by using a different technique, though: handling the right-clicks that should cause a context menu to appear itself, and then showing the menu it creates if the page doesn&apos;t claim the right click. That said, it was a pain to get the behaviour right, and having a separate signal could make life simpler for other applications, so +1 from me. I&apos;d like to hear what Xan thinks, though.
&gt; 
&gt; &gt; WebKit/gtk/webkit/webkitwebview.h:147
&gt; &gt; +    gboolean                   (*context_menu)            (WebKitWebView        *web_view,
&gt; &gt; +                                                           gint                  x,
&gt; &gt; +                                                           gint                  y,
&gt; &gt; +                                                           gboolean              keyboard_mode,
&gt; &gt; +                                                           WebKitHitTestResult  *hit_test_result);
&gt; 
&gt; This breaks ABI, I would suggest adding the signal and avoiding the virtual method.

I use the default handler to return FALSE when the client doesn&apos;t connect to the signal to make current clients&apos; code compatible. We can use one fo the reserved paddings.

See also ephy bug: https://bugzilla.gnome.org/show_bug.cgi?id=608491</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321095</commentid>
    <comment_count>7</comment_count>
      <attachid>76383</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-13 07:00:30 -0800</bug_when>
    <thetext>Created attachment 76383
New patch rebased to current git master

Signals returning boolean always return FALSE when no callbacks are connected, so it&apos;s safe to remove the vfunc from the class structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321924</commentid>
    <comment_count>8</comment_count>
      <attachid>76383</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-14 05:46:05 -0800</bug_when>
    <thetext>Comment on attachment 76383
New patch rebased to current git master

This looks good to me, so 1/2 r+. You need another reviewer to give the final r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321967</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-14 07:58:15 -0800</bug_when>
    <thetext>The context menu signal + setting is already far too complex. I&apos;m not a fan of adding another signal entirely. This patch is very close to handling every use case we need for context menus. 

The changes that make sense to me:
1. Have the signal carry a GList of default menu items. Users can modify the list to modify what the default signal handler uses for the menu.
2. Deprecate the existing context menu setting and signal.
3. Pass the actual DOM node instead of the hit test result. The DOM node carries more useful information and makes sense even for keyboard activation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321981</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-14 08:28:33 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; The context menu signal + setting is already far too complex. I&apos;m not a fan of adding another signal entirely. This patch is very close to handling every use case we need for context menus. 

close? which use case is not handled? I see 4 uses cases:

- Apps that don&apos;t care at all about the context menu and want webkit to show its default context menu. In this case just enable the default context menu setting.
- Apps tha want to add just a few custom options to the context menu that are not already handled by the default context menu. In this case just enabled the default context menu setting and connect to the populate signal to add the custom options to the default menu.
- Apps that want to handle the whole menu by their own. This is the case of epiphany. It disables the default context menu and creates its own, with the options handled by the default context menu and some others. In this case connect to contex-menu signal, show the menu and return TRUE to not handle the default context menu.
- Apps that don&apos;t want any context menu at all, not even the default one. They simply connect to context-menu and return TRUE without doing anything else.

&gt; The changes that make sense to me:
&gt; 1. Have the signal carry a GList of default menu items. Users can modify the list to modify what the default signal handler uses for the menu.

what would be the id to know whether an item is the same you want to use? the label of the menu item? 

&gt; 2. Deprecate the existing context menu setting and signal.

how would you handle the case of applications (like ephy) that want to handle its own context menu?You are assuming apps want a menu to fill, but some apps have their own menu like the ephy one, created with GtkUIManager using a placeholder menu item to fill. 

&gt; 3. Pass the actual DOM node instead of the hit test result. The DOM node carries more useful information and makes sense even for keyboard activation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321985</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-14 08:46:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; The context menu signal + setting is already far too complex. I&apos;m not a fan of adding another signal entirely. This patch is very close to handling every use case we need for context menus. 
&gt; 
&gt; close? which use case is not handled? I see 4 uses cases:
&gt; 

He means it&apos;s very close to handling all cases only with this signal. Obviously all possible cases are already handled with all the signals + the setting. FWIW I&apos;m not really a fan of the GList API and I think a setting makes things easier for some common cases, but I guess that&apos;s up for debate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321987</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-14 08:50:49 -0800</bug_when>
    <thetext>
&gt; He means it&apos;s very close to handling all cases only with this signal. Obviously all possible cases are already handled with all the signals + the setting. FWIW I&apos;m not really a fan of the GList API and I think a setting makes things easier for some common cases, but I guess that&apos;s up for debate.

I&apos;m not particularly attached to passing the default menu items with a GList. What would you propose as an alternative? A GtkMenu?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321990</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-14 09:01:09 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; He means it&apos;s very close to handling all cases only with this signal. Obviously all possible cases are already handled with all the signals + the setting. FWIW I&apos;m not really a fan of the GList API and I think a setting makes things easier for some common cases, but I guess that&apos;s up for debate.
&gt; 
&gt; I&apos;m not particularly attached to passing the default menu items with a GList. What would you propose as an alternative? A GtkMenu?

The problem is not whether use a list or any other container, but the items, what would you pass? a GtkMenuItem? how can the user know that a GtkMenuItem is the same menu entry he wanted to add? Now that simplify-context menu patch was committed, menu items have a GtkAction associated, we might use a well known id for the actions and use gtk_activatable_get_related_action() and gtk_action_get_name(). We would have to document the names of the actions handled by the default context menu. This is a lot of more complex than adding a new signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321992</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-14 09:07:15 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; The context menu signal + setting is already far too complex. I&apos;m not a fan of adding another signal entirely. This patch is very close to handling every use case we need for context menus. 
&gt; &gt; 
&gt; &gt; close? which use case is not handled? I see 4 uses cases:
&gt; &gt; 
&gt; 
&gt; He means it&apos;s very close to handling all cases only with this signal.

I think both signals are complementary to cover different test cases. 

&gt; Obviously all possible cases are already handled with all the signals + the setting.

Ok, sorry, I misunderstood it.

&gt; FWIW I&apos;m not really a fan of the GList API and I think a setting makes things easier for some common cases, but I guess that&apos;s up for debate.

Passing a list of items, using a GList or any other container, would mean the client would have to iterate the list comparing every item in the list with every item he wanted to add to know wehter to add it ro not, assuming we know how to compare the items which is another problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322025</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-14 10:02:40 -0800</bug_when>
    <thetext>(In reply to comment #14)

&gt; I think both signals are complementary to cover different test cases. 

I think API simplicity is the big advantage of having only one signal. Even more confusing is an API where the WebKitWebSettings default context menu setting only affects the old signal. All of this logic can be encapsulated by simply firing one signal. If we&apos;re going to fix the situation, why not fix it all the way?

&gt; Passing a list of items, using a GList or any other container, would mean the client would have to iterate the list comparing every item in the list with every item he wanted to add to know wehter to add it ro not, assuming we know how to compare the items which is another problem.

Right now this is the only way to expose the default menu items to the embedder. We must expose some way for the embedder to both show the input method menu and use a non-default context menu. 

It&apos;s unfortunate that this is so ugly.  At the hackfest we briefly discussed making the order and naming follow API stability rules. If, as you say, there&apos;s an even saner way to do this with the GtkAction API, I think we should do that. Let&apos;s make the API simple and beautiful. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322029</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-14 10:08:01 -0800</bug_when>
    <thetext>Actually, since I&apos;m rallying for this, I can post a modified version of the patch tomorrow which implements what I&apos;m mentioning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322033</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-14 10:19:49 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; 
&gt; &gt; I think both signals are complementary to cover different test cases. 
&gt; 
&gt; I think API simplicity is the big advantage of having only one signal. Even more confusing is an API where the WebKitWebSettings default context menu setting only affects the old signal. All of this logic can be encapsulated by simply firing one signal. If we&apos;re going to fix the situation, why not fix it all the way?

if the problem is the setting, we can have the 4 test cases I mentioned with the two signals without the setting. The problem is that I don&apos;t see how to implement such 4 cases with only one signal. 

&gt; 
&gt; &gt; Passing a list of items, using a GList or any other container, would mean the client would have to iterate the list comparing every item in the list with every item he wanted to add to know wehter to add it ro not, assuming we know how to compare the items which is another problem.
&gt; 
&gt; Right now this is the only way to expose the default menu items to the embedder. We must expose some way for the embedder to both show the input method menu and use a non-default context menu. 
&gt; 
&gt; It&apos;s unfortunate that this is so ugly.  At the hackfest we briefly discussed making the order and naming follow API stability rules. If, as you say, there&apos;s an even saner way to do this with the GtkAction API, I think we should do that. Let&apos;s make the API simple and beautiful. :)

GtkAction has a unique id which is the name, but the API won&apos;t be simpler even less beautiful (but I admit it&apos;s a matter of taste). 
If we go with single signal I would need at least a way to disable the context menu, so that ephy can still has its own context menu and perform a hit test by its own, which is what it currently does, but disabling the context menu we would avoid doing the hit test twice. We would also need API to get the current focused node from ephy to implement the context menu when it&apos;s triggered by the keyboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322035</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-14 10:22:50 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Actually, since I&apos;m rallying for this, I can post a modified version of the patch tomorrow which implements what I&apos;m mentioning.

That would be great, if you could also update the ephy patch to make sure we can still handle the context menu in ephy with the new api:

https://bugzilla.gnome.org/show_bug.cgi?id=608491</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323446</commentid>
    <comment_count>19</comment_count>
      <attachid>76818</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-16 15:09:36 -0800</bug_when>
    <thetext>Created attachment 76818
Suggested changes to the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323623</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-17 00:10:29 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=76818) [details]
&gt; Suggested changes to the patch

Bz doesn&apos;t even allow me to comment the patch, so I&apos;ll copy paste my review here.

&gt;     GtkMenu* menu = GTK_MENU(coreMenu-&gt;platformDescription());
&gt;+    g_object_ref(menu);
&gt;     if (!menu)
&gt;-        return FALSE;
&gt;+        return;

why do you need to ref the menu?, also you are calling g_object_ref(), which is not null safe, before the if (!menu).


&gt;+    PlatformMouseEvent event(location, 
&gt;+                             global,
&gt;+                             RightButton,
&gt;+                             MouseEventPressed,
&gt;+                             0, // clickCount
&gt;+                             false, // shift
&gt;+                             false, // ctrl
&gt;+                             false, // alt
&gt;+                             false, // meta
&gt;+                             gtk_get_current_event_time());
&gt;+
&gt;+    gboolean result = frame-&gt;eventHandler()-&gt;handleMousePressEvent(event);
&gt;+    webkit_web_view_forward_context_menu_event(WEBKIT_WEB_VIEW(widget), frame, event, true);
&gt;+    return result;

how can you know whether the popup menu will be shown or not? this function should return TRUE when a menu was activated, webkit_web_view_forward_context_menu_event has to be boolean to know whether the menu has been handled or not.

&gt; }
&gt; 
&gt; #ifndef GTK_API_VERSION_2
&gt;@@ -853,14 +853,16 @@ static gboolean webkit_web_view_button_press_event(GtkWidget* widget, GdkEventBu
&gt;     priv-&gt;previousClickButton = event-&gt;button;
&gt;     priv-&gt;previousClickTime = eventTime;
&gt; 
&gt;-    if (event-&gt;button == 3)
&gt;-        return webkit_web_view_forward_context_menu_event(webView, PlatformMouseEvent(event));
&gt;-
&gt;     Frame* frame = core(webView)-&gt;mainFrame();
&gt;     if (!frame-&gt;view())
&gt;         return FALSE;
&gt;-
&gt;     gboolean result = frame-&gt;eventHandler()-&gt;handleMousePressEvent(platformEvent);
&gt;+
&gt;+    if (event-&gt;button == 3) {
&gt;+        webkit_web_view_forward_context_menu_event(webView, frame, PlatformMouseEvent(event), false);
&gt;+        return result;

the same here, depending on whether you return TRUE or FALSE the event will be propagated or not, if the menu hasn&apos;t been activated we should return FALSE.


&gt;     /*
&gt;+     * WebKitWebView::context-menu
&gt;+     * @webView: the object which received the signal
&gt;+     * @x: the X coordinate of the position where the context menu should be shown
&gt;+     * @y: the Y coordinate of the position where the context menu should be shown
&gt;+     * @keyboard_mode: %TRUE if the context menu was trigged using the keyboard
&gt;+     * @hit_test_result: a #WebKitHitTestResult with the context of the current position.
&gt;+     * @menu: the default menu for the element this context menu corresponds to
&gt;+     *
&gt;+     * Emitted when a context menu is about to be displayed to give the application a
&gt;+     * chance to create and handle its own context menu. If you only want to add custom
&gt;+     * options to the default context menu you can simply modify the @menu signal
&gt;+     * parameter.
&gt;+     * 
&gt;+     * When keyboard_mode is %TRUE the given coordinates should be used to position the
&gt;+     * popup menu, when the context menu has been triggered by a mouse event you could
&gt;+     * either use the given coordinates or pass %NULL to the #GtkMenuPositionFunc
&gt;+     * parameter of gtk_menu_popup() function.
&gt;+     *
&gt;+     * When the signal is handled and a popup menu has been created by the application,
&gt;+     * %TRUE should be returned. If %FALSE is returned, a popup menu will appears as long
&gt;+     * as the #WebKitWebSettings::enable-default-context-menu setting is active. If you
&gt;+     * don&apos;t want any context menu to be shown, you can simply connect to this signal and
&gt;+     * return %TRUE without doing anything else.
&gt;+     *
&gt;+     * Since: 1.3.8
&gt;+     */
&gt;+    webkit_web_view_signals[CONTEXT_MENU] = g_signal_new(&quot;context-menu&quot;,
&gt;+            G_TYPE_FROM_CLASS(webViewClass),
&gt;+            (GSignalFlags)G_SIGNAL_RUN_LAST,
&gt;+            0,
&gt;+            0, 0,
&gt;+            webkit_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT_OBJECT,
&gt;+            G_TYPE_BOOLEAN, 5,
&gt;+            G_TYPE_INT, G_TYPE_INT, G_TYPE_BOOLEAN,
&gt;+            WEBKIT_TYPE_HIT_TEST_RESULT, GTK_TYPE_MENU);

The signal is still confusing to me, when the user has its own context menu, the menu parameter should be ignored, and when the user wants to add stuff to the menu, x, y, and keyboard_mode params are useless. I still see two different signals for two different use cases (create your own menu, add items to the default one). 
And we still have the problem of how the user knows whether the given menu already has the items he/she wants to add. I agree it would be useful to be able to build a context menu in the application with some options (or submenus) from webkit, like the input method or spell checker submenus, but providing a way to let the users create their own menus rather than modifying the default one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323758</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 07:18:46 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)

Thanks for your comments!

&gt; &gt;+    g_object_ref(menu);
&gt; why do you need to ref the menu?, also you are calling g_object_ref(), which is not null safe, before the if (!menu).

This was left over from an earlier iteration. Removed.

&gt; &gt;+    gboolean result = frame-&gt;eventHandler()-&gt;handleMousePressEvent(event);
&gt; &gt;+    webkit_web_view_forward_context_menu_event(WEBKIT_WEB_VIEW(widget), frame, event, true);
&gt; &gt;+    return result;
&gt; how can you know whether the popup menu will be shown or not? this function should return TRUE when a menu was activated, webkit_web_view_forward_context_menu_event has to be boolean to know whether the menu has been handled or not.

Fixed in both cases!

&gt; &gt;     /*
&gt; &gt;+     * WebKitWebView::context-menu
&gt; &gt;+     * @webView: the object which received the signal
&gt; &gt;+     * @x: the X coordinate of the position where the context menu should be shown
&gt; &gt;+     * @y: the Y coordinate of the position where the context menu should be shown
&gt; &gt;+     * @keyboard_mode: %TRUE if the context menu was trigged using the keyboard
&gt; &gt;+     * @hit_test_result: a #WebKitHitTestResult with the context of the current position.
&gt; &gt;+     * @menu: the default menu for the element this context menu corresponds to
&gt; &gt;+     *
&gt; &gt;+     * Emitted when a context menu is about to be displayed to give the application a
&gt; &gt;+     * chance to create and handle its own context menu. If you only want to add custom
&gt; &gt;+     * options to the default context menu you can simply modify the @menu signal
&gt; &gt;+     * parameter.
&gt; &gt;+     * 
&gt; &gt;+     * When keyboard_mode is %TRUE the given coordinates should be used to position the
&gt; &gt;+     * popup menu, when the context menu has been triggered by a mouse event you could
&gt; &gt;+     * either use the given coordinates or pass %NULL to the #GtkMenuPositionFunc
&gt; &gt;+     * parameter of gtk_menu_popup() function.
&gt; &gt;+     *
&gt; &gt;+     * When the signal is handled and a popup menu has been created by the application,
&gt; &gt;+     * %TRUE should be returned. If %FALSE is returned, a popup menu will appears as long
&gt; &gt;+     * as the #WebKitWebSettings::enable-default-context-menu setting is active. If you
&gt; &gt;+     * don&apos;t want any context menu to be shown, you can simply connect to this signal and
&gt; &gt;+     * return %TRUE without doing anything else.
&gt; &gt;+     *
&gt; &gt;+     * Since: 1.3.8
&gt; &gt;+     */
&gt; &gt;+    webkit_web_view_signals[CONTEXT_MENU] = g_signal_new(&quot;context-menu&quot;,
&gt; &gt;+            G_TYPE_FROM_CLASS(webViewClass),
&gt; &gt;+            (GSignalFlags)G_SIGNAL_RUN_LAST,
&gt; &gt;+            0,
&gt; &gt;+            0, 0,
&gt; &gt;+            webkit_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT_OBJECT,
&gt; &gt;+            G_TYPE_BOOLEAN, 5,
&gt; &gt;+            G_TYPE_INT, G_TYPE_INT, G_TYPE_BOOLEAN,
&gt; &gt;+            WEBKIT_TYPE_HIT_TEST_RESULT, GTK_TYPE_MENU);
&gt; 
&gt; The signal is still confusing to me, when the user has its own context menu, the menu parameter should be ignored, and when the user wants to add stuff to the menu, x, y, and keyboard_mode params are useless. I still see two different signals for two different use cases (create your own menu, add items to the default one). 

A few points: If the user wishes to both display her own menu and re-use the default menu items, having two signals would make it very difficult (and impossible with your version, I think). I think having one signal is easily less confusing than two incompatible signals. I don&apos;t think it&apos;s true that every signal should have only one usecase. 

&gt; And we still have the problem of how the user knows whether the given menu already has the items he/she wants to add. I agree it would be useful to be able to build a context menu in the application with some options (or submenus) from webkit, like the input method or spell checker submenus, but providing a way to let the users create their own menus rather than modifying the default one.

I agree that this practice is a bit ugly, but embedders have already been doing it for quite some. Indeed, every other port takes this approach. Further, it seems like there&apos;s a chance that we can use GtkAction to make this more sane. Epiphany is the only embedder I know that recreates the entire menu. 

In the end, I believe that having 2 or 3 new API points for managing the context menu is ugly as well, and presents the same kind of future-proofing problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323759</commentid>
    <comment_count>22</comment_count>
      <attachid>76876</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 07:19:25 -0800</bug_when>
    <thetext>Created attachment 76876
Patch with suggested fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350636</commentid>
    <comment_count>23</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2011-02-14 06:40:04 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; I agree that this practice is a bit ugly, but embedders have already been doing it for quite some. Indeed, every other port takes this approach. Further, it seems like there&apos;s a chance that we can use GtkAction to make this more sane. Epiphany is the only embedder I know that recreates the entire menu. 

I don&apos;t think it is possible to equally replace the whole menu, that is why Midori still doesn&apos;t do it. It can&apos;t create &apos;Inspect Element&apos;, &apos;Open Frame in New Window&apos; or the input method menu items in the same way. Apart from that I think it is good for consistency to share copying and link context menus instead of re-creating those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392822</commentid>
    <comment_count>24</comment_count>
      <attachid>76383</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-26 15:29:40 -0700</bug_when>
    <thetext>Comment on attachment 76383
New patch rebased to current git master

Going to r- both of these patches until we can resolve these API discussions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462438</commentid>
    <comment_count>25</comment_count>
      <attachid>106400</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-06 02:45:10 -0700</bug_when>
    <thetext>Created attachment 106400
New patch

After talking with Martin about this bug, we thought we could add a new class to handle the context menu and pass that new object as parameter of the new signal. Then I looked again at the patches and I realized we don&apos;t actually need a new class. Following the idea of passing the default context menu widget as a parameter to the signal, the only thing we would need to make menu modification easier is a well know name for every possible menu item, but I think that could be part fo a following patch, since it&apos;s actually another problem that we already have with the populate-popup signal. So, this patch adds a new context-menu signal that passes the default menu, a hit test result and whether it was triggered by keyboard. I&apos;ve added x and y properties to WebKitHitTestResult so that we don&apos;t need to pass x, y as signal parameters, like previous patches did. The hit test result already contains the coordinates (relative ot the view&apos;s window) that the client can use when the menu is triggered by the keyboard to position the menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462440</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 02:47:34 -0700</bug_when>
    <thetext>Attachment 106400 did not pass style-queue:

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

WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/gtk/tests/testhittestresult.c&quot;
Source/WebKit/gtk/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:18:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:22:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:24:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/gtk/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 in 6 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>462442</commentid>
    <comment_count>27</comment_count>
      <attachid>106401</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-06 02:50:25 -0700</bug_when>
    <thetext>Created attachment 106401
Updated patch: untabify changelog to fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462444</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-06 02:57:54 -0700</bug_when>
    <thetext>I updated also the epiphany patch to use this new patch:

https://bugzilla.gnome.org/show_bug.cgi?id=608491#c6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463092</commentid>
    <comment_count>29</comment_count>
      <attachid>106401</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-06 19:36:32 -0700</bug_when>
    <thetext>Comment on attachment 106401
Updated patch: untabify changelog to fix style

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

I really like this patch and I think that we should do something similar for WebKit2. I&apos;m giving the first r+ here, but we need to get another reviewer to agree to this change.

&gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:324
&gt; +    targetFrame = result.targetFrame();
&gt; +    if (targetFrame &amp;&amp; targetFrame-&gt;view()) {
&gt; +        // Convert document coords to widget coords.
&gt; +        point = targetFrame-&gt;view()-&gt;contentsToWindow(result.point());
&gt; +    } else
&gt; +        point = result.point();
&gt; +

Maybe this should be ASSERT(result.targetFrame())? Are there legitimate situations where targetFrame is null?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:316
&gt; +    HitTestRequest request(HitTestRequest::Active);
&gt; +    IntPoint point = frame-&gt;view()-&gt;windowToContents(event.pos());
&gt; +    return frame-&gt;document()-&gt;prepareMouseEvent(request, point, event);

Nice cleanup.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:324
&gt; +    WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
&gt; +    gboolean enableDefaultContextMenu;
&gt; +    g_object_get(settings, &quot;enable-default-context-menu&quot;, &amp;enableDefaultContextMenu, NULL);

I wouldn&apos;t cache settings here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:328
&gt; +static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent&amp; event, bool keyboardMode)

keyboardMode should really be something like triggeredWithKeyboard.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:387
&gt; +    gboolean handled;
&gt; +    g_signal_emit(webView, webkit_web_view_signals[CONTEXT_MENU], 0, defaultMenu, hitTestResult.get(), keyboardMode, &amp;handled);
&gt; +    if (handled)
&gt; +        return TRUE;

We bail out early if there&apos;s no defaultMenu below, so we probably shouldn&apos;t fire this signal if there&apos;s no defaultMenu either, right?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:389
&gt; +    // Return now ff there&apos;s no default context menu or it&apos;s disabled by enable-default-context-menu setting.

ff -&gt; if

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2775
&gt; +     * @keyboard_mode: %TRUE if the context menu was triggered using the keyboard

Instead of keyboard_mode I&apos;d prefer a name like triggered_with_keyboard.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2789
&gt; +     * When the signal is handled and a popup menu has been created by the application,
&gt; +     * %TRUE should be returned. Note that when the context menu is handled by the
&gt; +     * application, the &quot;enable-default-context-menu&quot; setting will be ignored and

I suggest using a more active voice here: &quot;If your application will create and display its own popup menu, %TRUE should be returned.&quot;

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2790
&gt; +     * #WebKitWebView::populate-popup signal won&apos;t be emitted.

missing a &quot;the&quot; at the beginning of the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463193</commentid>
    <comment_count>30</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-07 00:00:06 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 106401 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106401&amp;action=review
&gt; 
&gt; I really like this patch and I think that we should do something similar for WebKit2. I&apos;m giving the first r+ here, but we need to get another reviewer to agree to this change.
&gt; 
&gt; &gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:324
&gt; &gt; +    targetFrame = result.targetFrame();
&gt; &gt; +    if (targetFrame &amp;&amp; targetFrame-&gt;view()) {
&gt; &gt; +        // Convert document coords to widget coords.
&gt; &gt; +        point = targetFrame-&gt;view()-&gt;contentsToWindow(result.point());
&gt; &gt; +    } else
&gt; &gt; +        point = result.point();
&gt; &gt; +
&gt; 
&gt; Maybe this should be ASSERT(result.targetFrame())? Are there legitimate situations where targetFrame is null?

I&apos;m not sure, but we are also checking targetFrame-&gt;view() even when we have a targetFrame.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:316
&gt; &gt; +    HitTestRequest request(HitTestRequest::Active);
&gt; &gt; +    IntPoint point = frame-&gt;view()-&gt;windowToContents(event.pos());
&gt; &gt; +    return frame-&gt;document()-&gt;prepareMouseEvent(request, point, event);
&gt; 
&gt; Nice cleanup.
&gt; 
&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:324
&gt; &gt; +    WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
&gt; &gt; +    gboolean enableDefaultContextMenu;
&gt; &gt; +    g_object_get(settings, &quot;enable-default-context-menu&quot;, &amp;enableDefaultContextMenu, NULL);
&gt; 
&gt; I wouldn&apos;t cache settings here.

Ok.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:328
&gt; &gt; +static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent&amp; event, bool keyboardMode)
&gt; 
&gt; keyboardMode should really be something like triggeredWithKeyboard.

Ok.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:387
&gt; &gt; +    gboolean handled;
&gt; &gt; +    g_signal_emit(webView, webkit_web_view_signals[CONTEXT_MENU], 0, defaultMenu, hitTestResult.get(), keyboardMode, &amp;handled);
&gt; &gt; +    if (handled)
&gt; &gt; +        return TRUE;
&gt; 
&gt; We bail out early if there&apos;s no defaultMenu below, so we probably shouldn&apos;t fire this signal if there&apos;s no defaultMenu either, right?

Because populate-popup doesn&apos;t make sense without a menu, but context-menu can be used to create your own context menu ignoring whether there&apos;s a default one or not. The thing is that we are returning earlier above when context menu controller doesn&apos;t return a context menu, and I think the only situation when we have a context menu, but platform description is NULL is when it has been explicitely released with releasePlatformDescription, and that&apos;s not happening here. I&apos;ll look at this again in detail.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:389
&gt; &gt; +    // Return now ff there&apos;s no default context menu or it&apos;s disabled by enable-default-context-menu setting.
&gt; 
&gt; ff -&gt; if

Ok.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2775
&gt; &gt; +     * @keyboard_mode: %TRUE if the context menu was triggered using the keyboard
&gt; 
&gt; Instead of keyboard_mode I&apos;d prefer a name like triggered_with_keyboard.

I used keyboard_mode for consistency with GTK API, see for example:

http://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-query-tooltip

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2789
&gt; &gt; +     * When the signal is handled and a popup menu has been created by the application,
&gt; &gt; +     * %TRUE should be returned. Note that when the context menu is handled by the
&gt; &gt; +     * application, the &quot;enable-default-context-menu&quot; setting will be ignored and
&gt; 
&gt; I suggest using a more active voice here: &quot;If your application will create and display its own popup menu, %TRUE should be returned.&quot;

Ok.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2790
&gt; &gt; +     * #WebKitWebView::populate-popup signal won&apos;t be emitted.
&gt; 
&gt; missing a &quot;the&quot; at the beginning of the line.

Ok.

Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463235</commentid>
    <comment_count>31</comment_count>
      <attachid>106556</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-07 01:37:14 -0700</bug_when>
    <thetext>Created attachment 106556
Updated patch

Another updated patch with fixes suggested by Martin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463340</commentid>
    <comment_count>32</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-07 07:38:54 -0700</bug_when>
    <thetext>(In reply to comment #30)

&gt; &gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2775
&gt; &gt; &gt; +     * @keyboard_mode: %TRUE if the context menu was triggered using the keyboard
&gt; &gt; 
&gt; &gt; Instead of keyboard_mode I&apos;d prefer a name like triggered_with_keyboard.
&gt; 
&gt; I used keyboard_mode for consistency with GTK API, see for example:

I think maybe the GTK+ API is being a bad example here. I can&apos;t think of any issues with spending a few more characters to make the variable name clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585300</commentid>
    <comment_count>33</comment_count>
      <attachid>106556</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-22 08:10:08 -0700</bug_when>
    <thetext>Comment on attachment 106556
Updated patch

FWIW I agree with Martin regarding the naming, we&apos;re already deviating from the signal name anyway, maybe we can steer GTK+ to that better name with the 4.0 release ;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586187</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-23 02:29:25 -0700</bug_when>
    <thetext>Committed r111843: &lt;http://trac.webkit.org/changeset/111843&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586192</commentid>
    <comment_count>35</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-23 02:41:27 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Committed r111843: &lt;http://trac.webkit.org/changeset/111843&gt;

Sorry, I forgot to update the keyboard_mode, landed now:

http://trac.webkit.org/changeset/111844</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74543</attachid>
            <date>2010-11-22 05:16:48 -0800</date>
            <delta_ts>2010-11-29 05:44:23 -0800</delta_ts>
            <desc>Add WebKitWebView::context-menu signal</desc>
            <filename>context-menu-signal.diff</filename>
            <type>text/plain</type>
            <size>9284</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggYmMwMGI4NS4uOTJiOTY4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0yMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIGEgc2lnbmFsIHRv
IGFsbG93IGFwcGxpY2F0aW9ucyB0byBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1lbnUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTA0CisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChwcmVwYXJlTW91c2VFdmVu
dEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVu
dV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3JlYWxfY29udGV4dF9tZW51KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAg
ICAgICAqIHdlYmtpdG1hcnNoYWwubGlzdDoKKwogMjAxMC0xMS0xOCAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAwZGMxOWYzLi4yZWJjMDFkIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTczLDYgKzE3Myw3IEBAIGVudW0gewog
ICAgIEdFT0xPQ0FUSU9OX1BPTElDWV9ERUNJU0lPTl9DQU5DRUxMRUQsCiAgICAgT05MT0FEX0VW
RU5ULAogICAgIEZSQU1FX0NSRUFURUQsCisgICAgQ09OVEVYVF9NRU5VLAogICAgIExBU1RfU0lH
TkFMCiB9OwogCkBAIC0yNTIsMjMgKzI1MywyOCBAQCBzdGF0aWMgTm9kZSogZ2V0Rm9jdXNlZE5v
ZGUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEludFBvaW50IHBvaW50ID0g
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7CisgICAgcmV0dXJu
IGZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZl
bnQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4
dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGJvb2wga2V5Ym9hcmRNb2RlKQogewogICAgIFBhZ2UqIHBhZ2UgPSBjb3Jl
KHdlYlZpZXcpOwogICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRl
eHRNZW51KCk7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZTsKICAgICBGcmFtZSogbWFpbkZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgZ2Jvb2xlYW4gbW91c2VQcmVzc0V2ZW50UmVzdWx0
ID0gRkFMU0U7CisgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCA9IDA7CiAK
ICAgICBpZiAoIW1haW5GcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAg
ICBtYWluRnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgaWYg
KHBhZ2UtPmZyYW1lQ291bnQoKSkgewotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwotICAgICAgICBJbnRQb2ludCBwb2ludCA9IG1haW5GcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAgICAgICAgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtYWluRnJhbWUtPmRvY3VtZW50KCktPnByZXBh
cmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBvaW50LCBldmVudCk7Ci0KKyAgICAgICAgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKG1haW5G
cmFtZSwgZXZlbnQpOwogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBFdmVudEhhbmRsZXI6
OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtZXYudGFyZ2V0Tm9kZSgpKTsKICAgICAgICAgaWYgKCF0
YXJnZXRGcmFtZSkKICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOwpAQCAtMjc4
LDEzICsyODQsMjkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2Nv
bnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWUKICAgICAgICAgICAgIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUodGFyZ2V0RnJhbWUpOwogICAgICAg
ICAgICAgZm9jdXNlZEZyYW1lID0gdGFyZ2V0RnJhbWU7CiAgICAgICAgIH0KKworICAgICAgICBp
ZiAoZm9jdXNlZEZyYW1lID09IG1haW5GcmFtZSkKKyAgICAgICAgICAgIGhpdFRlc3RSZXN1bHQg
PSBraXQobWV2LmhpdFRlc3RSZXN1bHQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZvY3VzZWRG
cmFtZSA9IG1haW5GcmFtZTsKIAorICAgIGlmICghaGl0VGVzdFJlc3VsdCkgeworICAgICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJh
bWUoZm9jdXNlZEZyYW1lLCBldmVudCk7CisgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBraXQobWV2
LmhpdFRlc3RSZXN1bHQoKSk7CisgICAgfQorCisgICAgLy8gRW1pdCB0aGUgY29udGV4dC1tZW51
IHNpZ25hbAorICAgIGdib29sZWFuIGhhbmRsZWQ7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3
LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDT05URVhUX01FTlVdLCAwLCBldmVudC5nbG9iYWxY
KCksIGV2ZW50Lmdsb2JhbFkoKSwga2V5Ym9hcmRNb2RlLCBoaXRUZXN0UmVzdWx0LCAmaGFuZGxl
ZCk7CisgICAgZ19vYmplY3RfdW5yZWYoaGl0VGVzdFJlc3VsdCk7CisgICAgaWYgKGhhbmRsZWQp
IHsKKyAgICAgICAgLy8gVXNlciBoYXMgYWxyZWFkeSBzaG93biB0aGUgbWVudS4KKyAgICAgICAg
cmV0dXJuIFRSVUU7CisgICAgfQorCiAgICAgaWYgKGZvY3VzZWRGcmFtZS0+dmlldygpICYmIGZv
Y3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCkp
CiAgICAgICAgIG1vdXNlUHJlc3NFdmVudFJlc3VsdCA9IFRSVUU7CiAKLQogICAgIGJvb2wgaGFu
ZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51
RXZlbnQoZXZlbnQpOwogICAgIGlmICghaGFuZGxlZEV2ZW50KQogICAgICAgICByZXR1cm4gRkFM
U0U7CkBAIC00MDcsNyArNDI5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19w
b3B1cF9tZW51X2hhbmRsZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbCwgUmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50
X3RpbWUoKSk7CiAKLSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9t
ZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCk7CisgICAgcmV0dXJuIHdl
YmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVco
d2lkZ2V0KSwgZXZlbnQsIHRydWUpOwogfQogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCkBA
IC04MDMsNyArODI1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19idXR0b25f
cHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnUKICAgICBwcml2LT5wcmV2
aW91c0NsaWNrVGltZSA9IGV2ZW50VGltZTsKIAogICAgIGlmIChldmVudC0+YnV0dG9uID09IDMp
Ci0gICAgICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZl
bnQod2ViVmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIHJldHVybiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZv
cm1Nb3VzZUV2ZW50KGV2ZW50KSwgZmFsc2UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+dmlldygpKQpAQCAtMTMwNSw2
ICsxMzI3LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1
cnNvciAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrTW92CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb250ZXh0X21lbnUoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgZ2ludCB4LCBnaW50IHksIGdib29sZWFuIGtleWJvYXJkTW9k
ZSwgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKK3sKKyAgICByZXR1cm4gRkFM
U0U7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI2MDQs
NiArMjYzMSw0MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dF
Ql9GUkFNRSk7CiAKICAgICAvKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudQor
ICAgICAqIEB3ZWJWaWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKKyAg
ICAgKiBAeDogdGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGNvbnRl
eHQgbWVudSBzaG91bGQgYmUgc2hvd24KKyAgICAgKiBAeTogdGhlIFkgY29vcmRpbmF0ZSBvZiB0
aGUgcG9zaXRpb24gd2hlcmUgdGhlIGNvbnRleHQgbWVudSBzaG91bGQgYmUgc2hvd24KKyAgICAg
KiBAa2V5Ym9hcmRfbW9kZTogJVRSVUUgaWYgdGhlIGNvbnRleHQgbWVudSB3YXMgdHJpZ2dlZCB1
c2luZyB0aGUga2V5Ym9hcmQKKyAgICAgKiBAaGl0X3Rlc3RfcmVzdWx0OiBhICNXZWJLaXRIaXRU
ZXN0UmVzdWx0IHdpdGggdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgICAg
ICoKKyAgICAgKiBFbW1pdGVkIHdoZW4gYSBjb250ZXh0IG1lbnUgaXMgYWJvdXQgdG8gYmUgZGlz
cGxheWVkIHRvIGdpdmUgdGhlIGFwcGxpY2F0aW9uCisgICAgICogYSBjaGFuY2UgdG8gY3JlYXRl
IGFuZCBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1lbnUuIElmIHlvdSBvbmx5IHdhbnQgdG8gYWRk
IGN1c3RvbQorICAgICAqIG9wdGlvbnMgdG8gdGhlIGRlZmF1bHQgY29udGV4dCBtZW51IHlvdSBz
aG91bGQgdXNlICNXZWJLaXRXZWJWaWV3Ojpwb3B1bGF0ZS1wb3B1cAorICAgICAqIGluc3RlYWQu
IFdoZW4ga2V5Ym9hcmRfbW9kZSBpcyAlVFJVRSB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgc2hvdWxk
IGJlIHVzZWQgdG8KKyAgICAgKiBwb3NpdGlvbiB0aGUgcG9wdXAgbWVudSwgd2hlbiB0aGUgY29u
dGV4dCBtZW51IGhhcyBiZWVuIHRyaWdnZXJlZCBieSBhIG1vdXNlIGV2ZW50CisgICAgICogeW91
IGNvdWxkIGVpdGhlciB1c2UgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIG9yIHBhc3MgJU5VTEwgdG8g
dGhlICNHdGtNZW51UG9zaXRpb25GdW5jCisgICAgICogcGFyYW1ldGVyIG9mIGd0a19tZW51X3Bv
cHVwKCkgZnVuY3Rpb24uCisgICAgICogV2hlbiB0aGUgc2lnbmFsIGlzIGhhbmRsZWQgYW5kIGEg
cG9wdXAgbWVudSBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwKKyAgICAgKiAl
VFJVRSBzaG91bGQgYmUgcmV0dXJuZWQuIE5vdGUgdGhhdCB3aGVuIHRoZSBjb250ZXh0IG1lbnUg
aXMgaGFuZGxlZCBieSB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbiwgdGhlICJlbmFibGUtZGVmYXVs
dC1jb250ZXh0LW1lbnUiIHNldHRpbmcgd2lsbCBiZSBpZ25vcmVkIGFuZAorICAgICAqICNXZWJL
aXRXZWJWaWV3Ojpwb3B1bGF0ZS1wb3B1cCBzaWduYWwgd29uJ3QgYmUgZW1pdHRlZC4KKyAgICAg
KiBJZiB5b3UgZG9uJ3Qgd2FudCBhbnkgY29udGV4dCBtZW51IHRvIGJlIHNob3duLCB5b3UgY2Fu
IHNpbXBseSBjb25uZWN0IHRvIHRoaXMgc2lnbmFsCisgICAgICogYW5kIHJldHVybiAlVFJVRSB3
aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4zLjcK
KyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDT05URVhUX01FTlVdID0gZ19z
aWduYWxfbmV3KCJjb250ZXh0LW1lbnUiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
d2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjb250
ZXh0X21lbnUpLAorICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX0lOVF9JTlRfQk9PTEVBTl9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgNCwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIEdfVFlQRV9JTlQsIEdfVFlQ
RV9CT09MRUFOLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxUKTsKKwor
ICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAgICAq
LwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3Jl
YWxfY3JlYXRlX3dlYl92aWV3OwpAQCAtMjYyMyw2ICsyNjg0LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3Mp
CiAgICAgd2ViVmlld0NsYXNzLT51bmRvID0gd2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbzsKICAg
ICB3ZWJWaWV3Q2xhc3MtPnJlZG8gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvOwogICAgIHdl
YlZpZXdDbGFzcy0+bW92ZV9jdXJzb3IgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNv
cjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmNvbnRleHRfbWVudSA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X2NvbnRleHRfbWVudTsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0
X3dlYl92aWV3X2Rpc3Bvc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggOWRmYjY1
NC4uZWZlNzIzZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5o
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMTI3LDYgKzEyNywx
MSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jvb2xlYW4gICAgICAgICAg
ICAgICAgICAgKCogbW92ZV9jdXJzb3IpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR3RrTW92ZW1lbnRTdGVwICAgICAgIHN0ZXAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAg
ICAgICAgICAgICBjb3VudCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCpjb250
ZXh0X21lbnUpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2ludCAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICB5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAga2V5Ym9hcmRfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3Vs
dCAgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKICAgICAvKgogICAgICAqIGludGVybmFsCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1dlYktpdC9ndGsvd2Via2l0bWFy
c2hhbC5saXN0CmluZGV4IDAyNmE4YWYuLmI3Njk3NWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CkBA
IC0xLDUgKzEsNiBAQAogQk9PTEVBTjpFTlVNLElOVAogQk9PTEVBTjpJTlQsSU5ULFNUUklORwor
Qk9PTEVBTjpJTlQsSU5ULEJPT0xFQU4sT0JKRUNUCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpP
QkpFQ1QsT0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsT0JKRUNULE9CSkVDVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75018</attachid>
            <date>2010-11-29 05:44:23 -0800</date>
            <delta_ts>2010-12-17 07:19:18 -0800</delta_ts>
            <desc>Updated patch to apply cleanly in current git master</desc>
            <filename>context-menu-signal.diff</filename>
            <type>text/plain</type>
            <size>9440</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggOTBhZWFhNC4uNzU5MTE5OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMC0xMS0yOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIGEgc2lnbmFsIHRv
IGFsbG93IGFwcGxpY2F0aW9ucyB0byBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1lbnUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTA0CisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChwcmVwYXJlTW91c2VFdmVu
dEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVu
dV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3JlYWxfY29udGV4dF9tZW51KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAg
ICAgICAqIHdlYmtpdG1hcnNoYWwubGlzdDoKKworMjAxMC0xMS0yOSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExv
cGV6LgogCiAgICAgICAgIFtHdGtdIFRvb2x0aXBzIHNob3VsZCBiZSBmdWxseSBrZXlib2FyZCBh
Y2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDNlODg4ZjguLmU4
NTIzNTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0xNzMsNiArMTczLDcg
QEAgZW51bSB7CiAgICAgR0VPTE9DQVRJT05fUE9MSUNZX0RFQ0lTSU9OX0NBTkNFTExFRCwKICAg
ICBPTkxPQURfRVZFTlQsCiAgICAgRlJBTUVfQ1JFQVRFRCwKKyAgICBDT05URVhUX01FTlUsCiAK
ICAgICBTSE9VTERfQkVHSU5fRURJVElORywKICAgICBTSE9VTERfRU5EX0VESVRJTkcsCkBAIC0y
NjUsMjMgKzI2NiwyOCBAQCBzdGF0aWMgTm9kZSogZ2V0Rm9jdXNlZE5vZGUoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zv
cndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEludFBvaW50IHBvaW50ID0gZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVu
dCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZlbnQpOworfQorCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGJv
b2wga2V5Ym9hcmRNb2RlKQogewogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOwogICAg
IHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAg
RnJhbWUqIGZvY3VzZWRGcmFtZTsKICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZy
YW1lKCk7CiAgICAgZ2Jvb2xlYW4gbW91c2VQcmVzc0V2ZW50UmVzdWx0ID0gRkFMU0U7CisgICAg
V2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCA9IDA7CiAKICAgICBpZiAoIW1haW5G
cmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBtYWluRnJhbWUtPnZp
ZXcoKS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgaWYgKHBhZ2UtPmZyYW1lQ291
bnQoKSkgewotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUpOwotICAgICAgICBJbnRQb2ludCBwb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyBtZXYgPSBtYWluRnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIHBvaW50LCBldmVudCk7Ci0KKyAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKG1haW5GcmFtZSwgZXZlbnQpOwog
ICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFy
Z2V0Tm9kZShtZXYudGFyZ2V0Tm9kZSgpKTsKICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAg
ICAgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOwpAQCAtMjkxLDEzICsyOTcsMjkgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVu
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWUKICAgICAgICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5zZXRGb2N1c2VkRnJhbWUodGFyZ2V0RnJhbWUpOwogICAgICAgICAgICAgZm9jdXNlZEZy
YW1lID0gdGFyZ2V0RnJhbWU7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoZm9jdXNlZEZyYW1l
ID09IG1haW5GcmFtZSkKKyAgICAgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBraXQobWV2LmhpdFRl
c3RSZXN1bHQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZvY3VzZWRGcmFtZSA9IG1haW5GcmFt
ZTsKIAorICAgIGlmICghaGl0VGVzdFJlc3VsdCkgeworICAgICAgICBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJhbWUoZm9jdXNlZEZyYW1l
LCBldmVudCk7CisgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBraXQobWV2LmhpdFRlc3RSZXN1bHQo
KSk7CisgICAgfQorCisgICAgLy8gRW1pdCB0aGUgY29udGV4dC1tZW51IHNpZ25hbAorICAgIGdi
b29sZWFuIGhhbmRsZWQ7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3Zp
ZXdfc2lnbmFsc1tDT05URVhUX01FTlVdLCAwLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2Jh
bFkoKSwga2V5Ym9hcmRNb2RlLCBoaXRUZXN0UmVzdWx0LCAmaGFuZGxlZCk7CisgICAgZ19vYmpl
Y3RfdW5yZWYoaGl0VGVzdFJlc3VsdCk7CisgICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgLy8g
VXNlciBoYXMgYWxyZWFkeSBzaG93biB0aGUgbWVudS4KKyAgICAgICAgcmV0dXJuIFRSVUU7Cisg
ICAgfQorCiAgICAgaWYgKGZvY3VzZWRGcmFtZS0+dmlldygpICYmIGZvY3VzZWRGcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCkpCiAgICAgICAgIG1vdXNl
UHJlc3NFdmVudFJlc3VsdCA9IFRSVUU7CiAKLQogICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9j
dXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOwog
ICAgIGlmICghaGFuZGxlZEV2ZW50KQogICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC00MjAsNyAr
NDQyLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRs
ZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9j
YXRpb24sIGdsb2JhbCwgUmlnaHRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CiAKLSAg
ICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJ
VF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCk7CisgICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19m
b3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQs
IHRydWUpOwogfQogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCkBAIC04MTYsNyArODM4LDcg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnUKICAgICBwcml2LT5wcmV2aW91c0NsaWNrVGltZSA9
IGV2ZW50VGltZTsKIAogICAgIGlmIChldmVudC0+YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVy
biB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxh
dGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdf
Zm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2
ZW50KSwgZmFsc2UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+dmlldygpKQpAQCAtMTMxOCw2ICsxMzQwLDExIEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR3RrTW92CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb250ZXh0X21lbnUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgZ2ludCB4LCBnaW50IHksIGdib29sZWFuIGtleWJvYXJkTW9kZSwgV2ViS2l0SGl0VGVz
dFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI3MTYsNiArMjc0Myw0MCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsIEdf
VFlQRV9OT05FLCAwKTsKIAogICAgIC8qCisgICAgICogV2ViS2l0V2ViVmlldzo6Y29udGV4dC1t
ZW51CisgICAgICogQHdlYlZpZXc6IHRoZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25h
bAorICAgICAqIEB4OiB0aGUgWCBjb29yZGluYXRlIG9mIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUg
Y29udGV4dCBtZW51IHNob3VsZCBiZSBzaG93bgorICAgICAqIEB5OiB0aGUgWSBjb29yZGluYXRl
IG9mIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgY29udGV4dCBtZW51IHNob3VsZCBiZSBzaG93bgor
ICAgICAqIEBrZXlib2FyZF9tb2RlOiAlVFJVRSBpZiB0aGUgY29udGV4dCBtZW51IHdhcyB0cmln
Z2VkIHVzaW5nIHRoZSBrZXlib2FyZAorICAgICAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktp
dEhpdFRlc3RSZXN1bHQgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbi4K
KyAgICAgKgorICAgICAqIEVtbWl0ZWQgd2hlbiBhIGNvbnRleHQgbWVudSBpcyBhYm91dCB0byBi
ZSBkaXNwbGF5ZWQgdG8gZ2l2ZSB0aGUgYXBwbGljYXRpb24KKyAgICAgKiBhIGNoYW5jZSB0byBj
cmVhdGUgYW5kIGhhbmRsZSBpdHMgb3duIGNvbnRleHQgbWVudS4gSWYgeW91IG9ubHkgd2FudCB0
byBhZGQgY3VzdG9tCisgICAgICogb3B0aW9ucyB0byB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnUg
eW91IHNob3VsZCB1c2UgI1dlYktpdFdlYlZpZXc6OnBvcHVsYXRlLXBvcHVwCisgICAgICogaW5z
dGVhZC4gV2hlbiBrZXlib2FyZF9tb2RlIGlzICVUUlVFIHRoZSBnaXZlbiBjb29yZGluYXRlcyBz
aG91bGQgYmUgdXNlZCB0bworICAgICAqIHBvc2l0aW9uIHRoZSBwb3B1cCBtZW51LCB3aGVuIHRo
ZSBjb250ZXh0IG1lbnUgaGFzIGJlZW4gdHJpZ2dlcmVkIGJ5IGEgbW91c2UgZXZlbnQKKyAgICAg
KiB5b3UgY291bGQgZWl0aGVyIHVzZSB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgb3IgcGFzcyAlTlVM
TCB0byB0aGUgI0d0a01lbnVQb3NpdGlvbkZ1bmMKKyAgICAgKiBwYXJhbWV0ZXIgb2YgZ3RrX21l
bnVfcG9wdXAoKSBmdW5jdGlvbi4KKyAgICAgKiBXaGVuIHRoZSBzaWduYWwgaXMgaGFuZGxlZCBh
bmQgYSBwb3B1cCBtZW51IGhhcyBiZWVuIGNyZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLAorICAg
ICAqICVUUlVFIHNob3VsZCBiZSByZXR1cm5lZC4gTm90ZSB0aGF0IHdoZW4gdGhlIGNvbnRleHQg
bWVudSBpcyBoYW5kbGVkIGJ5IHRoZQorICAgICAqIGFwcGxpY2F0aW9uLCB0aGUgImVuYWJsZS1k
ZWZhdWx0LWNvbnRleHQtbWVudSIgc2V0dGluZyB3aWxsIGJlIGlnbm9yZWQgYW5kCisgICAgICog
I1dlYktpdFdlYlZpZXc6OnBvcHVsYXRlLXBvcHVwIHNpZ25hbCB3b24ndCBiZSBlbWl0dGVkLgor
ICAgICAqIElmIHlvdSBkb24ndCB3YW50IGFueSBjb250ZXh0IG1lbnUgdG8gYmUgc2hvd24sIHlv
dSBjYW4gc2ltcGx5IGNvbm5lY3QgdG8gdGhpcyBzaWduYWwKKyAgICAgKiBhbmQgcmV0dXJuICVU
UlVFIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAx
LjMuNworICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0NPTlRFWFRfTUVOVV0g
PSBnX3NpZ25hbF9uZXcoImNvbnRleHQtbWVudSIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9D
TEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncylHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3Ms
IGNvbnRleHRfbWVudSksCisgICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Vi
a2l0X21hcnNoYWxfQk9PTEVBTl9fSU5UX0lOVF9CT09MRUFOX09CSkVDVCwKKyAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOLCA0LAorICAgICAgICAgICAgR19UWVBFX0lOVCwgR19UWVBFX0lOVCwg
R19UWVBFX0JPT0xFQU4sCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQp
OworCisgICAgLyoKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAg
ICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CkBAIC0yNzM2LDYgKzI3OTcsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdD
bGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPnJlZG8gPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRv
OwogICAgIHdlYlZpZXdDbGFzcy0+bW92ZV9jdXJzb3IgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9t
b3ZlX2N1cnNvcjsKICAgICB3ZWJWaWV3Q2xhc3MtPnNob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlv
biA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbjsKKyAg
ICB3ZWJWaWV3Q2xhc3MtPmNvbnRleHRfbWVudSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnRl
eHRfbWVudTsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
Uyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92
aWV3X2Rpc3Bvc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggY2Y4ZTY2OS4uZGZj
Mzg1MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMTQwLDYgKzE0MCwxMSBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAg
ICAgKCogbW92ZV9jdXJzb3IpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3RrTW92ZW1lbnRTdGVwICAgICAgIHN0ZXAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAg
ICAgICBjb3VudCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCpjb250ZXh0X21l
bnUpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAg
ICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh
biAgICAgICAgICAgICAga2V5Ym9hcmRfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgKmhp
dF90ZXN0X3Jlc3VsdCk7CiAKICAgICAvKgogICAgICAqIGludGVybmFsCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5s
aXN0CmluZGV4IDUzNzJjNTcuLmQ4YWY4YTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
bWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CkBAIC0xLDUg
KzEsNiBAQAogQk9PTEVBTjpFTlVNLElOVAogQk9PTEVBTjpJTlQsSU5ULFNUUklORworQk9PTEVB
TjpJTlQsSU5ULEJPT0xFQU4sT0JKRUNUCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpPQkpFQ1Qs
T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsRU5VTQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76383</attachid>
            <date>2010-12-13 07:00:30 -0800</date>
            <delta_ts>2011-09-06 02:45:10 -0700</delta_ts>
            <desc>New patch rebased to current git master</desc>
            <filename>context-menu3.diff</filename>
            <type>text/plain</type>
            <size>7389</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggOWQzM2IyMy4uMzhhNGZkNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxMC0xMi0xMyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIGEgc2lnbmFsIHRv
IGFsbG93IGFwcGxpY2F0aW9ucyB0byBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1lbnUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTA0CisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChwcmVwYXJlTW91c2VFdmVu
dEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVu
dV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIHdlYmtpdG1hcnNoYWwubGlz
dDoKKworMjAxMC0xMi0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgogCiAgICAgICAgIFtHVEtdIERv
IG5vdCB1c2UgR0VUX1BSSVZBVEUgbWFjcm9zCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CmluZGV4IGZiZjE0Y2QuLjEwYjYxN2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CkBAIC0xOTgsNiArMTk4LDcgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVX
UE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklC
VVRFU19DSEFOR0VELAorICAgIENPTlRFWFRfTUVOVSwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpA
QCAtMjg1LDIzICsyODYsMjggQEAgc3RhdGljIHZvaWQgY29udGV4dE1lbnVJdGVtQWN0aXZhdGVk
KEd0a01lbnVJdGVtKiBpdGVtLCBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGMKICAgICBjb250cm9s
bGVyLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgmY29udGV4dEl0ZW0pOwogfQogCi1zdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCitzdGF0
aWMgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1l
KEZyYW1lKiBmcmFtZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEludFBv
aW50IHBvaW50ID0gZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7
CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0
LCBwb2ludCwgZXZlbnQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zv
cndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGJvb2wga2V5Ym9hcmRNb2RlKQogewogICAgIFBhZ2Uq
IHBhZ2UgPSBjb3JlKHdlYlZpZXcpOwogICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigp
LT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZTsKICAgICBGcmFt
ZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgZ2Jvb2xlYW4gbW91c2VQcmVz
c0V2ZW50UmVzdWx0ID0gRkFMU0U7CisgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJl
c3VsdCA9IDA7CiAKICAgICBpZiAoIW1haW5GcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4g
RkFMU0U7CiAKICAgICBtYWluRnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3Io
KSk7CiAgICAgaWYgKHBhZ2UtPmZyYW1lQ291bnQoKSkgewotICAgICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwotICAgICAgICBJbnRQb2ludCBwb2lu
dCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAg
ICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtYWluRnJhbWUtPmRvY3Vt
ZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBvaW50LCBldmVudCk7Ci0KKyAgICAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZv
ckZyYW1lKG1haW5GcmFtZSwgZXZlbnQpOwogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBF
dmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtZXYudGFyZ2V0Tm9kZSgpKTsKICAg
ICAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZy
YW1lOwpAQCAtMzExLDEzICszMTcsMjkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWUKICAgICAg
ICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUodGFyZ2V0RnJh
bWUpOwogICAgICAgICAgICAgZm9jdXNlZEZyYW1lID0gdGFyZ2V0RnJhbWU7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoZm9jdXNlZEZyYW1lID09IG1haW5GcmFtZSkKKyAgICAgICAgICAgIGhp
dFRlc3RSZXN1bHQgPSBraXQobWV2LmhpdFRlc3RSZXN1bHQoKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGZvY3VzZWRGcmFtZSA9IG1haW5GcmFtZTsKIAorICAgIGlmICghaGl0VGVzdFJlc3VsdCkg
eworICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3Vz
ZUV2ZW50Rm9yRnJhbWUoZm9jdXNlZEZyYW1lLCBldmVudCk7CisgICAgICAgIGhpdFRlc3RSZXN1
bHQgPSBraXQobWV2LmhpdFRlc3RSZXN1bHQoKSk7CisgICAgfQorCisgICAgLy8gRW1pdCB0aGUg
Y29udGV4dC1tZW51IHNpZ25hbAorICAgIGdib29sZWFuIGhhbmRsZWQ7CisgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDT05URVhUX01FTlVdLCAwLCBl
dmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwga2V5Ym9hcmRNb2RlLCBoaXRUZXN0UmVz
dWx0LCAmaGFuZGxlZCk7CisgICAgZ19vYmplY3RfdW5yZWYoaGl0VGVzdFJlc3VsdCk7CisgICAg
aWYgKGhhbmRsZWQpIHsKKyAgICAgICAgLy8gVXNlciBoYXMgYWxyZWFkeSBzaG93biB0aGUgbWVu
dS4KKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCiAgICAgaWYgKGZvY3VzZWRGcmFtZS0+
dmlldygpICYmIGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NF
dmVudChldmVudCkpCiAgICAgICAgIG1vdXNlUHJlc3NFdmVudFJlc3VsdCA9IFRSVUU7CiAKLQog
ICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2Vu
ZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOwogICAgIGlmICghaGFuZGxlZEV2ZW50KQogICAgICAg
ICByZXR1cm4gRkFMU0U7CkBAIC00NTAsNyArNDcyLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbCwgUmlnaHRCdXR0b24sIE1v
dXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dldF9j
dXJyZW50X2V2ZW50X3RpbWUoKSk7CiAKLSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2Zvcndh
cmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCk7Cisg
ICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQsIHRydWUpOwogfQogCiAjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCkBAIC04NDksNyArODcxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19idXR0b25fcHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnUKICAg
ICBwcml2LT5wcmV2aW91c0NsaWNrVGltZSA9IGV2ZW50VGltZTsKIAogICAgIGlmIChldmVudC0+
YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250
ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7CisgICAg
ICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2Vi
VmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSwgZmFsc2UpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+dmlldygp
KQpAQCAtMjgwMSw2ICsyODIzLDQwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgV0VC
S0lUX1RZUEVfVklFV1BPUlRfQVRUUklCVVRFUyk7CiAKICAgICAvKgorICAgICAqIFdlYktpdFdl
YlZpZXc6OmNvbnRleHQtbWVudQorICAgICAqIEB3ZWJWaWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAeDogdGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgcG9z
aXRpb24gd2hlcmUgdGhlIGNvbnRleHQgbWVudSBzaG91bGQgYmUgc2hvd24KKyAgICAgKiBAeTog
dGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGNvbnRleHQgbWVudSBz
aG91bGQgYmUgc2hvd24KKyAgICAgKiBAa2V5Ym9hcmRfbW9kZTogJVRSVUUgaWYgdGhlIGNvbnRl
eHQgbWVudSB3YXMgdHJpZ2dlZCB1c2luZyB0aGUga2V5Ym9hcmQKKyAgICAgKiBAaGl0X3Rlc3Rf
cmVzdWx0OiBhICNXZWJLaXRIaXRUZXN0UmVzdWx0IHdpdGggdGhlIGNvbnRleHQgb2YgdGhlIGN1
cnJlbnQgcG9zaXRpb24uCisgICAgICoKKyAgICAgKiBFbW1pdGVkIHdoZW4gYSBjb250ZXh0IG1l
bnUgaXMgYWJvdXQgdG8gYmUgZGlzcGxheWVkIHRvIGdpdmUgdGhlIGFwcGxpY2F0aW9uCisgICAg
ICogYSBjaGFuY2UgdG8gY3JlYXRlIGFuZCBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1lbnUuIElm
IHlvdSBvbmx5IHdhbnQgdG8gYWRkIGN1c3RvbQorICAgICAqIG9wdGlvbnMgdG8gdGhlIGRlZmF1
bHQgY29udGV4dCBtZW51IHlvdSBzaG91bGQgdXNlICNXZWJLaXRXZWJWaWV3Ojpwb3B1bGF0ZS1w
b3B1cAorICAgICAqIGluc3RlYWQuIFdoZW4ga2V5Ym9hcmRfbW9kZSBpcyAlVFJVRSB0aGUgZ2l2
ZW4gY29vcmRpbmF0ZXMgc2hvdWxkIGJlIHVzZWQgdG8KKyAgICAgKiBwb3NpdGlvbiB0aGUgcG9w
dXAgbWVudSwgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBiZWVuIHRyaWdnZXJlZCBieSBhIG1v
dXNlIGV2ZW50CisgICAgICogeW91IGNvdWxkIGVpdGhlciB1c2UgdGhlIGdpdmVuIGNvb3JkaW5h
dGVzIG9yIHBhc3MgJU5VTEwgdG8gdGhlICNHdGtNZW51UG9zaXRpb25GdW5jCisgICAgICogcGFy
YW1ldGVyIG9mIGd0a19tZW51X3BvcHVwKCkgZnVuY3Rpb24uCisgICAgICogV2hlbiB0aGUgc2ln
bmFsIGlzIGhhbmRsZWQgYW5kIGEgcG9wdXAgbWVudSBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBh
cHBsaWNhdGlvbiwKKyAgICAgKiAlVFJVRSBzaG91bGQgYmUgcmV0dXJuZWQuIE5vdGUgdGhhdCB3
aGVuIHRoZSBjb250ZXh0IG1lbnUgaXMgaGFuZGxlZCBieSB0aGUKKyAgICAgKiBhcHBsaWNhdGlv
biwgdGhlICJlbmFibGUtZGVmYXVsdC1jb250ZXh0LW1lbnUiIHNldHRpbmcgd2lsbCBiZSBpZ25v
cmVkIGFuZAorICAgICAqICNXZWJLaXRXZWJWaWV3Ojpwb3B1bGF0ZS1wb3B1cCBzaWduYWwgd29u
J3QgYmUgZW1pdHRlZC4KKyAgICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCBhbnkgY29udGV4dCBtZW51
IHRvIGJlIHNob3duLCB5b3UgY2FuIHNpbXBseSBjb25uZWN0IHRvIHRoaXMgc2lnbmFsCisgICAg
ICogYW5kIHJldHVybiAlVFJVRSB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMS4zLjgKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFs
c1tDT05URVhUX01FTlVdID0gZ19zaWduYWxfbmV3KCJjb250ZXh0LW1lbnUiLAorICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFs
RmxhZ3MpR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMCwg
MCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX0lOVF9JTlRfQk9PTEVBTl9P
QkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgNCwKKyAgICAgICAgICAgIEdfVFlQ
RV9JTlQsIEdfVFlQRV9JTlQsIEdfVFlQRV9CT09MRUFOLAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfSElUX1RFU1RfUkVTVUxUKTsKKworICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9m
IHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92
aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QgYi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwu
bGlzdAppbmRleCA1MzcyYzU3Li5kOGFmOGE5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dG1hcnNoYWwubGlzdAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdApAQCAtMSw1
ICsxLDYgQEAKIEJPT0xFQU46RU5VTSxJTlQKIEJPT0xFQU46SU5ULElOVCxTVFJJTkcKK0JPT0xF
QU46SU5ULElOVCxCT09MRUFOLE9CSkVDVAogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNU
LE9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVOVU0K
</data>
<flag name="review"
          id="67890"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76818</attachid>
            <date>2010-12-16 15:09:36 -0800</date>
            <delta_ts>2010-12-17 07:19:22 -0800</delta_ts>
            <desc>Suggested changes to the patch</desc>
            <filename>bug-49904-20101216150934.patch</filename>
            <type>text/plain</type>
            <size>11938</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMmZlZWY1NGY4ZWMxZmYzNWY1N2MyZjY4NzZkZDVlMTRiNTMwN2E0Yi4uMGJhMWEwZjM2
ZTcwMTE2ZGZhY2M5NmQxNGZmZDU1MTg2ZDJhNzU5NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAx
MC0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIGEg
c2lnbmFsIHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1l
bnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTA0
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChwcmVwYXJl
TW91c2VFdmVudEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2Nv
bnRleHRfbWVudV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9o
YW5kbGVyKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIHdlYmtpdG1h
cnNoYWwubGlzdDoKKworMjAxMC0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgogCiAg
ICAgICAgIFtHdGtdIHNjcm9sbGluZyBhcnRpZmFjdHMKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggYzgxNDQ3NGM4YTgyZTNmYjc3YWVmMjYwY2JmYjFjNjU1NGIxNzY1Mi4uNDlh
Zjc4OGQ0OTI0MmUwMDFiZDJjOTM3ZjI1NGE4MjMzNDlhMmE2ZSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBlbnVtIHsKICAgICBFRElUSU5HX0VO
REVELAogICAgIFZJRVdQT1JUX0FUVFJJQlVURVNfUkVDT01QVVRFX1JFUVVFU1RFRCwKICAgICBW
SUVXUE9SVF9BVFRSSUJVVEVTX0NIQU5HRUQsCisgICAgQ09OVEVYVF9NRU5VLAogCiAgICAgTEFT
VF9TSUdOQUwKIH07CkBAIC0yOTgsODMgKzI5OSw3MSBAQCBzdGF0aWMgdm9pZCBjb250ZXh0TWVu
dUNvbm5lY3RBY3RpdmF0ZShHdGtNZW51SXRlbSogaXRlbSwgQ29udGV4dE1lbnVDb250cm9sbGVy
KgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoaXRlbSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhjb250
ZXh0TWVudUl0ZW1BY3RpdmF0ZWQpLCBjb250cm9sbGVyKTsKIH0KIAotc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorc3RhdGljIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnRGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNs
ZWFyQ29udGV4dE1lbnUoKTsKLSAgICBGcmFtZSogZm9jdXNlZEZyYW1lOwotICAgIEZyYW1lKiBt
YWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICBnYm9vbGVhbiBtb3VzZVByZXNzRXZl
bnRSZXN1bHQgPSBGQUxTRTsKLQotICAgIGlmICghbWFpbkZyYW1lLT52aWV3KCkpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKLQotICAgIG1haW5GcmFtZS0+dmlldygpLT5zZXRDdXJzb3IocG9pbnRl
ckN1cnNvcigpKTsKLSAgICBpZiAocGFnZS0+ZnJhbWVDb3VudCgpKSB7Ci0gICAgICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Ci0gICAgICAgIEludFBv
aW50IHBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9z
KCkpOwotICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IG1haW5GcmFt
ZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgcG9pbnQsIGV2ZW50KTsK
KyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAg
IEludFBvaW50IHBvaW50ID0gZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5w
b3MoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChy
ZXF1ZXN0LCBwb2ludCwgZXZlbnQpOworfQogCi0gICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JUYXJnZXROb2RlKG1ldi50YXJnZXROb2RlKCkpOwot
ICAgICAgICBpZiAoIXRhcmdldEZyYW1lKQotICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBtYWlu
RnJhbWU7CitzdGF0aWMgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgR3RrTWVudSogbWVudSkKK3sKKyAg
ICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZUNvbnRleHRNZW51OworICAgIGdfb2Jq
ZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSIsICZlbmFibGVD
b250ZXh0TWVudSwgTlVMTCk7CisgICAgaWYgKCFlbmFibGVDb250ZXh0TWVudSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGZvY3VzZWRGcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICAgICAgaWYgKHRhcmdldEZyYW1lICE9IGZvY3Vz
ZWRGcmFtZSkgewotICAgICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3Vz
ZWRGcmFtZSh0YXJnZXRGcmFtZSk7Ci0gICAgICAgICAgICBmb2N1c2VkRnJhbWUgPSB0YXJnZXRG
cmFtZTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBmb2N1c2VkRnJhbWUgPSBtYWlu
RnJhbWU7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owor
ICAgIHByaXYtPmN1cnJlbnRNZW51ID0gbWVudTsKKyAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRp
b24gPSBldmVudC5nbG9iYWxYKCk7CisgICAgcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZl
bnQuZ2xvYmFsWSgpOwogCi0gICAgaWYgKGZvY3VzZWRGcmFtZS0+dmlldygpICYmIGZvY3VzZWRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCkpCi0gICAg
ICAgIG1vdXNlUHJlc3NFdmVudFJlc3VsdCA9IFRSVUU7CisgICAgZ3RrX21lbnVfcG9wdXAobWVu
dSwgMCwgMCwgJlBvcHVwTWVudVBvc2l0aW9uRnVuYywgd2ViVmlldywgZXZlbnQuYnV0dG9uKCkg
KyAxLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKK30KIAorc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEZyYW1lKiBmcmFtZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgYm9v
bCBrZXlib2FyZE1vZGUpCit7CisgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CisgICAg
cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAotICAg
IGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENv
bnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChldmVudCk7CiAgICAgaWYgKCFoYW5k
bGVkRXZlbnQpCi0gICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSWYgY29yZU1lbnUgaXMgTlVMTCwgdGhpcyBtZWFucyBXZWJDb3JlIGRlY2lkZWQgdG8gbm90
IGNyZWF0ZQogICAgIC8vIHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudTsgdGhpcyBtYXkgaGFwcGVu
IHdoZW4gdGhlIHBhZ2UgaXMKICAgICAvLyBoYW5kbGluZyB0aGUgcmlnaHQtY2xpY2sgZm9yIHJl
YXNvbnMgb3RoZXIgdGhhbiB0aGUgY29udGV4dCBtZW51LgorICAgIGZyYW1lLT52aWV3KCktPnNl
dEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIENvbnRleHRNZW51Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpOwogICAgIENvbnRleHRNZW51
KiBjb3JlTWVudSA9IGNvbnRyb2xsZXItPmNvbnRleHRNZW51KCk7CiAgICAgaWYgKCFjb3JlTWVu
dSkKLSAgICAgICAgcmV0dXJuIG1vdXNlUHJlc3NFdmVudFJlc3VsdDsKLQotICAgIC8vIElmIHdl
IHJlYWNoIGhlcmUsIGl0J3MgYmVjYXVzZSBXZWJDb3JlIGlzIGdvaW5nIHRvIHNob3cgdGhlCi0g
ICAgLy8gZGVmYXVsdCBjb250ZXh0IG1lbnUuIFdlIGNoZWNrIG91ciBzZXR0aW5nIHRvIGZpZ3Vy
ZSBvdXQKLSAgICAvLyB3aGV0aGVyIHdlIHdhbnQgaXQgb3Igbm90LgotICAgIFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7
Ci0gICAgZ2Jvb2xlYW4gZW5hYmxlRGVmYXVsdENvbnRleHRNZW51OwotICAgIGdfb2JqZWN0X2dl
dChzZXR0aW5ncywgImVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSIsICZlbmFibGVEZWZhdWx0
Q29udGV4dE1lbnUsIE5VTEwpOwotCi0gICAgaWYgKCFlbmFibGVEZWZhdWx0Q29udGV4dE1lbnUp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQorICAgICAgICByZXR1cm47CiAgICAgR3RrTWVudSog
bWVudSA9IEdUS19NRU5VKGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpOworICAgIGdf
b2JqZWN0X3JlZihtZW51KTsKICAgICBpZiAoIW1lbnUpCi0gICAgICAgIHJldHVybiBGQUxTRTsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgY29ubmVjdCB0aGUgImFjdGl2YXRlIiBzaWdu
YWwgaGVyZSByYXRoZXIgdGhhbiBpbiBDb250ZXh0TWVudUd0ayB0byBhdm9pZAogICAgIC8vIGEg
bGF5ZXJpbmcgdmlvbGF0aW9uLiBDb250ZXh0TWVudUd0ayBzaG91bGQgbm90IGtub3cgYWJvdXQg
dGhlIENvbnRleHRNZW51Q29udHJvbGxlci4KICAgICBndGtfY29udGFpbmVyX2ZvcmVhY2goR1RL
X0NPTlRBSU5FUihtZW51KSwgKEd0a0NhbGxiYWNrKWNvbnRleHRNZW51Q29ubmVjdEFjdGl2YXRl
LCBjb250cm9sbGVyKTsKIAorICAgIC8vIElmIHRoZSBjb250ZXh0IG1lbnUgaXMgbm93IGVtcHR5
IGFmdGVyIHRoZSBwb3B1bGF0ZSBwb3B1cCBzaWduYWwsIGRvbid0IHNob3cgaXQuCiAgICAgZ19z
aWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQT1BVTEFURV9QT1BV
UF0sIDAsIG1lbnUpOwotCi0gICAgLy8gSWYgdGhlIGNvbnRleHQgbWVudSBpcyBub3cgZW1wdHks
IGRvbid0IHNob3cgaXQuCiAgICAgR093blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9n
ZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkpOwogICAgIGlmICghaXRlbXMpCi0gICAg
ICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIHByaXYtPmN1cnJlbnRNZW51ID0gbWVu
dTsKLSAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBldmVudC5nbG9iYWxYKCk7Ci0gICAg
cHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZlbnQuZ2xvYmFsWSgpOworICAgIGdib29sZWFu
IGhhbmRsZWQ7CisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBldmVudEFuZEhpdFRl
c3QgPSBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKGZyYW1lLCBldmVudCk7CisgICAgUGxhdGZv
cm1SZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IGFkb3B0UGxhdGZv
cm1SZWYoa2l0KGV2ZW50QW5kSGl0VGVzdC5oaXRUZXN0UmVzdWx0KCkpKTsKIAotICAgIGd0a19t
ZW51X3BvcHVwKG1lbnUsIDAsIDAsICZQb3B1cE1lbnVQb3NpdGlvbkZ1bmMsIHdlYlZpZXcsIGV2
ZW50LmJ1dHRvbigpICsgMSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7Ci0gICAgcmV0
dXJuIFRSVUU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2ln
bmFsc1tDT05URVhUX01FTlVdLCAwLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwK
KyAgICAgICAgICAgICAgICAgIGtleWJvYXJkTW9kZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgbWVu
dSwgJmhhbmRsZWQpOworICAgIGlmIChoYW5kbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBz
aG93Q29udGV4dE1lbnUod2ViVmlldywgZXZlbnQsIG1lbnUpOwogfQogCiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdpZGdldCkK
QEAgLTQ1Myw5ICs0NDIsMjAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19wb3B1
cF9tZW51X2hhbmRsZXIoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgICAgIGxvY2F0aW9uLnNldFgo
dmlldy0+d2lkdGgoKSAtIGNvbnRleHRNZW51TWFyZ2luKTsKICAgICBJbnRQb2ludCBnbG9iYWwo
Z2xvYmFsUG9pbnRGb3JDbGllbnRQb2ludChndGtfd2lkZ2V0X2dldF93aW5kb3cod2lkZ2V0KSwg
bG9jYXRpb24pKTsKIAotICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xv
YmFsLCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKLQotICAgIHJldHVybiB3
ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVX
KHdpZGdldCksIGV2ZW50KTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQobG9jYXRpb24s
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJpZ2h0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
b3VzZUV2ZW50UHJlc3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gY2xp
Y2tDb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc2hpZnQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIGN0cmwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsc2UsIC8vIGFsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSwgLy8gbWV0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfZ2V0X2N1
cnJlbnRfZXZlbnRfdGltZSgpKTsKKworICAgIGdib29sZWFuIHJlc3VsdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCks
IGZyYW1lLCBldmVudCwgdHJ1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmbmRlZiBH
VEtfQVBJX1ZFUlNJT05fMgpAQCAtODUzLDE0ICs4NTMsMTYgQEAgc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50QnUKICAgICBwcml2LT5wcmV2aW91c0NsaWNrQnV0dG9uID0gZXZlbnQtPmJ1dHRvbjsKICAg
ICBwcml2LT5wcmV2aW91c0NsaWNrVGltZSA9IGV2ZW50VGltZTsKIAotICAgIGlmIChldmVudC0+
YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250
ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSk7Ci0KICAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIGdib29sZWFuIHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KHBsYXRmb3Jt
RXZlbnQpOworCisgICAgaWYgKGV2ZW50LT5idXR0b24gPT0gMykgeworICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgZnJhbWUsIFBsYXRm
b3JtTW91c2VFdmVudChldmVudCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKICAgICAvLyBIYW5kbGUgdGhlIElNIGNvbnRleHQgd2hlbiBhIG1vdXNlIHByZXNzIGZp
cmVzCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpFZGl0b3JDbGllbnQqPihjb3JlKHdlYlZpZXcp
LT5lZGl0b3JDbGllbnQoKSktPmhhbmRsZUlucHV0TWV0aG9kTW91c2VQcmVzcygpOwogCkBAIC0y
MjI3LDggKzIyMjksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChX
ZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBAbWVudTogdGhlIGNvbnRl
eHQgbWVudQogICAgICAqCiAgICAgICogV2hlbiBhIGNvbnRleHQgbWVudSBpcyBhYm91dCB0byBi
ZSBkaXNwbGF5ZWQgdGhpcyBzaWduYWwgaXMgZW1pdHRlZC4KLSAgICAgKgogICAgICAqIEFkZCBt
ZW51IGl0ZW1zIHRvICNtZW51IHRvIGV4dGVuZCB0aGUgY29udGV4dCBtZW51LgorICAgICAqCisg
ICAgICogRGVwcmVjYXRlZDogMS4zLjg6IFVzZSB0aGUgY29udGV4dC1tZW51IHNpZ25hbCBpbnN0
ZWFkLgogICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1BPUFVMQVRFX1BPUFVQ
XSA9IGdfc2lnbmFsX25ldygicG9wdWxhdGUtcG9wdXAiLAogICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKQEAgLTI4MDYsNiArMjgwOSw0MyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdD
bGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAg
ICAgLyoKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpjb250ZXh0LW1lbnUKKyAgICAgKiBAd2ViVmll
dzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQHg6IHRoZSBY
IGNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBjb250ZXh0IG1lbnUgc2hvdWxk
IGJlIHNob3duCisgICAgICogQHk6IHRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uIHdo
ZXJlIHRoZSBjb250ZXh0IG1lbnUgc2hvdWxkIGJlIHNob3duCisgICAgICogQGtleWJvYXJkX21v
ZGU6ICVUUlVFIGlmIHRoZSBjb250ZXh0IG1lbnUgd2FzIHRyaWdnZWQgdXNpbmcgdGhlIGtleWJv
YXJkCisgICAgICogQGhpdF90ZXN0X3Jlc3VsdDogYSAjV2ViS2l0SGl0VGVzdFJlc3VsdCB3aXRo
IHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uLgorICAgICAqIEBtZW51OiB0aGUg
ZGVmYXVsdCBtZW51IGZvciB0aGUgZWxlbWVudCB0aGlzIGNvbnRleHQgbWVudSBjb3JyZXNwb25k
cyB0bworICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIGEgY29udGV4dCBtZW51IGlzIGFib3V0
IHRvIGJlIGRpc3BsYXllZCB0byBnaXZlIHRoZSBhcHBsaWNhdGlvbiBhCisgICAgICogY2hhbmNl
IHRvIGNyZWF0ZSBhbmQgaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51LiBJZiB5b3Ugb25seSB3
YW50IHRvIGFkZCBjdXN0b20KKyAgICAgKiBvcHRpb25zIHRvIHRoZSBkZWZhdWx0IGNvbnRleHQg
bWVudSB5b3UgY2FuIHNpbXBseSBtb2RpZnkgdGhlIEBtZW51IHNpZ25hbAorICAgICAqIHBhcmFt
ZXRlci4KKyAgICAgKiAKKyAgICAgKiBXaGVuIGtleWJvYXJkX21vZGUgaXMgJVRSVUUgdGhlIGdp
dmVuIGNvb3JkaW5hdGVzIHNob3VsZCBiZSB1c2VkIHRvIHBvc2l0aW9uIHRoZQorICAgICAqIHBv
cHVwIG1lbnUsIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgYmVlbiB0cmlnZ2VyZWQgYnkgYSBt
b3VzZSBldmVudCB5b3UgY291bGQKKyAgICAgKiBlaXRoZXIgdXNlIHRoZSBnaXZlbiBjb29yZGlu
YXRlcyBvciBwYXNzICVOVUxMIHRvIHRoZSAjR3RrTWVudVBvc2l0aW9uRnVuYworICAgICAqIHBh
cmFtZXRlciBvZiBndGtfbWVudV9wb3B1cCgpIGZ1bmN0aW9uLgorICAgICAqCisgICAgICogV2hl
biB0aGUgc2lnbmFsIGlzIGhhbmRsZWQgYW5kIGEgcG9wdXAgbWVudSBoYXMgYmVlbiBjcmVhdGVk
IGJ5IHRoZSBhcHBsaWNhdGlvbiwKKyAgICAgKiAlVFJVRSBzaG91bGQgYmUgcmV0dXJuZWQuIElm
ICVGQUxTRSBpcyByZXR1cm5lZCwgYSBwb3B1cCBtZW51IHdpbGwgYXBwZWFycyBhcyBsb25nCisg
ICAgICogYXMgdGhlICNXZWJLaXRXZWJTZXR0aW5nczo6ZW5hYmxlLWRlZmF1bHQtY29udGV4dC1t
ZW51IHNldHRpbmcgaXMgYWN0aXZlLiBJZiB5b3UKKyAgICAgKiBkb24ndCB3YW50IGFueSBjb250
ZXh0IG1lbnUgdG8gYmUgc2hvd24sIHlvdSBjYW4gc2ltcGx5IGNvbm5lY3QgdG8gdGhpcyBzaWdu
YWwgYW5kCisgICAgICogcmV0dXJuICVUUlVFIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZS4K
KyAgICAgKgorICAgICAqIFNpbmNlOiAxLjMuOAorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmll
d19zaWduYWxzW0NPTlRFWFRfTUVOVV0gPSBnX3NpZ25hbF9uZXcoImNvbnRleHQtbWVudSIsCisg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
KEdTaWduYWxGbGFncylHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fSU5UX0lOVF9C
T09MRUFOX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgNSwKKyAg
ICAgICAgICAgIEdfVFlQRV9JTlQsIEdfVFlQRV9JTlQsIEdfVFlQRV9CT09MRUFOLAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULCBHVEtfVFlQRV9NRU5VKTsKKworICAg
IC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwog
ICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
Y3JlYXRlX3dlYl92aWV3OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxp
c3QgYi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAppbmRleCA1MzcyYzU3NjNkNzRiMzkx
ZDExYmUxZWM3NDY1MjIwM2YwMzcyMjUzLi43NzJiODc1YTk2NjVkMDM3MTNkOTkzZGI4ZTJiZjA4
ZDYwNmRkMThmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdApAQCAtMSw1ICsxLDYgQEAKIEJPT0xFQU46
RU5VTSxJTlQKIEJPT0xFQU46SU5ULElOVCxTVFJJTkcKK0JPT0xFQU46SU5ULElOVCxCT09MRUFO
LE9CSkVDVCxPQkpFQ1QKIEJPT0xFQU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QKIEJP
T0xFQU46T0JKRUNULE9CSkVDVCxFTlVNCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76876</attachid>
            <date>2010-12-17 07:19:25 -0800</date>
            <delta_ts>2011-04-26 15:29:55 -0700</delta_ts>
            <desc>Patch with suggested fixes</desc>
            <filename>bug-49904-20101217071924.patch</filename>
            <type>text/plain</type>
            <size>11830</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMmZlZWY1NGY4ZWMxZmYzNWY1N2MyZjY4NzZkZDVlMTRiNTMwN2E0Yi4uMGJhMWEwZjM2
ZTcwMTE2ZGZhY2M5NmQxNGZmZDU1MTg2ZDJhNzU5NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAx
MC0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIGEg
c2lnbmFsIHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBoYW5kbGUgaXRzIG93biBjb250ZXh0IG1l
bnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTA0
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgIChwcmVwYXJl
TW91c2VFdmVudEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2Nv
bnRleHRfbWVudV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9o
YW5kbGVyKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19idXR0b25fcHJlc3NfZXZlbnQpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIHdlYmtpdG1h
cnNoYWwubGlzdDoKKworMjAxMC0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgogCiAg
ICAgICAgIFtHdGtdIHNjcm9sbGluZyBhcnRpZmFjdHMKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggYzgxNDQ3NGM4YTgyZTNmYjc3YWVmMjYwY2JmYjFjNjU1NGIxNzY1Mi4uZDVm
OTcxN2QyMTU2YzZkOTllYzRhZWMyODlmNWJkYTcyNjJjOGFjMCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBlbnVtIHsKICAgICBFRElUSU5HX0VO
REVELAogICAgIFZJRVdQT1JUX0FUVFJJQlVURVNfUkVDT01QVVRFX1JFUVVFU1RFRCwKICAgICBW
SUVXUE9SVF9BVFRSSUJVVEVTX0NIQU5HRUQsCisgICAgQ09OVEVYVF9NRU5VLAogCiAgICAgTEFT
VF9TSUdOQUwKIH07CkBAIC0yOTgsNjEgKzI5OSw0NyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0TWVu
dUNvbm5lY3RBY3RpdmF0ZShHdGtNZW51SXRlbSogaXRlbSwgQ29udGV4dE1lbnVDb250cm9sbGVy
KgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoaXRlbSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhjb250
ZXh0TWVudUl0ZW1BY3RpdmF0ZWQpLCBjb250cm9sbGVyKTsKIH0KIAotc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorc3RhdGljIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnRGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNs
ZWFyQ29udGV4dE1lbnUoKTsKLSAgICBGcmFtZSogZm9jdXNlZEZyYW1lOwotICAgIEZyYW1lKiBt
YWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICBnYm9vbGVhbiBtb3VzZVByZXNzRXZl
bnRSZXN1bHQgPSBGQUxTRTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUpOworICAgIEludFBvaW50IHBvaW50ID0gZnJhbWUtPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhldmVudC5wb3MoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5w
cmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZlbnQpOworfQogCi0gICAgaWYgKCFt
YWluRnJhbWUtPnZpZXcoKSkKK3N0YXRpYyBnYm9vbGVhbiBzaG93Q29udGV4dE1lbnUoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgR3RrTWVu
dSogbWVudSkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZUNvbnRleHRN
ZW51OworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJsZS1kZWZhdWx0LWNvbnRleHQt
bWVudSIsICZlbmFibGVDb250ZXh0TWVudSwgTlVMTCk7CisgICAgaWYgKCFlbmFibGVDb250ZXh0
TWVudSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgbWFpbkZyYW1lLT52aWV3KCktPnNl
dEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwotICAgIGlmIChwYWdlLT5mcmFtZUNvdW50KCkpIHsK
LSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsK
LSAgICAgICAgSW50UG9pbnQgcG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhldmVudC5wb3MoKSk7Ci0gICAgICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBw
b2ludCwgZXZlbnQpOwotCi0gICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IEV2ZW50SGFuZGxl
cjo6c3ViZnJhbWVGb3JUYXJnZXROb2RlKG1ldi50YXJnZXROb2RlKCkpOwotICAgICAgICBpZiAo
IXRhcmdldEZyYW1lKQotICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBtYWluRnJhbWU7Ci0KLSAg
ICAgICAgZm9jdXNlZEZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwotICAgICAgICBpZiAodGFyZ2V0RnJhbWUgIT0gZm9jdXNlZEZyYW1lKSB7Ci0g
ICAgICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKHRhcmdl
dEZyYW1lKTsKLSAgICAgICAgICAgIGZvY3VzZWRGcmFtZSA9IHRhcmdldEZyYW1lOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvY3VzZWRGcmFtZSA9IG1haW5GcmFtZTsKKyAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgcHJpdi0+Y3Vy
cmVudE1lbnUgPSBtZW51OworICAgIHByaXYtPmxhc3RQb3B1cFhQb3NpdGlvbiA9IGV2ZW50Lmds
b2JhbFgoKTsKKyAgICBwcml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSBldmVudC5nbG9iYWxZKCk7
CiAKLSAgICBpZiAoZm9jdXNlZEZyYW1lLT52aWV3KCkgJiYgZm9jdXNlZEZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KSkKLSAgICAgICAgbW91c2VQcmVz
c0V2ZW50UmVzdWx0ID0gVFJVRTsKKyAgICBndGtfbWVudV9wb3B1cChtZW51LCAwLCAwLCAmUG9w
dXBNZW51UG9zaXRpb25GdW5jLCB3ZWJWaWV3LCBldmVudC5idXR0b24oKSArIDEsIGd0a19nZXRf
Y3VycmVudF9ldmVudF90aW1lKCkpOworICAgIHJldHVybiBUUlVFOworfQogCitzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEZyYW1lKiBmcmFtZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgYm9vbCBrZXlib2FyZE1vZGUpCit7CisgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmll
dyk7CisgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUo
KTsKIAotICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChldmVudCk7CiAgICAg
aWYgKCFoYW5kbGVkRXZlbnQpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIC8vIElmIGNv
cmVNZW51IGlzIE5VTEwsIHRoaXMgbWVhbnMgV2ViQ29yZSBkZWNpZGVkIHRvIG5vdCBjcmVhdGUK
ICAgICAvLyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnU7IHRoaXMgbWF5IGhhcHBlbiB3aGVuIHRo
ZSBwYWdlIGlzCiAgICAgLy8gaGFuZGxpbmcgdGhlIHJpZ2h0LWNsaWNrIGZvciByZWFzb25zIG90
aGVyIHRoYW4gdGhlIGNvbnRleHQgbWVudS4KKyAgICBmcmFtZS0+dmlldygpLT5zZXRDdXJzb3Io
cG9pbnRlckN1cnNvcigpKTsKICAgICBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKTsKICAgICBDb250ZXh0TWVudSogY29yZU1l
bnUgPSBjb250cm9sbGVyLT5jb250ZXh0TWVudSgpOwogICAgIGlmICghY29yZU1lbnUpCi0gICAg
ICAgIHJldHVybiBtb3VzZVByZXNzRXZlbnRSZXN1bHQ7Ci0KLSAgICAvLyBJZiB3ZSByZWFjaCBo
ZXJlLCBpdCdzIGJlY2F1c2UgV2ViQ29yZSBpcyBnb2luZyB0byBzaG93IHRoZQotICAgIC8vIGRl
ZmF1bHQgY29udGV4dCBtZW51LiBXZSBjaGVjayBvdXIgc2V0dGluZyB0byBmaWd1cmUgb3V0Ci0g
ICAgLy8gd2hldGhlciB3ZSB3YW50IGl0IG9yIG5vdC4KLSAgICBXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOwotICAgIGdi
b29sZWFuIGVuYWJsZURlZmF1bHRDb250ZXh0TWVudTsKLSAgICBnX29iamVjdF9nZXQoc2V0dGlu
Z3MsICJlbmFibGUtZGVmYXVsdC1jb250ZXh0LW1lbnUiLCAmZW5hYmxlRGVmYXVsdENvbnRleHRN
ZW51LCBOVUxMKTsKLQotICAgIGlmICghZW5hYmxlRGVmYXVsdENvbnRleHRNZW51KQogICAgICAg
ICByZXR1cm4gRkFMU0U7Ci0KICAgICBHdGtNZW51KiBtZW51ID0gR1RLX01FTlUoY29yZU1lbnUt
PnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CiAgICAgaWYgKCFtZW51KQogICAgICAgICByZXR1cm4g
RkFMU0U7CkBAIC0zNjEsMjAgKzM0OCwyMiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAg
IC8vIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLiBDb250ZXh0TWVudUd0ayBzaG91bGQgbm90IGtub3cg
YWJvdXQgdGhlIENvbnRleHRNZW51Q29udHJvbGxlci4KICAgICBndGtfY29udGFpbmVyX2ZvcmVh
Y2goR1RLX0NPTlRBSU5FUihtZW51KSwgKEd0a0NhbGxiYWNrKWNvbnRleHRNZW51Q29ubmVjdEFj
dGl2YXRlLCBjb250cm9sbGVyKTsKIAorICAgIC8vIElmIHRoZSBjb250ZXh0IG1lbnUgaXMgbm93
IGVtcHR5IGFmdGVyIHRoZSBwb3B1bGF0ZSBwb3B1cCBzaWduYWwsIGRvbid0IHNob3cgaXQuCiAg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQT1BVTEFU
RV9QT1BVUF0sIDAsIG1lbnUpOwotCi0gICAgLy8gSWYgdGhlIGNvbnRleHQgbWVudSBpcyBub3cg
ZW1wdHksIGRvbid0IHNob3cgaXQuCiAgICAgR093blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRh
aW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkpOwogICAgIGlmICghaXRlbXMp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKLSAgICBwcml2LT5jdXJyZW50TWVudSA9IG1lbnU7Ci0gICAgcHJp
di0+bGFzdFBvcHVwWFBvc2l0aW9uID0gZXZlbnQuZ2xvYmFsWCgpOwotICAgIHByaXYtPmxhc3RQ
b3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFkoKTsKKyAgICBnYm9vbGVhbiBoYW5kbGVkOwor
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgZXZlbnRBbmRIaXRUZXN0ID0gcHJlcGFy
ZU1vdXNlRXZlbnRGb3JGcmFtZShmcmFtZSwgZXZlbnQpOworICAgIFBsYXRmb3JtUmVmUHRyPFdl
YktpdEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBhZG9wdFBsYXRmb3JtUmVmKGtpdChl
dmVudEFuZEhpdFRlc3QuaGl0VGVzdFJlc3VsdCgpKSk7CiAKLSAgICBndGtfbWVudV9wb3B1cCht
ZW51LCAwLCAwLCAmUG9wdXBNZW51UG9zaXRpb25GdW5jLCB3ZWJWaWV3LCBldmVudC5idXR0b24o
KSArIDEsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwotICAgIHJldHVybiBUUlVFOwor
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ09OVEVY
VF9NRU5VXSwgMCwgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksCisgICAgICAgICAg
ICAgICAgICBrZXlib2FyZE1vZGUsIGhpdFRlc3RSZXN1bHQuZ2V0KCksIG1lbnUsICZoYW5kbGVk
KTsKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJu
IHNob3dDb250ZXh0TWVudSh3ZWJWaWV3LCBldmVudCwgbWVudSk7CiB9CiAKIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyKEd0a1dpZGdldCogd2lkZ2V0
KQpAQCAtNDUzLDkgKzQ0MiwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3Bv
cHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdpZGdldCkKICAgICAgICAgbG9jYXRpb24uc2V0
WCh2aWV3LT53aWR0aCgpIC0gY29udGV4dE1lbnVNYXJnaW4pOwogICAgIEludFBvaW50IGdsb2Jh
bChnbG9iYWxQb2ludEZvckNsaWVudFBvaW50KGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQp
LCBsb2NhdGlvbikpOwogCi0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBn
bG9iYWwsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOworICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHRCdXR0b24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1vdXNlRXZlbnRQcmVzc2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAvLyBjbGlja0NvdW50CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlLCAvLyBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSwgLy8gY3RybAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gYWx0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBtZXRhCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwogCi0gICAgcmV0
dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VC
X1ZJRVcod2lkZ2V0KSwgZXZlbnQpOworICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCkKKyAgICAgICAgfHwgd2Via2l0X3dlYl92aWV3
X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBmcmFt
ZSwgZXZlbnQsIHRydWUpOwogfQogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCkBAIC04NTMs
MTQgKzg1MiwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2J1dHRvbl9wcmVz
c19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdQogICAgIHByaXYtPnByZXZpb3Vz
Q2xpY2tCdXR0b24gPSBldmVudC0+YnV0dG9uOwogICAgIHByaXYtPnByZXZpb3VzQ2xpY2tUaW1l
ID0gZXZlbnRUaW1lOwogCi0gICAgaWYgKGV2ZW50LT5idXR0b24gPT0gMykKLSAgICAgICAgcmV0
dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCh3ZWJWaWV3LCBQ
bGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKLQogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0
dXJuIEZBTFNFOwotCiAgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oYW5kbGVNb3VzZVByZXNzRXZlbnQocGxhdGZvcm1FdmVudCk7CisKKyAgICBpZiAoZXZlbnQt
PmJ1dHRvbiA9PSAzKQorICAgICAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29u
dGV4dF9tZW51X2V2ZW50KHdlYlZpZXcsIGZyYW1lLCBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQp
LCBmYWxzZSk7CisKICAgICAvLyBIYW5kbGUgdGhlIElNIGNvbnRleHQgd2hlbiBhIG1vdXNlIHBy
ZXNzIGZpcmVzCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpFZGl0b3JDbGllbnQqPihjb3JlKHdl
YlZpZXcpLT5lZGl0b3JDbGllbnQoKSktPmhhbmRsZUlucHV0TWV0aG9kTW91c2VQcmVzcygpOwog
CkBAIC0yMjI3LDggKzIyMjYsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBAbWVudTogdGhl
IGNvbnRleHQgbWVudQogICAgICAqCiAgICAgICogV2hlbiBhIGNvbnRleHQgbWVudSBpcyBhYm91
dCB0byBiZSBkaXNwbGF5ZWQgdGhpcyBzaWduYWwgaXMgZW1pdHRlZC4KLSAgICAgKgogICAgICAq
IEFkZCBtZW51IGl0ZW1zIHRvICNtZW51IHRvIGV4dGVuZCB0aGUgY29udGV4dCBtZW51LgorICAg
ICAqCisgICAgICogRGVwcmVjYXRlZDogMS4zLjg6IFVzZSB0aGUgY29udGV4dC1tZW51IHNpZ25h
bCBpbnN0ZWFkLgogICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1BPUFVMQVRF
X1BPUFVQXSA9IGdfc2lnbmFsX25ldygicG9wdWxhdGUtcG9wdXAiLAogICAgICAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKQEAgLTI4MDYsNiArMjgwNiw0MyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMp
OwogCiAgICAgLyoKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpjb250ZXh0LW1lbnUKKyAgICAgKiBA
d2ViVmlldzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQHg6
IHRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBjb250ZXh0IG1lbnUg
c2hvdWxkIGJlIHNob3duCisgICAgICogQHk6IHRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHBvc2l0
aW9uIHdoZXJlIHRoZSBjb250ZXh0IG1lbnUgc2hvdWxkIGJlIHNob3duCisgICAgICogQGtleWJv
YXJkX21vZGU6ICVUUlVFIGlmIHRoZSBjb250ZXh0IG1lbnUgd2FzIHRyaWdnZWQgdXNpbmcgdGhl
IGtleWJvYXJkCisgICAgICogQGhpdF90ZXN0X3Jlc3VsdDogYSAjV2ViS2l0SGl0VGVzdFJlc3Vs
dCB3aXRoIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uLgorICAgICAqIEBtZW51
OiB0aGUgZGVmYXVsdCBtZW51IGZvciB0aGUgZWxlbWVudCB0aGlzIGNvbnRleHQgbWVudSBjb3Jy
ZXNwb25kcyB0bworICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIGEgY29udGV4dCBtZW51IGlz
IGFib3V0IHRvIGJlIGRpc3BsYXllZCB0byBnaXZlIHRoZSBhcHBsaWNhdGlvbiBhCisgICAgICog
Y2hhbmNlIHRvIGNyZWF0ZSBhbmQgaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51LiBJZiB5b3Ug
b25seSB3YW50IHRvIGFkZCBjdXN0b20KKyAgICAgKiBvcHRpb25zIHRvIHRoZSBkZWZhdWx0IGNv
bnRleHQgbWVudSB5b3UgY2FuIHNpbXBseSBtb2RpZnkgdGhlIEBtZW51IHNpZ25hbAorICAgICAq
IHBhcmFtZXRlci4KKyAgICAgKiAKKyAgICAgKiBXaGVuIGtleWJvYXJkX21vZGUgaXMgJVRSVUUg
dGhlIGdpdmVuIGNvb3JkaW5hdGVzIHNob3VsZCBiZSB1c2VkIHRvIHBvc2l0aW9uIHRoZQorICAg
ICAqIHBvcHVwIG1lbnUsIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgYmVlbiB0cmlnZ2VyZWQg
YnkgYSBtb3VzZSBldmVudCB5b3UgY291bGQKKyAgICAgKiBlaXRoZXIgdXNlIHRoZSBnaXZlbiBj
b29yZGluYXRlcyBvciBwYXNzICVOVUxMIHRvIHRoZSAjR3RrTWVudVBvc2l0aW9uRnVuYworICAg
ICAqIHBhcmFtZXRlciBvZiBndGtfbWVudV9wb3B1cCgpIGZ1bmN0aW9uLgorICAgICAqCisgICAg
ICogV2hlbiB0aGUgc2lnbmFsIGlzIGhhbmRsZWQgYW5kIGEgcG9wdXAgbWVudSBoYXMgYmVlbiBj
cmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwKKyAgICAgKiAlVFJVRSBzaG91bGQgYmUgcmV0dXJu
ZWQuIElmICVGQUxTRSBpcyByZXR1cm5lZCwgYSBwb3B1cCBtZW51IHdpbGwgYXBwZWFycyBhcyBs
b25nCisgICAgICogYXMgdGhlICNXZWJLaXRXZWJTZXR0aW5nczo6ZW5hYmxlLWRlZmF1bHQtY29u
dGV4dC1tZW51IHNldHRpbmcgaXMgYWN0aXZlLiBJZiB5b3UKKyAgICAgKiBkb24ndCB3YW50IGFu
eSBjb250ZXh0IG1lbnUgdG8gYmUgc2hvd24sIHlvdSBjYW4gc2ltcGx5IGNvbm5lY3QgdG8gdGhp
cyBzaWduYWwgYW5kCisgICAgICogcmV0dXJuICVUUlVFIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcg
ZWxzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjMuOAorICAgICAqLworICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW0NPTlRFWFRfTUVOVV0gPSBnX3NpZ25hbF9uZXcoImNvbnRleHQtbWVu
dSIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAg
ICAgICAgKEdTaWduYWxGbGFncylHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fSU5U
X0lOVF9CT09MRUFOX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
NSwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsIEdfVFlQRV9JTlQsIEdfVFlQRV9CT09MRUFOLAor
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULCBHVEtfVFlQRV9NRU5VKTsK
KworICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAg
ICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3
X3JlYWxfY3JlYXRlX3dlYl92aWV3OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXRtYXJz
aGFsLmxpc3QgYi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAppbmRleCA1MzcyYzU3NjNk
NzRiMzkxZDExYmUxZWM3NDY1MjIwM2YwMzcyMjUzLi43NzJiODc1YTk2NjVkMDM3MTNkOTkzZGI4
ZTJiZjA4ZDYwNmRkMThmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlz
dAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdApAQCAtMSw1ICsxLDYgQEAKIEJP
T0xFQU46RU5VTSxJTlQKIEJPT0xFQU46SU5ULElOVCxTVFJJTkcKK0JPT0xFQU46SU5ULElOVCxC
T09MRUFOLE9CSkVDVCxPQkpFQ1QKIEJPT0xFQU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpF
Q1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVCxFTlVNCg==
</data>
<flag name="review"
          id="67889"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106400</attachid>
            <date>2011-09-06 02:45:10 -0700</date>
            <delta_ts>2011-09-06 02:50:25 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>context-menu5.diff</filename>
            <type>text/plain</type>
            <size>18489</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBlZjIwZGVlLi43ZTZkNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTEtMDktMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIHNpZ25hbCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdG8gaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTkwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvdGVzdGhpdHRlc3RyZXN1bHQu
YzoKKyAgICAgICAgKGxvYWRfc3RhdHVzX2NiKTogVGVzdCB4LCB5IHByb3BlcnRpZXMgb2YgV2Vi
S2l0SGl0VGVzdFJlc3VsdC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5j
cHA6CisgICAgICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOiBB
ZGQgeCBhbmQgeSBjb25zdHJ1Y3Qgb25seSBwcm9wZXJ0aWVzIHRvIGtlZXAgdGhlCisJY29vcmRp
bmF0ZXMgb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHZpZXcncyB3aWRnZXQuCisgICAgICAgICog
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3NfY2xhc3NfaW5pdCk6IE1hcmsgZW5hYmxlLWRlZmF1bHQtY29udGV4dC1tZW51CisJcHJvcGVy
dHkgYXMgZGVwcmVjYXRlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgIChwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKToKKyAgICAgICAgKGRlZmF1bHRDb250
ZXh0TWVudUVuYWJsZWQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlcgorCWRlZmF1
bHQgY29udGV4dCBtZW51IHNldHRpbmcgaXMgZW5hYmxlZCBvciBub3QuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQpOiBFbWl0IHRoZSBuZXcKKwlj
b250ZXh0LW1lbnUgc2lnbmFsLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVf
aGFuZGxlcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogQWRkIG5ldyBjb250ZXh0LW1l
bnUgc2lnbmFsIGFuZCBtYXJrCisJcG9wdWxhdGUtcG9wdXAgYXMgZGVwcmVjYXRlZC4KKyAgICAg
ICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIwMTEtMDgtMzAgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI5NDE0Miwgcjk0MTQ0LCByOTQxNDUsIGFuZCByOTQxNDguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0aGl0dGVzdHJlc3VsdC5jIGIvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGhpdHRlc3RyZXN1bHQuYwppbmRleCAwZDdmYjA1Li4yMDM3MTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0aGl0dGVzdHJlc3VsdC5jCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RoaXR0ZXN0cmVzdWx0LmMKQEAgLTgzLDYgKzgz
LDcgQEAgbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywKICAgICAgICAgZ3Vp
bnQgY29udGV4dDsKICAgICAgICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtf
QlVUVE9OX1BSRVNTKTsKICAgICAgICAgV2ViS2l0RE9NTm9kZSogbm9kZTsKKyAgICAgICAgZ2lu
dCB4LCB5OwogCiAgICAgICAgIC8qIENsb3NlIGVub3VnaCB0byAwLDAgKi8KICAgICAgICAgZXZl
bnQtPmJ1dHRvbi54ID0gNTsKQEAgLTk4LDYgKzk5LDExIEBAIGxvYWRfc3RhdHVzX2NiKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsCiAgICAgICAgIGdfb2JqZWN0X2dldChyZXN1bHQsICJpbm5lci1u
b2RlIiwgJm5vZGUsIE5VTEwpOwogICAgICAgICBnX2Fzc2VydChub2RlKTsKICAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKKworICAgICAgICBnX29iamVjdF9nZXQo
cmVzdWx0LCAieCIsICZ4LCAieSIsICZ5LCBOVUxMKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50
KHgsID09LCA1KTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHksID09LCA1KTsKKwogICAgICAg
ICAvKiBXZSBjYW4gb25seSB0ZXN0IHRoZXNlIG5vZGUgdHlwZXMgYXQgdGhlIG1vbWVudC4gSW4g
dGhlCiAgICAgICAgICAqIGlucHV0IGNhc2UgdGhlcmUgc2VlbXMgdG8gYmUgYW4gZXh0cmEgbGF5
ZXIgd2l0aCBhIERJViBvbgogICAgICAgICAgKiB0b3Agb2YgdGhlIGlucHV0LCB3aGljaCBnZXRz
IGFzc2lnbmVkIHRvIHRoZSBpbm5lci1ub2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IGNiN2FjNGIuLjgzYjY3NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAg
LTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXRoaXR0
ZXN0cmVzdWx0LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJHUmVmUHRyLmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgpAQCAtNDksNiArNTEsNyBAQCBzdHJ1Y3QgX1dlYktpdEhpdFRlc3RS
ZXN1bHRQcml2YXRlIHsKICAgICBjaGFyKiBpbWFnZVVSSTsKICAgICBjaGFyKiBtZWRpYVVSSTsK
ICAgICBHUmVmUHRyPFdlYktpdERPTU5vZGU+IGlubmVyTm9kZTsKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBwb3NpdGlvbjsKIH07CiAKIGVudW0gewpAQCAtNTgsNyArNjEsOSBAQCBlbnVtIHsKICAg
ICBQUk9QX0xJTktfVVJJLAogICAgIFBST1BfSU1BR0VfVVJJLAogICAgIFBST1BfTUVESUFfVVJJ
LAotICAgIFBST1BfSU5ORVJfTk9ERQorICAgIFBST1BfSU5ORVJfTk9ERSwKKyAgICBQUk9QX1gs
CisgICAgUFJPUF9ZCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKQEAgLTEwMSw2ICsxMDYsMTIgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wZXJ0eUkKICAgICBjYXNlIFBST1BfSU5ORVJfTk9ERToKICAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCBwcml2LT5pbm5lck5vZGUuZ2V0KCkpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5w
b3NpdGlvbi54KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAg
Z192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5wb3NpdGlvbi55KCkpOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwc3BlYyk7CiAgICAgfQpAQCAtMTMwLDYgKzE0MSwxMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQogICAgIGNhc2UgUFJPUF9JTk5FUl9OT0RFOgogICAg
ICAgICBwcml2LT5pbm5lck5vZGUgPSBzdGF0aWNfY2FzdDxXZWJLaXRET01Ob2RlKj4oZ192YWx1
ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9YOgor
ICAgICAgICBwcml2LT5wb3NpdGlvbi5zZXRYKGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+cG9zaXRpb24uc2V0
WShnX3ZhbHVlX2dldF9pbnQodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVy
dHlJRCwgcHNwZWMpOwogICAgIH0KQEAgLTIyNSw2ICsyNDIsMzQgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcyog
d2ViSGl0VGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorICAg
IC8qKgorICAgICAqIFdlYktpdEhpdFRlc3RSZXN1bHQ6eDoKKyAgICAgKgorICAgICAqIFRoZSB4
IGNvb3JkaW50YXRlIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdmlldydzIHdpbmRvdy4K
KyAgICAgKgorICAgICAqIFNpbmNlOiAxLjUuMworICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoIngiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJYIGNvb3JkaW5hdGUiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
VGhlIHggY29vcmRpbnRhdGUgb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2lu
ZG93LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHX01JTklOVCwgR19NQVhJTlQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdEhpdFRlc3RSZXN1bHQ6eToKKyAgICAgKgorICAgICAqIFRoZSB4IGNvb3Jk
aW50YXRlIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdmlldydzIHdpbmRvdy4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAxLjUuMworICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoInkiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJZIGNvb3JkaW5hdGUiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIHkg
Y29vcmRpbnRhdGUgb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2luZG93LiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
X01JTklOVCwgR19NQVhJTlQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZSh3ZWJIaXRUZXN0UmVzdWx0Q2xhc3MsIHNpemVvZihXZWJLaXRIaXRUZXN0
UmVzdWx0UHJpdmF0ZSkpOwogfQogCkBAIC0yNDMsNiArMjg4LDggQEAgV2ViS2l0SGl0VGVzdFJl
c3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBHT3du
UHRyPGNoYXI+IGltYWdlVVJJKDApOwogICAgIEdPd25QdHI8Y2hhcj4gbWVkaWFVUkkoMCk7CiAg
ICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IDA7CisgICAgV2ViQ29yZTo6RnJhbWUqIHRhcmdldEZy
YW1lOworICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogCiAgICAgaWYgKCFyZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DT05URVhUX0xJTks7CkBAIC0yNjgsMTIgKzMxNSwyMSBAQCBXZWJLaXRI
aXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQog
ICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBraXQo
cmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKIAorICAgIHRhcmdldEZyYW1lID0gcmVzdWx0
LnRhcmdldEZyYW1lKCk7CisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT52aWV3
KCkpIHsKKyAgICAgICAgLy8gQ29udmVydCBkb2N1bWVudCBjb29yZHMgdG8gd2lkZ2V0IGNvb3Jk
cy4KKyAgICAgICAgcG9pbnQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93
KHJlc3VsdC5wb2ludCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcG9pbnQgPSByZXN1bHQucG9p
bnQoKTsKKwogICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJsaW5rLXVyaSIsIGxpbmtVUkkuZ2V0KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbWFnZS11cmkiLCBpbWFnZVVS
SS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1lZGlhLXVyaSIsIG1lZGlhVVJJLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiY29udGV4dCIsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbm5lci1ub2RlIiwgbm9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLCBwb2ludC54KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwgcG9p
bnQueSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwCmluZGV4IDM0ZTQzMjEuLjYzOThhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtNzYxLDYgKzc2MSw4IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNz
KiBrbGFzcykKICAgICAgKiByaWdodC1jbGlja3MgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgcGFn
ZSBpdHNlbGYuCiAgICAgICoKICAgICAgKiBTaW5jZTogMS4xLjE4CisgICAgICoKKyAgICAgKiBE
ZXByZWNhdGVkOiAxLjUuMzogVXNlICNXZWJLaXRXZWJWaWV3Ojpjb250ZXh0LW1lbnUgc2lnbmFs
IGluc3RlYWQuCiAgICAgICovCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfREVGQVVMVF9DT05URVhUX01FTlUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggMzhiZTVhMi4uNjM5MGQyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjA0LDYgKzIwNCw3IEBAIGVudW0gewog
ICAgIEVESVRJTkdfRU5ERUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19SRUNPTVBVVEVfUkVR
VUVTVEVELAogICAgIFZJRVdQT1JUX0FUVFJJQlVURVNfQ0hBTkdFRCwKKyAgICBDT05URVhUX01F
TlUsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTMwOCwyMyArMzA5LDM3IEBAIHN0YXRpYyB2
b2lkIGNvbnRleHRNZW51Q29ubmVjdEFjdGl2YXRlKEd0a01lbnVJdGVtKiBpdGVtLCBDb250ZXh0
TWVudUNvbnRyb2xsZXIqCiAgICAgZ19zaWduYWxfY29ubmVjdChpdGVtLCAiYWN0aXZhdGUiLCBH
X0NBTExCQUNLKGNvbnRleHRNZW51SXRlbUFjdGl2YXRlZCksIGNvbnRyb2xsZXIpOwogfQogCi1z
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
CitzdGF0aWMgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBwcmVwYXJlTW91c2VFdmVudEZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAg
IEludFBvaW50IHBvaW50ID0gZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5w
b3MoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChy
ZXF1ZXN0LCBwb2ludCwgZXZlbnQpOworfQorCisvLyBDaGVjayBlbmFibGUtZGVmYXVsdC1jb250
ZXh0LW1lbnUgc2V0dGluZyBmb3IgY29tcGF0aWJpbGl0eS4KK3N0YXRpYyBib29sIGRlZmF1bHRD
b250ZXh0TWVudUVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZp
ZXcpOworICAgIGdib29sZWFuIGVuYWJsZURlZmF1bHRDb250ZXh0TWVudTsKKyAgICBnX29iamVj
dF9nZXQoc2V0dGluZ3MsICJlbmFibGUtZGVmYXVsdC1jb250ZXh0LW1lbnUiLCAmZW5hYmxlRGVm
YXVsdENvbnRleHRNZW51LCBOVUxMKTsKKyAgICByZXR1cm4gZW5hYmxlRGVmYXVsdENvbnRleHRN
ZW51OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4
dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGJvb2wga2V5Ym9hcmRNb2RlKQogewogICAgIFBhZ2UqIHBhZ2UgPSBjb3Jl
KHdlYlZpZXcpOwogICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRl
eHRNZW51KCk7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZTsKICAgICBGcmFtZSogbWFpbkZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgZ2Jvb2xlYW4gbW91c2VQcmVzc0V2ZW50UmVzdWx0
ID0gRkFMU0U7CisgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0
OwogCiAgICAgaWYgKCFtYWluRnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwog
CiAgICAgbWFpbkZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAg
IGlmIChwYWdlLT5mcmFtZUNvdW50KCkpIHsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKLSAgICAgICAgSW50UG9pbnQgcG9pbnQgPSBtYWlu
RnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7Ci0gICAgICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5w
cmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZlbnQpOwotCisgICAgICAgIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnRGb3JGcmFtZSht
YWluRnJhbWUsIGV2ZW50KTsKICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gRXZlbnRIYW5k
bGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobWV2KTsKICAgICAgICAgaWYgKCF0YXJnZXRG
cmFtZSkKICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOwpAQCAtMzM0LDEzICsz
NDksMTQgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRf
bWVudV9ldmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWUKICAgICAgICAgICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUodGFyZ2V0RnJhbWUpOwogICAgICAgICAgICAg
Zm9jdXNlZEZyYW1lID0gdGFyZ2V0RnJhbWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGZvY3Vz
ZWRGcmFtZSA9PSBtYWluRnJhbWUpCisgICAgICAgICAgICBoaXRUZXN0UmVzdWx0ID0gYWRvcHRH
UmVmKGtpdChtZXYuaGl0VGVzdFJlc3VsdCgpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZvY3Vz
ZWRGcmFtZSA9IG1haW5GcmFtZTsKIAogICAgIGlmIChmb2N1c2VkRnJhbWUtPnZpZXcoKSAmJiBm
b2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoZXZlbnQp
KQogICAgICAgICBtb3VzZVByZXNzRXZlbnRSZXN1bHQgPSBUUlVFOwogCi0KICAgICBib29sIGhh
bmRsZWRFdmVudCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVu
dUV2ZW50KGV2ZW50KTsKICAgICBpZiAoIWhhbmRsZWRFdmVudCkKICAgICAgICAgcmV0dXJuIEZB
TFNFOwpAQCAtMzUzLDM3ICszNjksNDIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWUKICAgICBp
ZiAoIWNvcmVNZW51KQogICAgICAgICByZXR1cm4gbW91c2VQcmVzc0V2ZW50UmVzdWx0OwogCi0g
ICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwgaXQncyBiZWNhdXNlIFdlYkNvcmUgaXMgZ29pbmcgdG8g
c2hvdyB0aGUKLSAgICAvLyBkZWZhdWx0IGNvbnRleHQgbWVudS4gV2UgY2hlY2sgb3VyIHNldHRp
bmcgdG8gZmlndXJlIG91dAotICAgIC8vIHdoZXRoZXIgd2Ugd2FudCBpdCBvciBub3QuCi0gICAg
V2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyh3ZWJWaWV3KTsKLSAgICBnYm9vbGVhbiBlbmFibGVEZWZhdWx0Q29udGV4dE1lbnU7Ci0gICAg
Z19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZW5hYmxlLWRlZmF1bHQtY29udGV4dC1tZW51IiwgJmVu
YWJsZURlZmF1bHRDb250ZXh0TWVudSwgTlVMTCk7CisgICAgR3RrTWVudSogZGVmYXVsdE1lbnUg
PSBHVEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoZGVm
YXVsdE1lbnUpIHsKKyAgICAgICAgLy8gV2UgY29ubmVjdCB0aGUgImFjdGl2YXRlIiBzaWduYWwg
aGVyZSByYXRoZXIgdGhhbiBpbiBDb250ZXh0TWVudUd0ayB0byBhdm9pZAorICAgICAgICAvLyBh
IGxheWVyaW5nIHZpb2xhdGlvbi4gQ29udGV4dE1lbnVHdGsgc2hvdWxkIG5vdCBrbm93IGFib3V0
IHRoZSBDb250ZXh0TWVudUNvbnRyb2xsZXIuCisgICAgICAgIGd0a19jb250YWluZXJfZm9yZWFj
aChHVEtfQ09OVEFJTkVSKGRlZmF1bHRNZW51KSwgKEd0a0NhbGxiYWNrKWNvbnRleHRNZW51Q29u
bmVjdEFjdGl2YXRlLCBjb250cm9sbGVyKTsKKyAgICB9CiAKLSAgICBpZiAoIWVuYWJsZURlZmF1
bHRDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGlmICghaGl0VGVzdFJl
c3VsdCkgeworICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBh
cmVNb3VzZUV2ZW50Rm9yRnJhbWUoZm9jdXNlZEZyYW1lLCBldmVudCk7CisgICAgICAgIGhpdFRl
c3RSZXN1bHQgPSBhZG9wdEdSZWYoa2l0KG1ldi5oaXRUZXN0UmVzdWx0KCkpKTsKKyAgICB9CiAK
LSAgICBHdGtNZW51KiBtZW51ID0gR1RLX01FTlUoY29yZU1lbnUtPnBsYXRmb3JtRGVzY3JpcHRp
b24oKSk7Ci0gICAgaWYgKCFtZW51KQotICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgZ2Jvb2xl
YW4gaGFuZGxlZDsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19z
aWduYWxzW0NPTlRFWFRfTUVOVV0sIDAsIGRlZmF1bHRNZW51LCBoaXRUZXN0UmVzdWx0LmdldCgp
LCBrZXlib2FyZE1vZGUsICZoYW5kbGVkKTsKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgcmV0
dXJuIFRSVUU7CiAKLSAgICAvLyBXZSBjb25uZWN0IHRoZSAiYWN0aXZhdGUiIHNpZ25hbCBoZXJl
IHJhdGhlciB0aGFuIGluIENvbnRleHRNZW51R3RrIHRvIGF2b2lkCi0gICAgLy8gYSBsYXllcmlu
ZyB2aW9sYXRpb24uIENvbnRleHRNZW51R3RrIHNob3VsZCBub3Qga25vdyBhYm91dCB0aGUgQ29u
dGV4dE1lbnVDb250cm9sbGVyLgotICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJ
TkVSKG1lbnUpLCAoR3RrQ2FsbGJhY2spY29udGV4dE1lbnVDb25uZWN0QWN0aXZhdGUsIGNvbnRy
b2xsZXIpOworICAgIC8vIFJldHVybiBub3cgZmYgdGhlcmUncyBubyBkZWZhdWx0IGNvbnRleHQg
bWVudSBvciBpdCdzIGRpc2FibGVkIGJ5IGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0
aW5nLgorICAgIC8vIENoZWNrIGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0aW5nIGZv
ciBjb21wYXRpYmlsaXR5LgorICAgIGlmICghZGVmYXVsdE1lbnUgfHwgIWRlZmF1bHRDb250ZXh0
TWVudUVuYWJsZWQod2ViVmlldykpCisgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9QVVBd
LCAwLCBtZW51KTsKKyAgICAvLyBFbWl0IHBvcHVsYXRlLXBvcHVwIHNpZ25hbCBmb3IgY29tcGF0
aWJpbGl0eS4KKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWdu
YWxzW1BPUFVMQVRFX1BPUFVQXSwgMCwgZGVmYXVsdE1lbnUpOwogCiAgICAgLy8gSWYgdGhlIGNv
bnRleHQgbWVudSBpcyBub3cgZW1wdHksIGRvbid0IHNob3cgaXQuCi0gICAgR093blB0cjxHTGlz
dD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkp
OworICAgIEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdU
S19DT05UQUlORVIoZGVmYXVsdE1lbnUpKSk7CiAgICAgaWYgKCFpdGVtcykKICAgICAgICAgcmV0
dXJuIEZBTFNFOwogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwotICAgIHByaXYtPmN1cnJlbnRNZW51ID0gbWVudTsKKyAgICBwcml2LT5jdXJyZW50TWVu
dSA9IGRlZmF1bHRNZW51OwogICAgIHByaXYtPmxhc3RQb3B1cFhQb3NpdGlvbiA9IGV2ZW50Lmds
b2JhbFgoKTsKICAgICBwcml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSBldmVudC5nbG9iYWxZKCk7
CiAKLSAgICBndGtfbWVudV9wb3B1cChtZW51LCAwLCAwLCAmUG9wdXBNZW51UG9zaXRpb25GdW5j
LCB3ZWJWaWV3LCBldmVudC5idXR0b24oKSArIDEsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1l
KCkpOworICAgIGd0a19tZW51X3BvcHVwKGRlZmF1bHRNZW51LCAwLCAwLCAmUG9wdXBNZW51UG9z
aXRpb25GdW5jLCB3ZWJWaWV3LCBldmVudC5idXR0b24oKSArIDEsIGd0a19nZXRfY3VycmVudF9l
dmVudF90aW1lKCkpOwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC00MjQsNyArNDQ1LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIoR3RrV2lk
Z2V0KiB3aWRnZXQpCiAKICAgICBJbnRQb2ludCBnbG9iYWxQb2ludChjb252ZXJ0V2lkZ2V0UG9p
bnRUb1NjcmVlblBvaW50KHdpZGdldCwgbG9jYXRpb24pKTsKICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgZXZlbnQobG9jYXRpb24sIGdsb2JhbFBvaW50LCBSaWdodEJ1dHRvbiwgTW91c2VFdmVudFBy
ZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBndGtfZ2V0X2N1cnJlbnRfZXZl
bnRfdGltZSgpKTsKLSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9t
ZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCk7CisgICAgcmV0dXJuIHdl
YmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVco
d2lkZ2V0KSwgZXZlbnQsIHRydWUpOwogfQogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCkBA
IC03ODIsNyArODAzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19idXR0b25f
cHJlc3NfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnUKICAgICBwbGF0Zm9ybUV2
ZW50LnNldENsaWNrQ291bnQocHJpdi0+Y2xpY2tDb3VudGVyLmNsaWNrQ291bnRGb3JHZGtCdXR0
b25FdmVudCh3aWRnZXQsIGV2ZW50KSk7CiAKICAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAzKQot
ICAgICAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50
KHdlYlZpZXcsIFBsYXRmb3JtTW91c2VFdmVudChldmVudCkpOworICAgICAgICByZXR1cm4gd2Vi
a2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KHdlYlZpZXcsIFBsYXRmb3Jt
TW91c2VFdmVudChldmVudCksIGZhbHNlKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKQEAgLTIxNjYsNiAr
MjE4Nyw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdl
YlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFdoZW4gYSBjb250ZXh0IG1lbnUgaXMg
YWJvdXQgdG8gYmUgZGlzcGxheWVkIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQuCiAgICAgICoKICAg
ICAgKiBBZGQgbWVudSBpdGVtcyB0byAjbWVudSB0byBleHRlbmQgdGhlIGNvbnRleHQgbWVudS4K
KyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDEuNS4zOiBVc2UgI1dlYktpdFdlYlZpZXc6OmNv
bnRleHQtbWVudSBzaWduYWwgaW5zdGVhZC4KICAgICAgKi8KICAgICB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tQT1BVTEFURV9QT1BVUF0gPSBnX3NpZ25hbF9uZXcoInBvcHVsYXRlLXBvcHVwIiwK
ICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCkBAIC0yNzQ1LDYg
KzI3NjgsNDMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVX
UE9SVF9BVFRSSUJVVEVTKTsKIAogICAgIC8qCisgICAgICogV2ViS2l0V2ViVmlldzo6Y29udGV4
dC1tZW51CisgICAgICogQHdlYlZpZXc6IHRoZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNp
Z25hbAorICAgICAqIEBkZWZhdWx0X21lbnU6IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudQorICAg
ICAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktpdEhpdFRlc3RSZXN1bHQgd2l0aCB0aGUgY29u
dGV4dCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgKiBAa2V5Ym9hcmRfbW9kZTogJVRS
VUUgaWYgdGhlIGNvbnRleHQgbWVudSB3YXMgdHJpZ2dlcmVkIHVzaW5nIHRoZSBrZXlib2FyZAor
ICAgICAqCisgICAgICogRW1taXRlZCB3aGVuIGEgY29udGV4dCBtZW51IGlzIGFib3V0IHRvIGJl
IGRpc3BsYXllZCB0byBnaXZlIHRoZSBhcHBsaWNhdGlvbgorICAgICAqIGEgY2hhbmNlIHRvIGNy
ZWF0ZSBhbmQgaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51LiBJZiB5b3Ugb25seSB3YW50IHRv
IGFkZCBjdXN0b20KKyAgICAgKiBvcHRpb25zIHRvIHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSB5
b3UgY2FuIHNpbXBseSBtb2RpZnkgdGhlIGdpdmVuIEBkZWZhdWx0X21lbnUuCisgICAgICoKKyAg
ICAgKiBXaGVuIGtleWJvYXJkX21vZGUgaXMgJVRSVUUgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBn
aXZlbiBAaGl0X3Rlc3RfcmVzdWx0IHNob3VsZCBiZQorICAgICAqIHVzZWQgdG8gcG9zaXRpb24g
dGhlIHBvcHVwIG1lbnUuIFdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgYmVlbiB0cmlnZ2VyZWQg
YnkgYQorICAgICAqIG1vdXNlIGV2ZW50IHlvdSBjb3VsZCBlaXRoZXIgdXNlIHRoZSBAaGl0X3Rl
c3RfcmVzdWx0IGNvb3JkaW5hdGVzIG9yIHBhc3MgJU5VTEwKKyAgICAgKiB0byB0aGUgI0d0a01l
bnVQb3NpdGlvbkZ1bmMgcGFyYW1ldGVyIG9mIGd0a19tZW51X3BvcHVwKCkgZnVuY3Rpb24uCisg
ICAgICogTm90ZSB0aGF0IGNvb3JkaW5hdGVzIG9mIEBoaXRfdGVzdF9yZXN1bHQgYXJlIHJlbGF0
aXZlIHRvIEB3ZWJWaWV3IHdpbmRvdy4KKyAgICAgKgorICAgICAqIFdoZW4gdGhlIHNpZ25hbCBp
cyBoYW5kbGVkIGFuZCBhIHBvcHVwIG1lbnUgaGFzIGJlZW4gY3JlYXRlZCBieSB0aGUgYXBwbGlj
YXRpb24sCisgICAgICogJVRSVUUgc2hvdWxkIGJlIHJldHVybmVkLiBOb3RlIHRoYXQgd2hlbiB0
aGUgY29udGV4dCBtZW51IGlzIGhhbmRsZWQgYnkgdGhlCisgICAgICogYXBwbGljYXRpb24sIHRo
ZSAiZW5hYmxlLWRlZmF1bHQtY29udGV4dC1tZW51IiBzZXR0aW5nIHdpbGwgYmUgaWdub3JlZCBh
bmQKKyAgICAgKiAjV2ViS2l0V2ViVmlldzo6cG9wdWxhdGUtcG9wdXAgc2lnbmFsIHdvbid0IGJl
IGVtaXR0ZWQuCisgICAgICogSWYgeW91IGRvbid0IHdhbnQgYW55IGNvbnRleHQgbWVudSB0byBi
ZSBzaG93biwgeW91IGNhbiBzaW1wbHkgY29ubmVjdCB0byB0aGlzIHNpZ25hbAorICAgICAqIGFu
ZCByZXR1cm4gJVRSVUUgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLgorICAgICAqCisgICAg
ICogU2luY2U6IDEuNS4zCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ09O
VEVYVF9NRU5VXSA9IGdfc2lnbmFsX25ldygiY29udGV4dC1tZW51IiwKKyAgICAgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdz
KUdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfT0JKRUNUX0JPT0xFQU4s
CisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMywKKyAgICAgICAgICAgIEdUS19UWVBFX1dJ
REdFVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0hJVF9URVNUX1JFU1VMVCwKKyAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOKTsKKworICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9m
IHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92
aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0bWFyc2hhbC5saXN0CmluZGV4IDUzNzJjNTcuLjg2YmNhYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXRtYXJzaGFsLmxpc3QKQEAgLTIsNiArMiw3IEBAIEJPT0xFQU46RU5VTSxJTlQKIEJP
T0xFQU46SU5ULElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpF
Q1QKK0JPT0xFQU46T0JKRUNULE9CSkVDVCxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1Qs
RU5VTQogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVOVU0sQk9PTEVBTgogQk9PTEVBTjpPQkpFQ1Qs
T0JKRUNULE9CSkVDVCxPQkpFQ1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106401</attachid>
            <date>2011-09-06 02:50:25 -0700</date>
            <delta_ts>2011-09-07 01:37:14 -0700</delta_ts>
            <desc>Updated patch: untabify changelog to fix style</desc>
            <filename>context-menu5.diff</filename>
            <type>text/plain</type>
            <size>18524</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBlZjIwZGVlLi44YTI1ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTEtMDktMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIHNpZ25hbCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdG8gaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTkwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvdGVzdGhpdHRlc3RyZXN1bHQu
YzoKKyAgICAgICAgKGxvYWRfc3RhdHVzX2NiKTogVGVzdCB4LCB5IHByb3BlcnRpZXMgb2YgV2Vi
S2l0SGl0VGVzdFJlc3VsdC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5j
cHA6CisgICAgICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOiBB
ZGQgeCBhbmQgeSBjb25zdHJ1Y3Qgb25seSBwcm9wZXJ0aWVzIHRvIGtlZXAgdGhlCisgICAgICAg
IGNvb3JkaW5hdGVzIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB2aWV3J3Mgd2lkZ2V0LgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2NsYXNzX2luaXQpOiBNYXJrIGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudQor
ICAgICAgICBwcm9wZXJ0eSBhcyBkZXByZWNhdGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJhbWUpOgorICAgICAg
ICAoZGVmYXVsdENvbnRleHRNZW51RW5hYmxlZCk6IEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3
aGV0aGVyCisgICAgICAgIGRlZmF1bHQgY29udGV4dCBtZW51IHNldHRpbmcgaXMgZW5hYmxlZCBv
ciBub3QuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZl
bnQpOiBFbWl0IHRoZSBuZXcKKyAgICAgICAgY29udGV4dC1tZW51IHNpZ25hbC4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2J1dHRvbl9wcmVzc19ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdCk6IEFkZCBuZXcgY29udGV4dC1tZW51IHNpZ25hbCBhbmQgbWFyaworICAgICAgICBw
b3B1bGF0ZS1wb3B1cCBhcyBkZXByZWNhdGVkLgorICAgICAgICAqIHdlYmtpdG1hcnNoYWwubGlz
dDoKKwogMjAxMS0wOC0zMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0MTQyLCByOTQxNDQsIHI5
NDE0NSwgYW5kIHI5NDE0OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rl
c3RoaXR0ZXN0cmVzdWx0LmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0aGl0dGVzdHJl
c3VsdC5jCmluZGV4IDBkN2ZiMDUuLjIwMzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3Rlc3RzL3Rlc3RoaXR0ZXN0cmVzdWx0LmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVz
dHMvdGVzdGhpdHRlc3RyZXN1bHQuYwpAQCAtODMsNiArODMsNyBAQCBsb2FkX3N0YXR1c19jYihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LAogICAgICAgICBndWludCBjb250ZXh0OwogICAgICAgICBH
ZGtFdmVudCogZXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpOwogICAgICAg
ICBXZWJLaXRET01Ob2RlKiBub2RlOworICAgICAgICBnaW50IHgsIHk7CiAKICAgICAgICAgLyog
Q2xvc2UgZW5vdWdoIHRvIDAsMCAqLwogICAgICAgICBldmVudC0+YnV0dG9uLnggPSA1OwpAQCAt
OTgsNiArOTksMTEgQEAgbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywKICAg
ICAgICAgZ19vYmplY3RfZ2V0KHJlc3VsdCwgImlubmVyLW5vZGUiLCAmbm9kZSwgTlVMTCk7CiAg
ICAgICAgIGdfYXNzZXJ0KG5vZGUpOwogICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05P
REUobm9kZSkpOworCisgICAgICAgIGdfb2JqZWN0X2dldChyZXN1bHQsICJ4IiwgJngsICJ5Iiwg
JnksIE5VTEwpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoeCwgPT0sIDUpOworICAgICAgICBn
X2Fzc2VydF9jbXBpbnQoeSwgPT0sIDUpOworCiAgICAgICAgIC8qIFdlIGNhbiBvbmx5IHRlc3Qg
dGhlc2Ugbm9kZSB0eXBlcyBhdCB0aGUgbW9tZW50LiBJbiB0aGUKICAgICAgICAgICogaW5wdXQg
Y2FzZSB0aGVyZSBzZWVtcyB0byBiZSBhbiBleHRyYSBsYXllciB3aXRoIGEgRElWIG9uCiAgICAg
ICAgICAqIHRvcCBvZiB0aGUgaW5wdXQsIHdoaWNoIGdldHMgYXNzaWduZWQgdG8gdGhlIGlubmVy
LW5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVz
dHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3Vs
dC5jcHAKaW5kZXggY2I3YWM0Yi4uODNiNjc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGhpdHRlc3RyZXN1bHQuaCIKIAorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR093blB0ci5o
IgogI2luY2x1ZGUgIkdSZWZQdHIuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC00
OSw2ICs1MSw3IEBAIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUgewogICAgIGNo
YXIqIGltYWdlVVJJOwogICAgIGNoYXIqIG1lZGlhVVJJOwogICAgIEdSZWZQdHI8V2ViS2l0RE9N
Tm9kZT4gaW5uZXJOb2RlOworICAgIFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uOwogfTsKIAog
ZW51bSB7CkBAIC01OCw3ICs2MSw5IEBAIGVudW0gewogICAgIFBST1BfTElOS19VUkksCiAgICAg
UFJPUF9JTUFHRV9VUkksCiAgICAgUFJPUF9NRURJQV9VUkksCi0gICAgUFJPUF9JTk5FUl9OT0RF
CisgICAgUFJPUF9JTk5FUl9OT0RFLAorICAgIFBST1BfWCwKKyAgICBQUk9QX1kKIH07CiAKIHN0
YXRpYyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQpAQCAtMTAxLDYgKzEwNiwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQogICAgIGNhc2Ug
UFJPUF9JTk5FUl9OT0RFOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHByaXYt
PmlubmVyTm9kZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9YOgorICAg
ICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPnBvc2l0aW9uLngoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUs
IHByaXYtPnBvc2l0aW9uLnkoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SUQs
IHBzcGVjKTsKICAgICB9CkBAIC0xMzAsNiArMTQxLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJCiAgICAgY2FzZSBQUk9QX0lOTkVSX05PREU6CiAgICAgICAgIHByaXYtPmlubmVyTm9kZSA9
IHN0YXRpY19jYXN0PFdlYktpdERPTU5vZGUqPihnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAgIHByaXYtPnBvc2l0aW9u
LnNldFgoZ192YWx1ZV9nZXRfaW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9ZOgorICAgICAgICBwcml2LT5wb3NpdGlvbi5zZXRZKGdfdmFsdWVfZ2V0X2ludCh2YWx1
ZSkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwc3BlYyk7CiAgICAgfQpA
QCAtMjI1LDYgKzI0MiwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Ns
YXNzX2luaXQoV2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzKiB3ZWJIaXRUZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9E
T01fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUg
fCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0SGl0
VGVzdFJlc3VsdDp4OgorICAgICAqCisgICAgICogVGhlIHggY29vcmRpbnRhdGUgb2YgdGhlIGV2
ZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2luZG93LgorICAgICAqCisgICAgICogU2luY2U6
IDEuNS4zCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmpl
Y3RDbGFzcywgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2ludCgieCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIlggY29vcmRpbmF0ZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgeCBjb29yZGludGF0ZSBvZiB0
aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHZpZXcncyB3aW5kb3cuIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5ULCBHX01BWElO
VCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0SGl0VGVzdFJl
c3VsdDp5OgorICAgICAqCisgICAgICogVGhlIHggY29vcmRpbnRhdGUgb2YgdGhlIGV2ZW50IHJl
bGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2luZG93LgorICAgICAqCisgICAgICogU2luY2U6IDEuNS4z
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFz
cywgUFJPUF9ZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2ludCgieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIlkgY29vcmRpbmF0ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgeSBjb29yZGludGF0ZSBvZiB0aGUgZXZl
bnQgcmVsYXRpdmUgdG8gdGhlIHZpZXcncyB3aW5kb3cuIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5ULCBHX01BWElOVCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NP
TlNUUlVDVF9PTkxZKSkpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYkhpdFRl
c3RSZXN1bHRDbGFzcywgc2l6ZW9mKFdlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRlKSk7CiB9CiAK
QEAgLTI0Myw2ICsyODgsOCBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIEdPd25QdHI8Y2hhcj4gaW1hZ2VVUkkoMCk7
CiAgICAgR093blB0cjxjaGFyPiBtZWRpYVVSSSgwKTsKICAgICBXZWJLaXRET01Ob2RlKiBub2Rl
ID0gMDsKKyAgICBXZWJDb3JlOjpGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQ7CiAKICAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRf
TElOSzsKQEAgLTI2OCwxMiArMzE1LDIxIEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgaWYgKHJlc3VsdC5pbm5lck5v
blNoYXJlZE5vZGUoKSkKICAgICAgICAgbm9kZSA9IGtpdChyZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkpOwogCisgICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQudGFyZ2V0RnJhbWUoKTsKKyAgICBp
ZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXcoKSkgeworICAgICAgICAvLyBDb252
ZXJ0IGRvY3VtZW50IGNvb3JkcyB0byB3aWRnZXQgY29vcmRzLgorICAgICAgICBwb2ludCA9IHRh
cmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnBvaW50KCkpOworICAg
IH0gZWxzZQorICAgICAgICBwb2ludCA9IHJlc3VsdC5wb2ludCgpOworCiAgICAgcmV0dXJuIFdF
QktJVF9ISVRfVEVTVF9SRVNVTFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0hJVF9URVNUX1JF
U1VMVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxp
bmstdXJpIiwgbGlua1VSSS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImltYWdlLXVyaSIsIGltYWdlVVJJLmdldCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVkaWEtdXJpIiwgbWVkaWFVUkku
Z2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
b250ZXh0IiwgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImlubmVyLW5vZGUiLCBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAieCIsIHBvaW50LngoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLCBwb2ludC55KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMzRlNDMyMS4u
NjM5OGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwCkBAIC03NjEsNiArNzYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19jbGFzc19pbml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAqIHJpZ2h0
LWNsaWNrcyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBwYWdlIGl0c2VsZi4KICAgICAgKgogICAg
ICAqIFNpbmNlOiAxLjEuMTgKKyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDEuNS4zOiBVc2Ug
I1dlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudSBzaWduYWwgaW5zdGVhZC4KICAgICAgKi8KICAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9ERUZBVUxUX0NPTlRFWFRf
TUVOVSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAz
OGJlNWEyLi42MzkwZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCkBAIC0yMDQsNiArMjA0LDcgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAg
ICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRf
QVRUUklCVVRFU19DSEFOR0VELAorICAgIENPTlRFWFRfTUVOVSwKIAogICAgIExBU1RfU0lHTkFM
CiB9OwpAQCAtMzA4LDIzICszMDksMzcgQEAgc3RhdGljIHZvaWQgY29udGV4dE1lbnVDb25uZWN0
QWN0aXZhdGUoR3RrTWVudUl0ZW0qIGl0ZW0sIENvbnRleHRNZW51Q29udHJvbGxlcioKICAgICBn
X3NpZ25hbF9jb25uZWN0KGl0ZW0sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVJ
dGVtQWN0aXZhdGVkKSwgY29udHJvbGxlcik7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3N0YXRpYyBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzIHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKKyAgICByZXR1cm4gZnJh
bWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBvaW50LCBldmVudCk7
Cit9CisKKy8vIENoZWNrIGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0aW5nIGZvciBj
b21wYXRpYmlsaXR5Lgorc3RhdGljIGJvb2wgZGVmYXVsdENvbnRleHRNZW51RW5hYmxlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gZW5h
YmxlRGVmYXVsdENvbnRleHRNZW51OworICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImVuYWJs
ZS1kZWZhdWx0LWNvbnRleHQtbWVudSIsICZlbmFibGVEZWZhdWx0Q29udGV4dE1lbnUsIE5VTEwp
OworICAgIHJldHVybiBlbmFibGVEZWZhdWx0Q29udGV4dE1lbnU7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgYm9vbCBrZXli
b2FyZE1vZGUpCiB7CiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgcGFnZS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICBGcmFtZSog
Zm9jdXNlZEZyYW1lOwogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsK
ICAgICBnYm9vbGVhbiBtb3VzZVByZXNzRXZlbnRSZXN1bHQgPSBGQUxTRTsKKyAgICBHUmVmUHRy
PFdlYktpdEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CiAKICAgICBpZiAoIW1haW5GcmFt
ZS0+dmlldygpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBtYWluRnJhbWUtPnZpZXco
KS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgaWYgKHBhZ2UtPmZyYW1lQ291bnQo
KSkgewotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUpOwotICAgICAgICBJbnRQb2ludCBwb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBtZXYgPSBtYWluRnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVl
c3QsIHBvaW50LCBldmVudCk7Ci0KKyAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKG1haW5GcmFtZSwgZXZlbnQpOwogICAg
ICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0VGVz
dFJlc3VsdChtZXYpOwogICAgICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICAgICAgdGFy
Z2V0RnJhbWUgPSBtYWluRnJhbWU7CkBAIC0zMzQsMTMgKzM0OSwxNCBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZQogICAgICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3Vz
ZWRGcmFtZSh0YXJnZXRGcmFtZSk7CiAgICAgICAgICAgICBmb2N1c2VkRnJhbWUgPSB0YXJnZXRG
cmFtZTsKICAgICAgICAgfQorICAgICAgICBpZiAoZm9jdXNlZEZyYW1lID09IG1haW5GcmFtZSkK
KyAgICAgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBhZG9wdEdSZWYoa2l0KG1ldi5oaXRUZXN0UmVz
dWx0KCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgZm9jdXNlZEZyYW1lID0gbWFpbkZyYW1lOwog
CiAgICAgaWYgKGZvY3VzZWRGcmFtZS0+dmlldygpICYmIGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCkpCiAgICAgICAgIG1vdXNlUHJlc3NF
dmVudFJlc3VsdCA9IFRSVUU7CiAKLQogICAgIGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpOwogICAgIGlm
ICghaGFuZGxlZEV2ZW50KQogICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0zNTMsMzcgKzM2OSw0
MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51
X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAg
IHJldHVybiBtb3VzZVByZXNzRXZlbnRSZXN1bHQ7CiAKLSAgICAvLyBJZiB3ZSByZWFjaCBoZXJl
LCBpdCdzIGJlY2F1c2UgV2ViQ29yZSBpcyBnb2luZyB0byBzaG93IHRoZQotICAgIC8vIGRlZmF1
bHQgY29udGV4dCBtZW51LiBXZSBjaGVjayBvdXIgc2V0dGluZyB0byBmaWd1cmUgb3V0Ci0gICAg
Ly8gd2hldGhlciB3ZSB3YW50IGl0IG9yIG5vdC4KLSAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOwotICAgIGdib29s
ZWFuIGVuYWJsZURlZmF1bHRDb250ZXh0TWVudTsKLSAgICBnX29iamVjdF9nZXQoc2V0dGluZ3Ms
ICJlbmFibGUtZGVmYXVsdC1jb250ZXh0LW1lbnUiLCAmZW5hYmxlRGVmYXVsdENvbnRleHRNZW51
LCBOVUxMKTsKKyAgICBHdGtNZW51KiBkZWZhdWx0TWVudSA9IEdUS19NRU5VKGNvcmVNZW51LT5w
bGF0Zm9ybURlc2NyaXB0aW9uKCkpOworICAgIGlmIChkZWZhdWx0TWVudSkgeworICAgICAgICAv
LyBXZSBjb25uZWN0IHRoZSAiYWN0aXZhdGUiIHNpZ25hbCBoZXJlIHJhdGhlciB0aGFuIGluIENv
bnRleHRNZW51R3RrIHRvIGF2b2lkCisgICAgICAgIC8vIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLiBD
b250ZXh0TWVudUd0ayBzaG91bGQgbm90IGtub3cgYWJvdXQgdGhlIENvbnRleHRNZW51Q29udHJv
bGxlci4KKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIoZGVmYXVs
dE1lbnUpLCAoR3RrQ2FsbGJhY2spY29udGV4dE1lbnVDb25uZWN0QWN0aXZhdGUsIGNvbnRyb2xs
ZXIpOworICAgIH0KIAotICAgIGlmICghZW5hYmxlRGVmYXVsdENvbnRleHRNZW51KQotICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFoaXRUZXN0UmVzdWx0KSB7CisgICAgICAgIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnRGb3JGcmFtZShm
b2N1c2VkRnJhbWUsIGV2ZW50KTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdCA9IGFkb3B0R1JlZihr
aXQobWV2LmhpdFRlc3RSZXN1bHQoKSkpOworICAgIH0KIAotICAgIEd0a01lbnUqIG1lbnUgPSBH
VEtfTUVOVShjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKLSAgICBpZiAoIW1lbnUp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBnYm9vbGVhbiBoYW5kbGVkOworICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ09OVEVYVF9NRU5VXSwg
MCwgZGVmYXVsdE1lbnUsIGhpdFRlc3RSZXN1bHQuZ2V0KCksIGtleWJvYXJkTW9kZSwgJmhhbmRs
ZWQpOworICAgIGlmIChoYW5kbGVkKQorICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgIC8vIFdl
IGNvbm5lY3QgdGhlICJhY3RpdmF0ZSIgc2lnbmFsIGhlcmUgcmF0aGVyIHRoYW4gaW4gQ29udGV4
dE1lbnVHdGsgdG8gYXZvaWQKLSAgICAvLyBhIGxheWVyaW5nIHZpb2xhdGlvbi4gQ29udGV4dE1l
bnVHdGsgc2hvdWxkIG5vdCBrbm93IGFib3V0IHRoZSBDb250ZXh0TWVudUNvbnRyb2xsZXIuCi0g
ICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIobWVudSksIChHdGtDYWxsYmFj
ayljb250ZXh0TWVudUNvbm5lY3RBY3RpdmF0ZSwgY29udHJvbGxlcik7CisgICAgLy8gUmV0dXJu
IG5vdyBmZiB0aGVyZSdzIG5vIGRlZmF1bHQgY29udGV4dCBtZW51IG9yIGl0J3MgZGlzYWJsZWQg
YnkgZW5hYmxlLWRlZmF1bHQtY29udGV4dC1tZW51IHNldHRpbmcuCisgICAgLy8gQ2hlY2sgZW5h
YmxlLWRlZmF1bHQtY29udGV4dC1tZW51IHNldHRpbmcgZm9yIGNvbXBhdGliaWxpdHkuCisgICAg
aWYgKCFkZWZhdWx0TWVudSB8fCAhZGVmYXVsdENvbnRleHRNZW51RW5hYmxlZCh3ZWJWaWV3KSkK
KyAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJr
aXRfd2ViX3ZpZXdfc2lnbmFsc1tQT1BVTEFURV9QT1BVUF0sIDAsIG1lbnUpOworICAgIC8vIEVt
aXQgcG9wdWxhdGUtcG9wdXAgc2lnbmFsIGZvciBjb21wYXRpYmlsaXR5LgorICAgIGdfc2lnbmFs
X2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9QVVBdLCAw
LCBkZWZhdWx0TWVudSk7CiAKICAgICAvLyBJZiB0aGUgY29udGV4dCBtZW51IGlzIG5vdyBlbXB0
eSwgZG9uJ3Qgc2hvdyBpdC4KLSAgICBHT3duUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgR093blB0cjxHTGlzdD4g
aXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihkZWZhdWx0TWVu
dSkpKTsKICAgICBpZiAoIWl0ZW1zKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgcHJpdi0+Y3VycmVu
dE1lbnUgPSBtZW51OworICAgIHByaXYtPmN1cnJlbnRNZW51ID0gZGVmYXVsdE1lbnU7CiAgICAg
cHJpdi0+bGFzdFBvcHVwWFBvc2l0aW9uID0gZXZlbnQuZ2xvYmFsWCgpOwogICAgIHByaXYtPmxh
c3RQb3B1cFlQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFkoKTsKIAotICAgIGd0a19tZW51X3BvcHVw
KG1lbnUsIDAsIDAsICZQb3B1cE1lbnVQb3NpdGlvbkZ1bmMsIHdlYlZpZXcsIGV2ZW50LmJ1dHRv
bigpICsgMSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CisgICAgZ3RrX21lbnVfcG9w
dXAoZGVmYXVsdE1lbnUsIDAsIDAsICZQb3B1cE1lbnVQb3NpdGlvbkZ1bmMsIHdlYlZpZXcsIGV2
ZW50LmJ1dHRvbigpICsgMSwgZ3RrX2dldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7CiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKQEAgLTQyNCw3ICs0NDUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcihHdGtXaWRnZXQqIHdpZGdldCkKIAogICAgIElu
dFBvaW50IGdsb2JhbFBvaW50KGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0
LCBsb2NhdGlvbikpOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChsb2NhdGlvbiwgZ2xv
YmFsUG9pbnQsIFJpZ2h0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGd0a19nZXRfY3VycmVudF9ldmVudF90aW1lKCkpOwotICAgIHJldHVy
biB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VCS0lUX1dFQl9W
SUVXKHdpZGdldCksIGV2ZW50KTsKKyAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRf
Y29udGV4dF9tZW51X2V2ZW50KFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLCBldmVudCwgdHJ1ZSk7
CiB9CiAKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKQEAgLTc4Miw3ICs4MDMsNyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2J1dHRvbl9wcmVzc19ldmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRCdQogICAgIHBsYXRmb3JtRXZlbnQuc2V0Q2xpY2tDb3VudChwcml2
LT5jbGlja0NvdW50ZXIuY2xpY2tDb3VudEZvckdka0J1dHRvbkV2ZW50KHdpZGdldCwgZXZlbnQp
KTsKIAogICAgIGlmIChldmVudC0+YnV0dG9uID09IDMpCi0gICAgICAgIHJldHVybiB3ZWJraXRf
d2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZvcm1Nb3Vz
ZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9j
b250ZXh0X21lbnVfZXZlbnQod2ViVmlldywgUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50KSwgZmFs
c2UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZS0+dmlldygpKQpAQCAtMjE2Niw2ICsyMTg3LDggQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgICogV2hlbiBhIGNvbnRleHQgbWVudSBpcyBhYm91dCB0byBiZSBkaXNwbGF5ZWQg
dGhpcyBzaWduYWwgaXMgZW1pdHRlZC4KICAgICAgKgogICAgICAqIEFkZCBtZW51IGl0ZW1zIHRv
ICNtZW51IHRvIGV4dGVuZCB0aGUgY29udGV4dCBtZW51LgorICAgICAqCisgICAgICogRGVwcmVj
YXRlZDogMS41LjM6IFVzZSAjV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51IHNpZ25hbCBpbnN0
ZWFkLgogICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1BPUFVMQVRFX1BPUFVQ
XSA9IGdfc2lnbmFsX25ldygicG9wdWxhdGUtcG9wdXAiLAogICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKQEAgLTI3NDUsNiArMjc2OCw0MyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdD
bGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAg
ICAgLyoKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpjb250ZXh0LW1lbnUKKyAgICAgKiBAd2ViVmll
dzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQGRlZmF1bHRf
bWVudTogdGhlIGRlZmF1bHQgY29udGV4dCBtZW51CisgICAgICogQGhpdF90ZXN0X3Jlc3VsdDog
YSAjV2ViS2l0SGl0VGVzdFJlc3VsdCB3aXRoIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBv
c2l0aW9uLgorICAgICAqIEBrZXlib2FyZF9tb2RlOiAlVFJVRSBpZiB0aGUgY29udGV4dCBtZW51
IHdhcyB0cmlnZ2VyZWQgdXNpbmcgdGhlIGtleWJvYXJkCisgICAgICoKKyAgICAgKiBFbW1pdGVk
IHdoZW4gYSBjb250ZXh0IG1lbnUgaXMgYWJvdXQgdG8gYmUgZGlzcGxheWVkIHRvIGdpdmUgdGhl
IGFwcGxpY2F0aW9uCisgICAgICogYSBjaGFuY2UgdG8gY3JlYXRlIGFuZCBoYW5kbGUgaXRzIG93
biBjb250ZXh0IG1lbnUuIElmIHlvdSBvbmx5IHdhbnQgdG8gYWRkIGN1c3RvbQorICAgICAqIG9w
dGlvbnMgdG8gdGhlIGRlZmF1bHQgY29udGV4dCBtZW51IHlvdSBjYW4gc2ltcGx5IG1vZGlmeSB0
aGUgZ2l2ZW4gQGRlZmF1bHRfbWVudS4KKyAgICAgKgorICAgICAqIFdoZW4ga2V5Ym9hcmRfbW9k
ZSBpcyAlVFJVRSB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGdpdmVuIEBoaXRfdGVzdF9yZXN1bHQg
c2hvdWxkIGJlCisgICAgICogdXNlZCB0byBwb3NpdGlvbiB0aGUgcG9wdXAgbWVudS4gV2hlbiB0
aGUgY29udGV4dCBtZW51IGhhcyBiZWVuIHRyaWdnZXJlZCBieSBhCisgICAgICogbW91c2UgZXZl
bnQgeW91IGNvdWxkIGVpdGhlciB1c2UgdGhlIEBoaXRfdGVzdF9yZXN1bHQgY29vcmRpbmF0ZXMg
b3IgcGFzcyAlTlVMTAorICAgICAqIHRvIHRoZSAjR3RrTWVudVBvc2l0aW9uRnVuYyBwYXJhbWV0
ZXIgb2YgZ3RrX21lbnVfcG9wdXAoKSBmdW5jdGlvbi4KKyAgICAgKiBOb3RlIHRoYXQgY29vcmRp
bmF0ZXMgb2YgQGhpdF90ZXN0X3Jlc3VsdCBhcmUgcmVsYXRpdmUgdG8gQHdlYlZpZXcgd2luZG93
LgorICAgICAqCisgICAgICogV2hlbiB0aGUgc2lnbmFsIGlzIGhhbmRsZWQgYW5kIGEgcG9wdXAg
bWVudSBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwKKyAgICAgKiAlVFJVRSBz
aG91bGQgYmUgcmV0dXJuZWQuIE5vdGUgdGhhdCB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaXMgaGFu
ZGxlZCBieSB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbiwgdGhlICJlbmFibGUtZGVmYXVsdC1jb250
ZXh0LW1lbnUiIHNldHRpbmcgd2lsbCBiZSBpZ25vcmVkIGFuZAorICAgICAqICNXZWJLaXRXZWJW
aWV3Ojpwb3B1bGF0ZS1wb3B1cCBzaWduYWwgd29uJ3QgYmUgZW1pdHRlZC4KKyAgICAgKiBJZiB5
b3UgZG9uJ3Qgd2FudCBhbnkgY29udGV4dCBtZW51IHRvIGJlIHNob3duLCB5b3UgY2FuIHNpbXBs
eSBjb25uZWN0IHRvIHRoaXMgc2lnbmFsCisgICAgICogYW5kIHJldHVybiAlVFJVRSB3aXRob3V0
IGRvaW5nIGFueXRoaW5nIGVsc2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS41LjMKKyAgICAg
Ki8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDT05URVhUX01FTlVdID0gZ19zaWduYWxf
bmV3KCJjb250ZXh0LW1lbnUiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmll
d0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpR19TSUdOQUxfUlVOX0xBU1QsCisg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVF9PQkpFQ1RfQk9PTEVBTiwKKyAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCAzLAorICAgICAgICAgICAgR1RLX1RZUEVfV0lER0VULAorICAgICAgICAgICAgV0VC
S0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4pOwor
CisgICAgLyoKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAg
ICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jcmVhdGVfd2ViX3ZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKaW5k
ZXggNTM3MmM1Ny4uODZiY2FhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdApA
QCAtMiw2ICsyLDcgQEAgQk9PTEVBTjpFTlVNLElOVAogQk9PTEVBTjpJTlQsSU5ULFNUUklORwog
Qk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVAorQk9PTEVBTjpPQkpFQ1QsT0JK
RUNULEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULE9CSkVDVCxFTlVNCiBCT09MRUFOOk9CSkVDVCxP
QkpFQ1QsRU5VTSxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsT0JKRUNULE9CSkVDVAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106556</attachid>
            <date>2011-09-07 01:37:14 -0700</date>
            <delta_ts>2012-03-22 08:10:08 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>context-menu-signal6.diff</filename>
            <type>text/plain</type>
            <size>18253</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBlZjIwZGVlLi4xMTUzMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIHNpZ25hbCB0byBhbGxvdyBhcHBs
aWNhdGlvbnMgdG8gaGFuZGxlIGl0cyBvd24gY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTkwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvdGVzdGhpdHRlc3RyZXN1bHQu
YzoKKyAgICAgICAgKGxvYWRfc3RhdHVzX2NiKTogVGVzdCB4LCB5IHByb3BlcnRpZXMgb2YgV2Vi
S2l0SGl0VGVzdFJlc3VsdC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5j
cHA6CisgICAgICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQpOiBBZGQgeCBhbmQgeSBjb25zdHJ1Y3Qgb25s
eQorICAgICAgICBwcm9wZXJ0aWVzIHRvIGtlZXAgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBldmVu
dCByZWxhdGl2ZSB0byB2aWV3J3MKKyAgICAgICAgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0Ojpr
aXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQpOiBNYXJrIGVuYWJsZS1kZWZhdWx0LWNvbnRl
eHQtbWVudQorICAgICAgICBwcm9wZXJ0eSBhcyBkZXByZWNhdGVkLgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJhbWUp
OgorICAgICAgICAoZGVmYXVsdENvbnRleHRNZW51RW5hYmxlZCk6IEhlbHBlciBmdW5jdGlvbiB0
byBjaGVjayB3aGV0aGVyCisgICAgICAgIGRlZmF1bHQgY29udGV4dCBtZW51IHNldHRpbmcgaXMg
ZW5hYmxlZCBvciBub3QuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0
X21lbnVfZXZlbnQpOiBFbWl0IHRoZSBuZXcKKyAgICAgICAgY29udGV4dC1tZW51IHNpZ25hbC4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXIpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2J1dHRvbl9wcmVzc19ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6IEFkZCBuZXcgY29udGV4dC1tZW51IHNpZ25hbCBhbmQgbWFyawor
ICAgICAgICBwb3B1bGF0ZS1wb3B1cCBhcyBkZXByZWNhdGVkLgorICAgICAgICAqIHdlYmtpdG1h
cnNoYWwubGlzdDoKKwogMjAxMS0wOC0zMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk0MTQyLCBy
OTQxNDQsIHI5NDE0NSwgYW5kIHI5NDE0OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3RoaXR0ZXN0cmVzdWx0LmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
aGl0dGVzdHJlc3VsdC5jCmluZGV4IDBkN2ZiMDUuLjIwMzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RoaXR0ZXN0cmVzdWx0LmMKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvdGVzdHMvdGVzdGhpdHRlc3RyZXN1bHQuYwpAQCAtODMsNiArODMsNyBAQCBsb2FkX3N0
YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LAogICAgICAgICBndWludCBjb250ZXh0Owog
ICAgICAgICBHZGtFdmVudCogZXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1Mp
OwogICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlOworICAgICAgICBnaW50IHgsIHk7CiAKICAg
ICAgICAgLyogQ2xvc2UgZW5vdWdoIHRvIDAsMCAqLwogICAgICAgICBldmVudC0+YnV0dG9uLngg
PSA1OwpAQCAtOTgsNiArOTksMTEgQEAgbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywKICAgICAgICAgZ19vYmplY3RfZ2V0KHJlc3VsdCwgImlubmVyLW5vZGUiLCAmbm9kZSwg
TlVMTCk7CiAgICAgICAgIGdfYXNzZXJ0KG5vZGUpOwogICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX05PREUobm9kZSkpOworCisgICAgICAgIGdfb2JqZWN0X2dldChyZXN1bHQsICJ4Iiwg
JngsICJ5IiwgJnksIE5VTEwpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoeCwgPT0sIDUpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQoeSwgPT0sIDUpOworCiAgICAgICAgIC8qIFdlIGNhbiBv
bmx5IHRlc3QgdGhlc2Ugbm9kZSB0eXBlcyBhdCB0aGUgbW9tZW50LiBJbiB0aGUKICAgICAgICAg
ICogaW5wdXQgY2FzZSB0aGVyZSBzZWVtcyB0byBiZSBhbiBleHRyYSBsYXllciB3aXRoIGEgRElW
IG9uCiAgICAgICAgICAqIHRvcCBvZiB0aGUgaW5wdXQsIHdoaWNoIGdldHMgYXNzaWduZWQgdG8g
dGhlIGlubmVyLW5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0
dGVzdHJlc3VsdC5jcHAKaW5kZXggY2I3YWM0Yi4uODNiNjc1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMjEsNiArMjEsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGhpdHRlc3RyZXN1bHQuaCIK
IAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R093blB0ci5oIgogI2luY2x1ZGUgIkdSZWZQdHIuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCkBAIC00OSw2ICs1MSw3IEBAIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUg
ewogICAgIGNoYXIqIGltYWdlVVJJOwogICAgIGNoYXIqIG1lZGlhVVJJOwogICAgIEdSZWZQdHI8
V2ViS2l0RE9NTm9kZT4gaW5uZXJOb2RlOworICAgIFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9u
OwogfTsKIAogZW51bSB7CkBAIC01OCw3ICs2MSw5IEBAIGVudW0gewogICAgIFBST1BfTElOS19V
UkksCiAgICAgUFJPUF9JTUFHRV9VUkksCiAgICAgUFJPUF9NRURJQV9VUkksCi0gICAgUFJPUF9J
Tk5FUl9OT0RFCisgICAgUFJPUF9JTk5FUl9OT0RFLAorICAgIFBST1BfWCwKKyAgICBQUk9QX1kK
IH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZmluYWxpemUoR09iamVj
dCogb2JqZWN0KQpAQCAtMTAxLDYgKzEwNiwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SQog
ICAgIGNhc2UgUFJPUF9JTk5FUl9OT0RFOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIHByaXYtPmlubmVyTm9kZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9YOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPnBvc2l0aW9uLngoKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBnX3ZhbHVlX3NldF9p
bnQodmFsdWUsIHByaXYtPnBvc2l0aW9uLnkoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BlcnR5SUQsIHBzcGVjKTsKICAgICB9CkBAIC0xMzAsNiArMTQxLDEyIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcGVydHlJCiAgICAgY2FzZSBQUk9QX0lOTkVSX05PREU6CiAgICAgICAgIHByaXYtPmlu
bmVyTm9kZSA9IHN0YXRpY19jYXN0PFdlYktpdERPTU5vZGUqPihnX3ZhbHVlX2dldF9vYmplY3Qo
dmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAgIHByaXYt
PnBvc2l0aW9uLnNldFgoZ192YWx1ZV9nZXRfaW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBwcml2LT5wb3NpdGlvbi5zZXRZKGdfdmFsdWVfZ2V0
X2ludCh2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwc3BlYyk7
CiAgICAgfQpAQCAtMjI1LDYgKzI0MiwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NsYXNzX2luaXQoV2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzKiB3ZWJIaXRUZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfVFlQRV9ET01fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCisgICAgLyoqCisgICAgICog
V2ViS2l0SGl0VGVzdFJlc3VsdDp4OgorICAgICAqCisgICAgICogVGhlIHggY29vcmRpbnRhdGUg
b2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2luZG93LgorICAgICAqCisgICAg
ICogU2luY2U6IDEuNS4zCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2ludCgieCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlggY29vcmRpbmF0ZSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgeCBjb29yZGlu
dGF0ZSBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHZpZXcncyB3aW5kb3cuIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5U
LCBHX01BWElOVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0
SGl0VGVzdFJlc3VsdDp5OgorICAgICAqCisgICAgICogVGhlIHggY29vcmRpbnRhdGUgb2YgdGhl
IGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3J3Mgd2luZG93LgorICAgICAqCisgICAgICogU2lu
Y2U6IDEuNS4zCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShv
YmplY3RDbGFzcywgUFJPUF9ZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2ludCgieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIlkgY29vcmRpbmF0ZSIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgeSBjb29yZGludGF0ZSBv
ZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHZpZXcncyB3aW5kb3cuIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOSU5ULCBHX01B
WElOVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KHdlYkhpdFRlc3RSZXN1bHRDbGFzcywgc2l6ZW9mKFdlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRl
KSk7CiB9CiAKQEAgLTI0Myw2ICsyODgsOCBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29u
c3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIEdPd25QdHI8Y2hhcj4gaW1h
Z2VVUkkoMCk7CiAgICAgR093blB0cjxjaGFyPiBtZWRpYVVSSSgwKTsKICAgICBXZWJLaXRET01O
b2RlKiBub2RlID0gMDsKKyAgICBXZWJDb3JlOjpGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQ7CiAKICAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NPTlRFWFRfTElOSzsKQEAgLTI2OCwxMiArMzE1LDIxIEBAIFdlYktpdEhpdFRlc3RSZXN1bHQq
IGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgaWYgKHJlc3Vs
dC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgbm9kZSA9IGtpdChyZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCkpOwogCisgICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQudGFyZ2V0RnJhbWUo
KTsKKyAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXcoKSkgeworICAgICAg
ICAvLyBDb252ZXJ0IGRvY3VtZW50IGNvb3JkcyB0byB3aWRnZXQgY29vcmRzLgorICAgICAgICBw
b2ludCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnBvaW50
KCkpOworICAgIH0gZWxzZQorICAgICAgICBwb2ludCA9IHJlc3VsdC5wb2ludCgpOworCiAgICAg
cmV0dXJuIFdFQktJVF9ISVRfVEVTVF9SRVNVTFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0hJ
VF9URVNUX1JFU1VMVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImxpbmstdXJpIiwgbGlua1VSSS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlLXVyaSIsIGltYWdlVVJJLmdldCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVkaWEtdXJpIiwg
bWVkaWFVUkkuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjb250ZXh0IiwgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImlubmVyLW5vZGUiLCBub2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIsIHBvaW50LngoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLCBwb2ludC55KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXgg
MzRlNDMyMS4uNjM5OGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwCkBAIC03NjEsNiArNzYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAg
ICAqIHJpZ2h0LWNsaWNrcyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBwYWdlIGl0c2VsZi4KICAg
ICAgKgogICAgICAqIFNpbmNlOiAxLjEuMTgKKyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDEu
NS4zOiBVc2UgI1dlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudSBzaWduYWwgaW5zdGVhZC4KICAg
ICAgKi8KICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9ERUZBVUxU
X0NPTlRFWFRfTUVOVSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAppbmRleCAzOGJlNWEyLi5mMzZiZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCkBAIC0yMDQsNiArMjA0LDcgQEAgZW51bSB7CiAgICAgRURJVElOR19F
TkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAg
VklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAorICAgIENPTlRFWFRfTUVOVSwKIAogICAgIExB
U1RfU0lHTkFMCiB9OwpAQCAtMzA4LDIzICszMDksMzYgQEAgc3RhdGljIHZvaWQgY29udGV4dE1l
bnVDb25uZWN0QWN0aXZhdGUoR3RrTWVudUl0ZW0qIGl0ZW0sIENvbnRleHRNZW51Q29udHJvbGxl
cioKICAgICBnX3NpZ25hbF9jb25uZWN0KGl0ZW0sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soY29u
dGV4dE1lbnVJdGVtQWN0aXZhdGVkKSwgY29udHJvbGxlcik7CiB9CiAKLXN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3N0YXRpYyBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgSW50UG9pbnQgcG9p
bnQgPSBmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKKyAgICBy
ZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBvaW50
LCBldmVudCk7Cit9CisKKy8vIENoZWNrIGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0
aW5nIGZvciBjb21wYXRpYmlsaXR5Lgorc3RhdGljIGJvb2wgZGVmYXVsdENvbnRleHRNZW51RW5h
YmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdib29sZWFuIGVuYWJsZURlZmF1
bHRDb250ZXh0TWVudTsKKyAgICBnX29iamVjdF9nZXQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0
aW5ncyh3ZWJWaWV3KSwgImVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSIsICZlbmFibGVEZWZh
dWx0Q29udGV4dE1lbnUsIE5VTEwpOworICAgIHJldHVybiBlbmFibGVEZWZhdWx0Q29udGV4dE1l
bnU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0
X21lbnVfZXZlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCwgYm9vbCB0cmlnZ2VyZWRXaXRoS2V5Ym9hcmQpCiB7CiAgICAgUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldyk7CiAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNs
ZWFyQ29udGV4dE1lbnUoKTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lOwogICAgIEZyYW1lKiBt
YWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBnYm9vbGVhbiBtb3VzZVByZXNzRXZl
bnRSZXN1bHQgPSBGQUxTRTsKKyAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IGhpdFRl
c3RSZXN1bHQ7CiAKICAgICBpZiAoIW1haW5GcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4g
RkFMU0U7CiAKICAgICBtYWluRnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3Io
KSk7CiAgICAgaWYgKHBhZ2UtPmZyYW1lQ291bnQoKSkgewotICAgICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwotICAgICAgICBJbnRQb2ludCBwb2lu
dCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAg
ICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtYWluRnJhbWUtPmRvY3Vt
ZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBvaW50LCBldmVudCk7Ci0KKyAgICAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZv
ckZyYW1lKG1haW5GcmFtZSwgZXZlbnQpOwogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBF
dmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOwogICAgICAgICBpZiAo
IXRhcmdldEZyYW1lKQogICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBtYWluRnJhbWU7CkBAIC0z
MzQsMTMgKzM0OCwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRf
Y29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgICAgICAgICAgcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZSh0YXJnZXRGcmFtZSk7CiAgICAg
ICAgICAgICBmb2N1c2VkRnJhbWUgPSB0YXJnZXRGcmFtZTsKICAgICAgICAgfQorICAgICAgICBp
ZiAoZm9jdXNlZEZyYW1lID09IG1haW5GcmFtZSkKKyAgICAgICAgICAgIGhpdFRlc3RSZXN1bHQg
PSBhZG9wdEdSZWYoa2l0KG1ldi5oaXRUZXN0UmVzdWx0KCkpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgZm9jdXNlZEZyYW1lID0gbWFpbkZyYW1lOwogCiAgICAgaWYgKGZvY3VzZWRGcmFtZS0+dmll
dygpICYmIGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChldmVudCkpCiAgICAgICAgIG1vdXNlUHJlc3NFdmVudFJlc3VsdCA9IFRSVUU7CiAKLQogICAg
IGJvb2wgaGFuZGxlZEV2ZW50ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENv
bnRleHRNZW51RXZlbnQoZXZlbnQpOwogICAgIGlmICghaGFuZGxlZEV2ZW50KQogICAgICAgICBy
ZXR1cm4gRkFMU0U7CkBAIC0zNTMsMzcgKzM2OCw0MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAgIHJldHVybiBtb3VzZVByZXNzRXZlbnRSZXN1
bHQ7CiAKLSAgICAvLyBJZiB3ZSByZWFjaCBoZXJlLCBpdCdzIGJlY2F1c2UgV2ViQ29yZSBpcyBn
b2luZyB0byBzaG93IHRoZQotICAgIC8vIGRlZmF1bHQgY29udGV4dCBtZW51LiBXZSBjaGVjayBv
dXIgc2V0dGluZyB0byBmaWd1cmUgb3V0Ci0gICAgLy8gd2hldGhlciB3ZSB3YW50IGl0IG9yIG5v
dC4KLSAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NldHRpbmdzKHdlYlZpZXcpOwotICAgIGdib29sZWFuIGVuYWJsZURlZmF1bHRDb250ZXh0TWVu
dTsKLSAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsICJlbmFibGUtZGVmYXVsdC1jb250ZXh0LW1l
bnUiLCAmZW5hYmxlRGVmYXVsdENvbnRleHRNZW51LCBOVUxMKTsKLQotICAgIGlmICghZW5hYmxl
RGVmYXVsdENvbnRleHRNZW51KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICBHdGtNZW51
KiBtZW51ID0gR1RLX01FTlUoY29yZU1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7Ci0gICAg
aWYgKCFtZW51KQotICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgR3RrTWVudSogZGVmYXVsdE1l
bnUgPSBjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIEFTU0VSVChkZWZhdWx0
TWVudSk7CiAKICAgICAvLyBXZSBjb25uZWN0IHRoZSAiYWN0aXZhdGUiIHNpZ25hbCBoZXJlIHJh
dGhlciB0aGFuIGluIENvbnRleHRNZW51R3RrIHRvIGF2b2lkCiAgICAgLy8gYSBsYXllcmluZyB2
aW9sYXRpb24uIENvbnRleHRNZW51R3RrIHNob3VsZCBub3Qga25vdyBhYm91dCB0aGUgQ29udGV4
dE1lbnVDb250cm9sbGVyLgotICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVS
KG1lbnUpLCAoR3RrQ2FsbGJhY2spY29udGV4dE1lbnVDb25uZWN0QWN0aXZhdGUsIGNvbnRyb2xs
ZXIpOworICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVSKGRlZmF1bHRNZW51
KSwgKEd0a0NhbGxiYWNrKWNvbnRleHRNZW51Q29ubmVjdEFjdGl2YXRlLCBjb250cm9sbGVyKTsK
IAotICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUE9Q
VUxBVEVfUE9QVVBdLCAwLCBtZW51KTsKKyAgICBpZiAoIWhpdFRlc3RSZXN1bHQpIHsKKyAgICAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudEZv
ckZyYW1lKGZvY3VzZWRGcmFtZSwgZXZlbnQpOworICAgICAgICBoaXRUZXN0UmVzdWx0ID0gYWRv
cHRHUmVmKGtpdChtZXYuaGl0VGVzdFJlc3VsdCgpKSk7CisgICAgfQorCisgICAgZ2Jvb2xlYW4g
aGFuZGxlZDsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWdu
YWxzW0NPTlRFWFRfTUVOVV0sIDAsIGRlZmF1bHRNZW51LCBoaXRUZXN0UmVzdWx0LmdldCgpLCB0
cmlnZ2VyZWRXaXRoS2V5Ym9hcmQsICZoYW5kbGVkKTsKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICAvLyBSZXR1cm4gbm93IGlmIGRlZmF1bHQgY29udGV4dCBt
ZW51IGlzIGRpc2FibGVkIGJ5IGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0aW5nLgor
ICAgIC8vIENoZWNrIGVuYWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSBzZXR0aW5nIGZvciBjb21w
YXRpYmlsaXR5LgorICAgIGlmICghZGVmYXVsdENvbnRleHRNZW51RW5hYmxlZCh3ZWJWaWV3KSkK
KyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgLy8gRW1pdCBwb3B1bGF0ZS1wb3B1cCBzaWdu
YWwgZm9yIGNvbXBhdGliaWxpdHkuCisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRf
d2ViX3ZpZXdfc2lnbmFsc1tQT1BVTEFURV9QT1BVUF0sIDAsIGRlZmF1bHRNZW51KTsKIAogICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgaXMgbm93IGVtcHR5LCBkb24ndCBzaG93IGl0LgotICAg
IEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05U
QUlORVIobWVudSkpKTsKKyAgICBHT3duUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dl
dF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKGRlZmF1bHRNZW51KSkpOwogICAgIGlmICghaXRlbXMp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKLSAgICBwcml2LT5jdXJyZW50TWVudSA9IG1lbnU7CisgICAgcHJp
di0+Y3VycmVudE1lbnUgPSBkZWZhdWx0TWVudTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRp
b24gPSBldmVudC5nbG9iYWxYKCk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gZXZl
bnQuZ2xvYmFsWSgpOwogCi0gICAgZ3RrX21lbnVfcG9wdXAobWVudSwgMCwgMCwgJlBvcHVwTWVu
dVBvc2l0aW9uRnVuYywgd2ViVmlldywgZXZlbnQuYnV0dG9uKCkgKyAxLCBndGtfZ2V0X2N1cnJl
bnRfZXZlbnRfdGltZSgpKTsKKyAgICBndGtfbWVudV9wb3B1cChkZWZhdWx0TWVudSwgMCwgMCwg
JlBvcHVwTWVudVBvc2l0aW9uRnVuYywgd2ViVmlldywgZXZlbnQuYnV0dG9uKCkgKyAxLCBndGtf
Z2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtNDI0
LDcgKzQ0NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9o
YW5kbGVyKEd0a1dpZGdldCogd2lkZ2V0KQogCiAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29u
dmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludCh3aWRnZXQsIGxvY2F0aW9uKSk7CiAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGxvY2F0aW9uLCBnbG9iYWxQb2ludCwgUmlnaHRCdXR0b24s
IE1vdXNlRXZlbnRQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZ3RrX2dl
dF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3
YXJkX2NvbnRleHRfbWVudV9ldmVudChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSwgZXZlbnQpOwor
ICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV0VC
S0lUX1dFQl9WSUVXKHdpZGdldCksIGV2ZW50LCB0cnVlKTsKIH0KIAogI2lmbmRlZiBHVEtfQVBJ
X1ZFUlNJT05fMgpAQCAtNzgyLDcgKzgwMiw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2Vi
X3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1CiAg
ICAgcGxhdGZvcm1FdmVudC5zZXRDbGlja0NvdW50KHByaXYtPmNsaWNrQ291bnRlci5jbGlja0Nv
dW50Rm9yR2RrQnV0dG9uRXZlbnQod2lkZ2V0LCBldmVudCkpOwogCiAgICAgaWYgKGV2ZW50LT5i
dXR0b24gPT0gMykKLSAgICAgICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRl
eHRfbWVudV9ldmVudCh3ZWJWaWV3LCBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCh3ZWJW
aWV3LCBQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQpLCBmYWxzZSk7CiAKICAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkp
CkBAIC0yMTY2LDYgKzIxODYsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBXaGVuIGEgY29u
dGV4dCBtZW51IGlzIGFib3V0IHRvIGJlIGRpc3BsYXllZCB0aGlzIHNpZ25hbCBpcyBlbWl0dGVk
LgogICAgICAqCiAgICAgICogQWRkIG1lbnUgaXRlbXMgdG8gI21lbnUgdG8gZXh0ZW5kIHRoZSBj
b250ZXh0IG1lbnUuCisgICAgICoKKyAgICAgKiBEZXByZWNhdGVkOiAxLjUuMzogVXNlICNXZWJL
aXRXZWJWaWV3Ojpjb250ZXh0LW1lbnUgc2lnbmFsIGluc3RlYWQuCiAgICAgICovCiAgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9QVVBdID0gZ19zaWduYWxfbmV3KCJwb3B1
bGF0ZS1wb3B1cCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LApAQCAtMjc0NSw2ICsyNzY3LDQyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgV0VC
S0lUX1RZUEVfVklFV1BPUlRfQVRUUklCVVRFUyk7CiAKICAgICAvKgorICAgICAqIFdlYktpdFdl
YlZpZXc6OmNvbnRleHQtbWVudQorICAgICAqIEB3ZWJWaWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAZGVmYXVsdF9tZW51OiB0aGUgZGVmYXVsdCBjb250
ZXh0IG1lbnUKKyAgICAgKiBAaGl0X3Rlc3RfcmVzdWx0OiBhICNXZWJLaXRIaXRUZXN0UmVzdWx0
IHdpdGggdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICogQGtleWJv
YXJkX21vZGU6ICVUUlVFIGlmIHRoZSBjb250ZXh0IG1lbnUgd2FzIHRyaWdnZXJlZCB1c2luZyB0
aGUga2V5Ym9hcmQKKyAgICAgKgorICAgICAqIEVtbWl0ZWQgd2hlbiBhIGNvbnRleHQgbWVudSBp
cyBhYm91dCB0byBiZSBkaXNwbGF5ZWQgdG8gZ2l2ZSB0aGUgYXBwbGljYXRpb24KKyAgICAgKiBh
IGNoYW5jZSB0byBjcmVhdGUgYW5kIGhhbmRsZSBpdHMgb3duIGNvbnRleHQgbWVudS4gSWYgeW91
IG9ubHkgd2FudCB0byBhZGQgY3VzdG9tCisgICAgICogb3B0aW9ucyB0byB0aGUgZGVmYXVsdCBj
b250ZXh0IG1lbnUgeW91IGNhbiBzaW1wbHkgbW9kaWZ5IHRoZSBnaXZlbiBAZGVmYXVsdF9tZW51
LgorICAgICAqCisgICAgICogV2hlbiBrZXlib2FyZF9tb2RlIGlzICVUUlVFIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgZ2l2ZW4gQGhpdF90ZXN0X3Jlc3VsdCBzaG91bGQgYmUKKyAgICAgKiB1c2Vk
IHRvIHBvc2l0aW9uIHRoZSBwb3B1cCBtZW51LiBXaGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIGJl
ZW4gdHJpZ2dlcmVkIGJ5IGEKKyAgICAgKiBtb3VzZSBldmVudCB5b3UgY291bGQgZWl0aGVyIHVz
ZSB0aGUgQGhpdF90ZXN0X3Jlc3VsdCBjb29yZGluYXRlcyBvciBwYXNzICVOVUxMCisgICAgICog
dG8gdGhlICNHdGtNZW51UG9zaXRpb25GdW5jIHBhcmFtZXRlciBvZiBndGtfbWVudV9wb3B1cCgp
IGZ1bmN0aW9uLgorICAgICAqIE5vdGUgdGhhdCBjb29yZGluYXRlcyBvZiBAaGl0X3Rlc3RfcmVz
dWx0IGFyZSByZWxhdGl2ZSB0byBAd2ViVmlldyB3aW5kb3cuCisgICAgICoKKyAgICAgKiBJZiB5
b3VyIGFwcGxpY2F0aW9uIHdpbGwgY3JlYXRlIGFuZCBkaXNwbGF5IGl0cyBvd24gcG9wdXAgbWVu
dSwgJVRSVUUgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAqIE5vdGUgdGhhdCB3aGVuIHRoZSBj
b250ZXh0IG1lbnUgaXMgaGFuZGxlZCBieSB0aGUgYXBwbGljYXRpb24sIHRoZSAiZW5hYmxlLWRl
ZmF1bHQtY29udGV4dC1tZW51IgorICAgICAqIHNldHRpbmcgd2lsbCBiZSBpZ25vcmVkIGFuZCB0
aGUgI1dlYktpdFdlYlZpZXc6OnBvcHVsYXRlLXBvcHVwIHNpZ25hbCB3b24ndCBiZSBlbWl0dGVk
LgorICAgICAqIElmIHlvdSBkb24ndCB3YW50IGFueSBjb250ZXh0IG1lbnUgdG8gYmUgc2hvd24s
IHlvdSBjYW4gc2ltcGx5IGNvbm5lY3QgdG8gdGhpcyBzaWduYWwKKyAgICAgKiBhbmQgcmV0dXJu
ICVUUlVFIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZS4KKyAgICAgKgorICAgICAqIFNpbmNl
OiAxLjUuMworICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0NPTlRFWFRfTUVO
VV0gPSBnX3NpZ25hbF9uZXcoImNvbnRleHQtbWVudSIsCisgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncylHX1NJR05B
TF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9CT09MRUFOLAorICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBHVEtfVFlQRV9XSURHRVQsCisg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTik7CisKKyAgICAvKgogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFs
IG1ldGhvZHMKICAgICAgKi8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmlldyA9IHdl
YmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1h
cnNoYWwubGlzdAppbmRleCA1MzcyYzU3Li44NmJjYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
bWFyc2hhbC5saXN0CkBAIC0yLDYgKzIsNyBAQCBCT09MRUFOOkVOVU0sSU5UCiBCT09MRUFOOklO
VCxJTlQsU1RSSU5HCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNUCitCT09M
RUFOOk9CSkVDVCxPQkpFQ1QsQk9PTEVBTgogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVOVU0KIEJP
T0xFQU46T0JKRUNULE9CSkVDVCxFTlVNLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULE9CSkVDVCxP
QkpFQ1QsT0JKRUNUCg==
</data>
<flag name="review"
          id="103020"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>