<?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>83879</bug_id>
          
          <creation_ts>2012-04-13 03:35:37 -0700</creation_ts>
          <short_desc>[GTK][WK2] Implement API for Geolocation permission requests in the GTK port</short_desc>
          <delta_ts>2012-06-05 02:46:38 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83877</dependson>
    
    <dependson>84018</dependson>
          <blocked>83876</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Mario Sanchez Prada">mario</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>601954</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-13 03:35:37 -0700</bug_when>
    <thetext>Implement a &apos;permission request&apos; API in WebKit2GTK+ for the enabling user to allow or deny certain requests, and provide an specific implementation for Geolocation permission requests.

The &apos;permission request&apos; API should be usable for more situations in the future (e.g. requests to switch to full screen mode)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602037</commentid>
    <comment_count>1</comment_count>
      <attachid>137081</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-13 06:57:18 -0700</bug_when>
    <thetext>Created attachment 137081
1. Add new &apos;permission-request&apos; signal to WebKitWebView

 Added new &apos;permission-request&apos; signal to WebKitWebView, to be fired when WebKit needs confirmation from the user on whether to allow or deny certain operations, such as sharing the user&apos;s location with web site through the Geolocation API.

Also, provided a new WebKitPermissionRequest interface, providing allow() and deny() operations, to be called over the objects implementing it when emitted along with the new &apos;permission-request&apos; signal.

Perhaps I should move the later to a different bug. Not 100% sure since it&apos;s tighly related to this one and thus to the next patch I&apos;ll be attaching in 2 minutes...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602038</commentid>
    <comment_count>2</comment_count>
      <attachid>137082</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-13 06:58:48 -0700</bug_when>
    <thetext>Created attachment 137082
2. Added a new geolocation permission request

Added a new kind of permission request for supporting the Geolocation API in WebKit2GTK+.

Added a new WebKitGeolocationPermissionRequest class, implementing the WebKitPermissionRequest interface, to enabling client applications  to allow or deny geolocation permission requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602039</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 06:59:15 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602062</commentid>
    <comment_count>4</comment_count>
      <attachid>137081</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-13 08:04:32 -0700</bug_when>
    <thetext>Comment on attachment 137081
1. Add new &apos;permission-request&apos; signal to WebKitWebView

Attachment 137081 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12393864</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602077</commentid>
    <comment_count>5</comment_count>
      <attachid>137088</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-13 08:19:53 -0700</bug_when>
    <thetext>Created attachment 137088
1. Add new &apos;permission-request&apos; signal to WebKitWebView

Stupid me, looks like I screwed the patch while checking it locally.

Here&apos;s the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602096</commentid>
    <comment_count>6</comment_count>
      <attachid>137088</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-13 08:32:07 -0700</bug_when>
    <thetext>Comment on attachment 137088
1. Add new &apos;permission-request&apos; signal to WebKitWebView

Attachment 137088 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12399340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602119</commentid>
    <comment_count>7</comment_count>
      <attachid>137092</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-13 08:47:19 -0700</bug_when>
    <thetext>Created attachment 137092
1. Add new &apos;permission-request&apos; signal to WebKitWebView

Strike 3!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602516</commentid>
    <comment_count>8</comment_count>
      <attachid>137092</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-13 16:42:36 -0700</bug_when>
    <thetext>Comment on attachment 137092
1. Add new &apos;permission-request&apos; signal to WebKitWebView

Attachment 137092 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12403146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602961</commentid>
    <comment_count>9</comment_count>
      <attachid>137092</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-16 01:23:00 -0700</bug_when>
    <thetext>Comment on attachment 137092
1. Add new &apos;permission-request&apos; signal to WebKitWebView

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp:62
&gt; +    WebKitPermissionRequestIface* iface = WEBKIT_PERMISSION_REQUEST_GET_IFACE(request);
&gt; +    if (iface-&gt;allow)
&gt; +        iface-&gt;allow(request);

I guess this should be a required method, so we should enforce to be implemented, no?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp:77
&gt; +    WebKitPermissionRequestIface* iface = WEBKIT_PERMISSION_REQUEST_GET_IFACE(request);
&gt; +    if (iface-&gt;deny)
&gt; +        iface-&gt;deny(request);

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.h:36
&gt; +#define WEBKIT_TYPE_PERMISSION_REQUEST           (webkit_permission_request_get_type())
&gt; +#define WEBKIT_PERMISSION_REQUEST(obj)           (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_PERMISSION_REQUEST, WebKitPermissionRequest))
&gt; +#define WEBKIT_PERMISSION_REQUEST_CLASS(obj)     (G_TYPE_CHECK_CLASS_CAST ((obj), WEBKIT_TYPE_PERMISSION_REQUEST, WebKitPermissionRequestIface))
&gt; +#define WEBKIT_IS_PERMISSION_REQUEST(obj)        (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_PERMISSION_REQUEST))
&gt; +#define WEBKIT_PERMISSION_REQUEST_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), WEBKIT_TYPE_PERMISSION_REQUEST, WebKitPermissionRequestIface))

Don&apos;t add CLASS macros for interfaces, just WEBKIT_TYPE_PERMISSION_REQUEST, WEBKIT_PERMISSION_REQUEST, WEBKIT_IS_PERMISSION_REQUEST and WEBKIT_PERMISSION_REQUEST_GET_IFACE

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:323
&gt; +    webViewClass-&gt;permission_request = webkitWebViewDecidePermissionRequest;

We use the same name as the signal, so remove &apos;Decide&apos;.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:652
&gt; +     * @request_type: a #WebKitPermissionRequestType denoting the type of @request

WebKitPermissionRequest is an interface, so request is an instance of an object that implements the interface. We usually use FOOT_IS_BAR macros to know the concrete type, so we don&apos;t need an enum with all types. I&apos;m not opposed to use an enum though, if you think it&apos;s clearer and consistent with policy client API.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:660
&gt; +     * It is possible to handle permission requests asynchronously, by
&gt; +     * simply calling g_object_ref() on the @request argument and
&gt; +     * returning %TRUE to block the default signal handler.

I think this is something that depends on the concrete request object, unless we make clear that implementations of WebKitPermissionRequest should allow it.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:665
&gt; +     * If the last reference is removed on a #WebKitPermissionRequest
&gt; +     * and no decision has been made, webkit_permission_request_deny()
&gt; +     * will be the default decision. The default signal handler will
&gt; +     * simply call webkit_permission_request_deny().

Ditto, this will be implemented in the finalize of every request implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602978</commentid>
    <comment_count>10</comment_count>
      <attachid>137082</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-16 01:39:35 -0700</bug_when>
    <thetext>Comment on attachment 137082
2. Added a new geolocation permission request

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

Please, merge both patches or file separate bug reports.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:63
&gt; +static void
&gt; +webkit_permission_request_interface_init(WebKitPermissionRequestIface *iface)

This should be a single line and the * is placed wrongly.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:78
&gt; +    WEBKIT_GEOLOCATION_PERMISSION_REQUEST(object)-&gt;priv-&gt;~WebKitGeolocationPermissionRequestPrivate();
&gt; +    G_OBJECT_CLASS(webkit_geolocation_permission_request_parent_class)-&gt;finalize(object);

You should check here whether request has been made or not, and call deny if it wasn&apos;t made. That&apos;s what WebKitWebView::permission-request signal documentation says.

&gt; Tools/ChangeLog:9
&gt; +        Make minibrowser connect to the new &apos;permission requests&apos; signal
&gt; +        to allow users handle the Geolocation permission requests.

Please add unit tests, and maybe leave minibrowser impl for a following patch.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:293
&gt; +    GtkWidget *dialog = gtk_dialog_new_with_buttons(&quot;Geolocation request&quot;,
&gt; +                                                    GTK_WINDOW(window),
&gt; +                                                    GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
&gt; +                                                    GTK_STOCK_OK,
&gt; +                                                    GTK_RESPONSE_ACCEPT,
&gt; +                                                    GTK_STOCK_CANCEL,
&gt; +                                                    GTK_RESPONSE_REJECT,
&gt; +                                                    NULL);

What do you think about using GtkInfoBar instead of a popup dialog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602986</commentid>
    <comment_count>11</comment_count>
      <attachid>137092</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-16 01:48:42 -0700</bug_when>
    <thetext>Comment on attachment 137092
1. Add new &apos;permission-request&apos; signal to WebKitWebView

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

Thanks for the review. Will be addressing those issues in a follow-up patch

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp:62
&gt;&gt; +        iface-&gt;allow(request);
&gt; 
&gt; I guess this should be a required method, so we should enforce to be implemented, no?

I just followed the pattern I could see in other places in WebCore:
  - WebCore/bindings/gobject/WebKitDOMEventTarget.cpp 
  - WebKit/gtk/webkit/webkitspellchecker.cpp 

After all, it&apos;s an interface, you will be either completely implementing it or not, but not doing things half-way :-)

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp:77
&gt;&gt; +        iface-&gt;deny(request);
&gt; 
&gt; Ditto.

Ditto too.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.h:36
&gt;&gt; +#define WEBKIT_PERMISSION_REQUEST_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), WEBKIT_TYPE_PERMISSION_REQUEST, WebKitPermissionRequestIface))
&gt; 
&gt; Don&apos;t add CLASS macros for interfaces, just WEBKIT_TYPE_PERMISSION_REQUEST, WEBKIT_PERMISSION_REQUEST, WEBKIT_IS_PERMISSION_REQUEST and WEBKIT_PERMISSION_REQUEST_GET_IFACE

Ok (we should fix WebCore/bindings/gobject/WebKitDOMEventTarget.h too)

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:323
&gt;&gt; +    webViewClass-&gt;permission_request = webkitWebViewDecidePermissionRequest;
&gt; 
&gt; We use the same name as the signal, so remove &apos;Decide&apos;.

Ok

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:652
&gt;&gt; +     * @request_type: a #WebKitPermissionRequestType denoting the type of @request
&gt; 
&gt; WebKitPermissionRequest is an interface, so request is an instance of an object that implements the interface. We usually use FOOT_IS_BAR macros to know the concrete type, so we don&apos;t need an enum with all types. I&apos;m not opposed to use an enum though, if you think it&apos;s clearer and consistent with policy client API.

Just left it because my patch clearly came from when I was thinking of integrating things with the policy decision framework

But I think you&apos;re right and that FOO_IS_BAR macro should be more than enough, and it makes the patches cleaner.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:660
&gt;&gt; +     * returning %TRUE to block the default signal handler.
&gt; 
&gt; I think this is something that depends on the concrete request object, unless we make clear that implementations of WebKitPermissionRequest should allow it.

For the case of geolocation requests it&apos;s true, but perhaps we should remove this paragraph at this early stage, before clearly knowing whether we should ask implementors of WebKitPermissionRequest for it or not.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:665
&gt;&gt; +     * simply call webkit_permission_request_deny().
&gt; 
&gt; Ditto, this will be implemented in the finalize of every request implementation.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603002</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-16 02:15:27 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 137092 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137092&amp;action=review
&gt; 
&gt; Thanks for the review. Will be addressing those issues in a follow-up patch
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp:62
&gt; &gt;&gt; +        iface-&gt;allow(request);
&gt; &gt; 
&gt; &gt; I guess this should be a required method, so we should enforce to be implemented, no?
&gt; 
&gt; I just followed the pattern I could see in other places in WebCore:
&gt;   - WebCore/bindings/gobject/WebKitDOMEventTarget.cpp 
&gt;   - WebKit/gtk/webkit/webkitspellchecker.cpp 
&gt; 
&gt; After all, it&apos;s an interface, you will be either completely implementing it or not, but not doing things half-way :-)

Exactly, so it doesn&apos;t make sense to create a request object that doesn&apos;t provide implementation for allow and deny, no?

&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.h:36
&gt; &gt;&gt; +#define WEBKIT_PERMISSION_REQUEST_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), WEBKIT_TYPE_PERMISSION_REQUEST, WebKitPermissionRequestIface))
&gt; &gt; 
&gt; &gt; Don&apos;t add CLASS macros for interfaces, just WEBKIT_TYPE_PERMISSION_REQUEST, WEBKIT_PERMISSION_REQUEST, WEBKIT_IS_PERMISSION_REQUEST and WEBKIT_PERMISSION_REQUEST_GET_IFACE
&gt; 
&gt; Ok (we should fix WebCore/bindings/gobject/WebKitDOMEventTarget.h too)

No, that&apos;s already public API, so it can be removed. It&apos;s harmless in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603014</commentid>
    <comment_count>13</comment_count>
      <attachid>137082</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-16 03:22:16 -0700</bug_when>
    <thetext>Comment on attachment 137082
2. Added a new geolocation permission request

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:78
&gt;&gt; +    G_OBJECT_CLASS(webkit_geolocation_permission_request_parent_class)-&gt;finalize(object);
&gt; 
&gt; You should check here whether request has been made or not, and call deny if it wasn&apos;t made. That&apos;s what WebKitWebView::permission-request signal documentation says.

True.

&gt;&gt; Tools/ChangeLog:9
&gt;&gt; +        to allow users handle the Geolocation permission requests.
&gt; 
&gt; Please add unit tests, and maybe leave minibrowser impl for a following patch.

Will add later, of course. This is just a preliminar version of the patch.

&gt;&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:293
&gt;&gt; +                                                    NULL);
&gt; 
&gt; What do you think about using GtkInfoBar instead of a popup dialog?

I think that for a test app like MiniBrowser a GtkDialog is more than enough, and simpler to implement.

If you strongly think we should use an info bar I will change it, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603023</commentid>
    <comment_count>14</comment_count>
      <attachid>137310</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-16 03:48:40 -0700</bug_when>
    <thetext>Created attachment 137310
Patch proposal

Attaching a new patch addressing the issues pointed out by Carlos, with the exception of unit tests, that will be added later.

(In reply to comment #10)
&gt; (From update of attachment 137082 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137082&amp;action=review
&gt; 
&gt; Please, merge both patches or file separate bug reports.

Filed a new bug for the part of adding a generic API for permission requests: bug 84018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603839</commentid>
    <comment_count>15</comment_count>
      <attachid>137310</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 00:22:39 -0700</bug_when>
    <thetext>Comment on attachment 137310
Patch proposal

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

Looks great!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:25
&gt; +#include &quot;WebKitPrivate.h&quot;

This is already included by WebKitGeolocationPermissionRequestPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:52
&gt; +    WKGeolocationPermissionRequestAllow(priv-&gt;request.get());

I wonder whether it&apos;s valid to call this twice, maybe we should return early if madeDecission is true

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:61
&gt; +    WKGeolocationPermissionRequestDeny(priv-&gt;request.get());

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:75
&gt; +    request-&gt;priv-&gt;madeDecision = false;

Glib already initialize to 0 the instance struct when it&apos;s allocated, so this is already false.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:298
&gt; +    GtkWidget *dialog = gtk_dialog_new_with_buttons(&quot;Geolocation request&quot;,
&gt; +                                                    GTK_WINDOW(window),
&gt; +                                                    GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
&gt; +                                                    GTK_STOCK_OK,
&gt; +                                                    GTK_RESPONSE_ACCEPT,
&gt; +                                                    GTK_STOCK_CANCEL,
&gt; +                                                    GTK_RESPONSE_REJECT,
&gt; +                                                    NULL);
&gt; +
&gt; +    GtkWidget *contentArea = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
&gt; +    GtkWidget *label = gtk_label_new(&quot;Allow geolocation request?&quot;);
&gt; +    gtk_box_pack_start(GTK_BOX(contentArea), label, TRUE, TRUE, 6);
&gt; +    gtk_widget_show(label);

This would probably be easier using gtk_message_dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606686</commentid>
    <comment_count>16</comment_count>
      <attachid>138117</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-04-20 10:38:18 -0700</bug_when>
    <thetext>Created attachment 138117
Patch proposal + Unit test

Attaching a new patch, this time with the new unit test needed to check this new API for permission requests.

Some comments below...

(In reply to comment #15)
&gt; [...]
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:25
&gt; &gt; +#include &quot;WebKitPrivate.h&quot;
&gt; 
&gt; This is already included by WebKitGeolocationPermissionRequestPrivate.h
&gt; 

Fixed

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:52
&gt; &gt; +    WKGeolocationPermissionRequestAllow(priv-&gt;request.get());
&gt; 
&gt; I wonder whether it&apos;s valid to call this twice, maybe we should return early if madeDecission is true
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:61
&gt; &gt; +    WKGeolocationPermissionRequestDeny(priv-&gt;request.get());
&gt; 
&gt; Ditto.

I think you are right: it is not possible (and doesn&apos;t make much sense either) to deny a request after allowing it, or viceversa.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:75
&gt; &gt; +    request-&gt;priv-&gt;madeDecision = false;
&gt; 
&gt; Glib already initialize to 0 the instance struct when it&apos;s allocated, so this is already false.
&gt; 

Fixed.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:298
&gt; &gt; +    GtkWidget *dialog = gtk_dialog_new_with_buttons(&quot;Geolocation request&quot;,
&gt; &gt; +                                                    GTK_WINDOW(window),
&gt; &gt; +                                                    GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
&gt; &gt; +                                                    GTK_STOCK_OK,
&gt; &gt; +                                                    GTK_RESPONSE_ACCEPT,
&gt; &gt; +                                                    GTK_STOCK_CANCEL,
&gt; &gt; +                                                    GTK_RESPONSE_REJECT,
&gt; &gt; +                                                    NULL);
&gt; &gt; +
&gt; &gt; +    GtkWidget *contentArea = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
&gt; &gt; +    GtkWidget *label = gtk_label_new(&quot;Allow geolocation request?&quot;);
&gt; &gt; +    gtk_box_pack_start(GTK_BOX(contentArea), label, TRUE, TRUE, 6);
&gt; &gt; +    gtk_widget_show(label);
&gt; 
&gt; This would probably be easier using gtk_message_dialog.

Agreed. Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635060</commentid>
    <comment_count>17</comment_count>
      <attachid>144313</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-28 02:55:29 -0700</bug_when>
    <thetext>Created attachment 144313
Patch

New updated patch, as the old one didn&apos;t apply anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635704</commentid>
    <comment_count>18</comment_count>
      <attachid>144313</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-29 01:18:42 -0700</bug_when>
    <thetext>Comment on attachment 144313
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:42
&gt; +    WKRetainPtr&lt;WKGeolocationPermissionRequestRef&gt; request;

We usually use wk prefix for C API variables, in this case wkRequest

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:68
&gt; +    // Only one decision at a time.
&gt; +    if (priv-&gt;madeDecision)
&gt; +        return;

This actually means that the request can only be used once, no?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:105
&gt; +WebKitGeolocationPermissionRequest* webkitGeolocationPermissionRequestCreate(WKGeolocationPermissionRequestRef request)

request -&gt; wkRequest

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:148
&gt; +static void decidePolicyForGeolocationPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKGeolocationPermissionRequestRef request, const void* clientInfo)

request -&gt; wkRequest

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:482
&gt; +    // Test denying a permission request.
&gt; +    test-&gt;m_allowPermissionRequests = false;
&gt; +    test-&gt;loadHtml(geolocationRequestHTML, 0);
&gt; +    test-&gt;waitUntilMainLoopFinishes();
&gt; +
&gt; +    // Test allowing a permission request.
&gt; +    test-&gt;m_allowPermissionRequests = true;
&gt; +    test-&gt;loadHtml(geolocationRequestHTML, 0);
&gt; +    test-&gt;waitUntilMainLoopFinishes();

These only check whether the signal is emitted or not, but I wonder if it&apos;s possible to check also that the request was actually allowed/denied

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:216
&gt; +static void geolocationRequestDialogCallback(GtkDialog* dialog, gint response, WebKitPermissionRequest* request)

The * is incorrectly placed here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637726</commentid>
    <comment_count>19</comment_count>
      <attachid>144930</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-30 14:58:13 -0700</bug_when>
    <thetext>Created attachment 144930
Patch proposal + Unit test

Attaching new patch addressing the issues raised here.

(In reply to comment #18)
&gt; (From update of attachment 144313 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144313&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:42
&gt; &gt; +    WKRetainPtr&lt;WKGeolocationPermissionRequestRef&gt; request;
&gt; 
&gt; We usually use wk prefix for C API variables, in this case wkRequest

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:68
&gt; &gt; +    // Only one decision at a time.
&gt; &gt; +    if (priv-&gt;madeDecision)
&gt; &gt; +        return;
&gt; 
&gt; This actually means that the request can only be used once, no?

Yes. I don&apos;t think it makes sense to allow making more than one decision _per request_.
 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:105
&gt; &gt; +WebKitGeolocationPermissionRequest* webkitGeolocationPermissionRequestCreate(WKGeolocationPermissionRequestRef request)
&gt; 
&gt; request -&gt; wkRequest

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:148
&gt; &gt; +static void decidePolicyForGeolocationPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKGeolocationPermissionRequestRef request, const void* clientInfo)
&gt; 
&gt; request -&gt; wkRequest

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:482
&gt; &gt; +    // Test denying a permission request.
&gt; &gt; +    test-&gt;m_allowPermissionRequests = false;
&gt; &gt; +    test-&gt;loadHtml(geolocationRequestHTML, 0);
&gt; &gt; +    test-&gt;waitUntilMainLoopFinishes();
&gt; &gt; +
&gt; &gt; +    // Test allowing a permission request.
&gt; &gt; +    test-&gt;m_allowPermissionRequests = true;
&gt; &gt; +    test-&gt;loadHtml(geolocationRequestHTML, 0);
&gt; &gt; +    test-&gt;waitUntilMainLoopFinishes();
&gt; 
&gt; These only check whether the signal is emitted or not, but I wonder if it&apos;s possible to 
&gt; check also that the request was actually allowed/denied

I&apos;ve implemented a better test in the current patch, by putting checking the actual result after calling to getCurrentPosition() both after denying and allowing the request. However, in order to work fine it needs the patch for bug 83877 in place, so that&apos;s why I&apos;ll be marking this bug as dependent on that other one right after uploading this new patch

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:216
&gt; &gt; +static void geolocationRequestDialogCallback(GtkDialog* dialog, gint response, WebKitPermissionRequest* request)
&gt; 
&gt; The * is incorrectly placed here

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637728</commentid>
    <comment_count>20</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-30 14:59:11 -0700</bug_when>
    <thetext>We need to have bug 83877 fixed in order to properly implement unit tests here, so setting the dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638266</commentid>
    <comment_count>21</comment_count>
      <attachid>145058</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-31 05:22:14 -0700</bug_when>
    <thetext>Created attachment 145058
Patch proposal + Unit test

New patch fixing a mess with the makefile (some files that should have been added here were not)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640637</commentid>
    <comment_count>22</comment_count>
      <attachid>145058</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-04 09:27:31 -0700</bug_when>
    <thetext>Comment on attachment 145058
Patch proposal + Unit test

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:48
&gt; +    g_return_if_fail(WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request));

I think this is impossible to fail, so remove it or use an assert instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:62
&gt; +    g_return_if_fail(WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request));

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:488
&gt; +    // According to the Geolocation API specification, &apos;1&apos; is the
&gt; +    // error code returned for the PERMISSION_DENIED error.
&gt; +    // http://dev.w3.org/geo/api/spec-source.html#position_error_interface
&gt; +    g_assert_cmpstr(valueString.get(), ==, &quot;1&quot;);

But it also says it&apos;s a numeric value, not, could you use WebViewTest::javascriptResultToNumber() and g_assert_cmpint()? You could a constant to give it a name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640853</commentid>
    <comment_count>23</comment_count>
      <attachid>145630</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-04 14:43:05 -0700</bug_when>
    <thetext>Created attachment 145630
Patch proposal + Unit test

New patch attached. See my comments below...

(In reply to comment #22)
&gt; (From update of attachment 145058 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145058&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:48
&gt; &gt; +    g_return_if_fail(WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request));
&gt; 
&gt; I think this is impossible to fail, so remove it or use an assert instead.

True. Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:62
&gt; &gt; +    g_return_if_fail(WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request));
&gt; 
&gt; Ditto.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:488
&gt; &gt; +    // According to the Geolocation API specification, &apos;1&apos; is the
&gt; &gt; +    // error code returned for the PERMISSION_DENIED error.
&gt; &gt; +    // http://dev.w3.org/geo/api/spec-source.html#position_error_interface
&gt; &gt; +    g_assert_cmpstr(valueString.get(), ==, &quot;1&quot;);
&gt; 
&gt; But it also says it&apos;s a numeric value, not, could you use
&gt; WebViewTest::javascriptResultToNumber() and g_assert_cmpint()?

Well, in this case I think it&apos;s easier to check the string &quot;1&quot; since I avoid doing the string -&gt; double parsing in javascriptResultToNumber() and because, after all, I think we can agree on that &quot;1&quot; string represents a numeric value :-)

Not changing that yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641216</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-04 23:34:46 -0700</bug_when>
    <thetext>(In reply to comment #23)

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:488
&gt; &gt; &gt; +    // According to the Geolocation API specification, &apos;1&apos; is the
&gt; &gt; &gt; +    // error code returned for the PERMISSION_DENIED error.
&gt; &gt; &gt; +    // http://dev.w3.org/geo/api/spec-source.html#position_error_interface
&gt; &gt; &gt; +    g_assert_cmpstr(valueString.get(), ==, &quot;1&quot;);
&gt; &gt; 
&gt; &gt; But it also says it&apos;s a numeric value, not, could you use
&gt; &gt; WebViewTest::javascriptResultToNumber() and g_assert_cmpint()?
&gt; 
&gt; Well, in this case I think it&apos;s easier to check the string &quot;1&quot; since I avoid doing the string -&gt; double parsing in javascriptResultToNumber() and because, after all, I think we can agree on that &quot;1&quot; string represents a numeric value :-)

If the value is a number it looks more natural to get the number from the js result (assuming the value is indeed a number, JSValueIsNumber() return true). I&apos;m not proposing to convert the result string to a number, but getting the number from the js result, which is what javascriptResultToNumber() does, and it&apos;s definely easier than getting the string. 

&gt; Not changing that yet.

If the result is a string (JSValueIsNumber() returns false), it&apos;s ok to me then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641274</commentid>
    <comment_count>25</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-05 01:13:38 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; [...]
&gt; &gt; Not changing that yet.
&gt; 
&gt; If the result is a string (JSValueIsNumber() returns false), it&apos;s ok to me then

That&apos;s the case here:

 The following fails:
    JSGlobalContextRef context = webkit_javascript_result_get_global_context(javascriptResult);
    JSValueRef js_value = webkit_javascript_result_get_value(javascriptResult);
    g_assert(JSValueIsNumber(context, js_value));

 While this is OK:
    JSGlobalContextRef context = webkit_javascript_result_get_global_context(javascriptResult);
    JSValueRef js_value = webkit_javascript_result_get_value(javascriptResult);
    g_assert(JSValueIsString(context, js_value));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641292</commentid>
    <comment_count>26</comment_count>
      <attachid>145630</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-05 01:25:01 -0700</bug_when>
    <thetext>Comment on attachment 145630
Patch proposal + Unit test

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

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:483
&gt; +        &quot;&lt;html&gt;&quot;
&gt; +        &quot;  &lt;script&gt;&quot;
&gt; +        &quot;  function runTest()&quot;
&gt; +        &quot;  {&quot;
&gt; +        &quot;    navigator.geolocation.getCurrentPosition(function(p) { document.title = \&quot;OK\&quot; },&quot;
&gt; +        &quot;                                             function(e) { document.title = e.code });&quot;
&gt; +        &quot;  }&quot;
&gt; +        &quot;  &lt;/script&gt;&quot;
&gt; +        &quot;  &lt;body onload=&apos;runTest();&apos;&gt;&lt;/body&gt;&quot;
&gt; +        &quot;&lt;/html&gt;&quot;;

Ah, I see now, the value is a string because we are using the title.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:493
&gt; +    static const char* checkResultScript = &quot;document.title&quot;;
&gt; +    WebKitJavascriptResult* javascriptResult = test-&gt;runJavaScriptAndWaitUntilFinished(checkResultScript, 0);
&gt; +    g_assert(javascriptResult);
&gt; +    GOwnPtr&lt;char&gt; valueString(WebViewTest::javascriptResultToCString(javascriptResult));

So, can&apos;t you simply use webkit_web_view_get_title() instead of running a script?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641311</commentid>
    <comment_count>27</comment_count>
      <attachid>145725</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-05 01:38:51 -0700</bug_when>
    <thetext>Created attachment 145725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641355</commentid>
    <comment_count>28</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-05 02:46:38 -0700</bug_when>
    <thetext>Committed r119475: &lt;http://trac.webkit.org/changeset/119475&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137081</attachid>
            <date>2012-04-13 06:57:18 -0700</date>
            <delta_ts>2012-04-13 08:19:53 -0700</delta_ts>
            <desc>1. Add new &apos;permission-request&apos; signal to WebKitWebView</desc>
            <filename>0001-2012-04-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>21104</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA4MTI4YjMyMjJlMWZlOWYzMDM1ZGU5YTEzOGYwZmRiNGJhNzIyZmE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDEzIEFwciAyMDEyIDE1OjMwOjEzICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBl
cm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBBZGRlZCBuZXcgJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFs
IHRvIFdlYktpdFdlYlZpZXcsIHRvIGJlCiAgICAgICAgZmlyZWQgd2hlbiBXZWJLaXQgbmVlZHMg
Y29uZmlybWF0aW9uIGZyb20gdGhlIHVzZXIgb24gd2hldGhlciB0bwogICAgICAgIGFsbG93IG9y
IGRlbnkgY2VydGFpbiBvcGVyYXRpb25zLCBzdWNoIGFzIHNoYXJpbmcgdGhlIHVzZXIncwogICAg
ICAgIGxvY2F0aW9uIHdpdGggd2ViIHNpdGUgdGhyb3VnaCB0aGUgR2VvbG9jYXRpb24gQVBJLgoK
ICAgICAgICBOZXcgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCBwcm92aWRpbmcg
YWxsb3coKSBhbmQKICAgICAgICBkZW55KCkgb3BlcmF0aW9ucywgdG8gYmUgY2FsbGVkIG92ZXIg
dGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIGl0CiAgICAgICAgd2hlbiBlbWl0dGVkIGFsb25nIHdp
dGggdGhlIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KICAgICAgICAo
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZWZhdWx0X2luaXQpOgogICAgICAgICh3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KToKICAgICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9kZW55KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0Lmg6IEFkZGVkLgogICAgICAgIChfV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSk6
CiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgoKICAgICAgICBBZGRl
ZCB0aGUgbmV3IHNpZ25hbCB0byBXZWJLaXRXZWJWaWV3LCBwcm92aWRpbmcgYSBkZWZhdWx0IGhh
bmRsZXIKICAgICAgICB0aGF0IHdpbGwganVzdCBkZW55IHRoZSByZXF1ZXN0IHdoZW4gdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZC4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAod2Via2l0V2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0
KTogRGVmYXVsdCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IERlY2xhcmUgdGhlIG5ldyBzaWduYWwgYW5kIGNvbm5lY3QKICAgICAgICB0byB0aGUgZGVmYXVs
dCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KTog
SGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhCiAgICAgICAgbWFrZSBhIG5ldyBwZXJtaXNzaW9u
IHJlcXVlc3QgYW5kIGVtaXQgdGhlIG5ldyBzaWduYWwgc2lnbmFsLgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgogICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNz
KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IERl
Y2xhcmUgdGhlIGNyZWF0aW9uYWwKICAgICAgICBmdW5jdGlvbiB3ZWJraXRXZWJWaWV3TWFrZVBl
cm1pc3Npb25SZXF1ZXN0IGZvciBpbnRlcm5hbCB1c2Ugb25seS4KCiAgICAgICAgVXBkYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0OgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0MyArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHAgIHwgICA3OCArKysrKysrKysrKysr
KysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmgg
ICAgfCAgIDU5ICsrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDQ3ICsrKysrKysrKysrKwogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oICAgfCAgIDE2ICsrKystCiAuLi4vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCAgICAgICB8ICAgIDEgKwogLi4u
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgICAgfCAgICAxICsK
IC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IHwgICAy
MSArKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGQ3ZWNmNzQuLmM5M2RjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0OCBAQAogMjAx
Mi0wNC0xMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKKyAg
ICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNzaW9u
IHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFsIHRv
IFdlYktpdFdlYlZpZXcsIHRvIGJlCisgICAgICAgIGZpcmVkIHdoZW4gV2ViS2l0IG5lZWRzIGNv
bmZpcm1hdGlvbiBmcm9tIHRoZSB1c2VyIG9uIHdoZXRoZXIgdG8KKyAgICAgICAgYWxsb3cgb3Ig
ZGVueSBjZXJ0YWluIG9wZXJhdGlvbnMsIHN1Y2ggYXMgc2hhcmluZyB0aGUgdXNlcidzCisgICAg
ICAgIGxvY2F0aW9uIHdpdGggd2ViIHNpdGUgdGhyb3VnaCB0aGUgR2VvbG9jYXRpb24gQVBJLgor
CisgICAgICAgIE5ldyBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCBpbnRlcmZhY2UsIHByb3ZpZGlu
ZyBhbGxvdygpIGFuZAorICAgICAgICBkZW55KCkgb3BlcmF0aW9ucywgdG8gYmUgY2FsbGVkIG92
ZXIgdGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIGl0CisgICAgICAgIHdoZW4gZW1pdHRlZCBhbG9u
ZyB3aXRoIHRoZSBuZXcgJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFsLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVmYXVsdF9pbml0KToKKyAgICAgICAg
KHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cpOgorICAgICAgICAod2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9kZW55KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdElmYWNlKToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgor
CisgICAgICAgIEFkZGVkIHRoZSBuZXcgc2lnbmFsIHRvIFdlYktpdFdlYlZpZXcsIHByb3ZpZGlu
ZyBhIGRlZmF1bHQgaGFuZGxlcgorICAgICAgICB0aGF0IHdpbGwganVzdCBkZW55IHRoZSByZXF1
ZXN0IHdoZW4gdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0RlY2lk
ZVBlcm1pc3Npb25SZXF1ZXN0KTogRGVmYXVsdCBoYW5kbGVyLgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQpOiBEZWNsYXJlIHRoZSBuZXcgc2lnbmFsIGFuZCBjb25uZWN0Cisg
ICAgICAgIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TWFr
ZVBlcm1pc3Npb25SZXF1ZXN0KTogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhCisgICAgICAg
IG1ha2UgYSBuZXcgcGVybWlzc2lvbiByZXF1ZXN0IGFuZCBlbWl0IHRoZSBuZXcgc2lnbmFsIHNp
Z25hbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAg
ICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBEZWNsYXJlIHRoZSBjcmVhdGlvbmFsCisgICAgICAgIGZ1
bmN0aW9uIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QgZm9yIGludGVybmFsIHVz
ZSBvbmx5LgorCisgICAgICAgIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKworMjAx
Mi0wNC0xMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKICAg
ICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcHJvdmlkZXIgZm9yIHRoZSBH
VEsgcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODM4NzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA2ZGRiODU4Li40NGZiYjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQpAQCAtOTUsNiArOTUsNyBAQCBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFE
RVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3Vs
dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1
bHQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24uaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBv
bGljeURlY2lzaW9uLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJp
bnRPcGVyYXRpb24uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNw
b25zZVBvbGljeURlY2lzaW9uLmggXApAQCAtNTc3LDYgKzU3OCw4IEBAIHdlYmtpdDJfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xp
Y3lEZWNpc2lvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBvbGljeURlY2lzaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGY3MjFmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1
ZXN0LmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKKyAqIEBT
aG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJlcXVlc3QKKyAqIEBUaXRsZTogV2ViS2l0
UGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBU
aGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVyZSBhIHdlYiBicm93c2VyIHdvdWxkIG5lZWQgdG8gYXNr
IHRoZSB1c2VyCisgKiBmb3IgcGVybWlzc2lvbiBvbiBjZXJ0YWluIHR5cGUgb2Ygb3BlcmF0aW9u
cywgc3VjaCBhcyBzd2l0Y2hpbmcgdG8KKyAqIGZ1bGwgc2NyZWVuIG1vZGUgb3IgcmVwb3J0aW5n
IHRoZSB1c2VyJ3MgbG9jYXRpb24gdGhyb3VnaCB0aGUKKyAqIHN0YW5kYXJkIEdlb2xvY2F0aW9u
IEFQSS4gSW4gdGhvc2UgY2FzZXMsIFdlYktpdCB3aWxsIGVtaXQgYQorICogI1dlYktpdFdlYlZp
Y2U6OnBlcm1pc3Npb24tcmVxdWVzdCBzaWduYWwgd2l0aCBhCisgKiAjV2ViS2l0UGVybWlzc2lv
blJlcXVlc3Qgb2JqZWN0IGF0dGFjaGVkIHRvIGl0LgorICoKKyAqIElmIHRoZSBzaWduYWwgaGFu
ZGxlciBkb2VzIG5vdGhpbmcsIFdlYktpdCB3aWxsIGFjdCBhcyBpZgorICogd2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9kZW55KCkgd2FzIGNhbGxlZCBhcyBzb29uIGFzIHNpZ25hbAorICogaGFu
ZGxpbmcgY29tcGxldGVzLiBUbyBoYW5kbGUgYSBwZXJtaXNzaW9uIHJlcXVlc3QgaW4gYW4KKyAq
IGFzeW5jaHJvbm91cyB3YXksIHNpbXBseSBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBv
ZiB0aGUKKyAqICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCBvYmplY3QuCisgKi8KKwordHlwZWRl
ZiBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SW50
ZXJmYWNlOworR19ERUZJTkVfSU5URVJGQUNFKFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0LCB3ZWJr
aXRfcGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlZmF1bHRfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dElmYWNlKikKK3sKK30KKworLyoqCisgKiB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93
OgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0CisgKgorICogQWxsb3cg
dGhlIGFjdGlvbiB3aGljaCB0cmlnZ2VyZWQgdGhpcyByZXF1ZXN0LgorICovCit2b2lkIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNU
KHJlcXVlc3QpKTsKKworICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlID0g
V0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfSUZBQ0UocmVxdWVzdCk7CisgICAgaWYgKGlm
YWNlLT5hbGxvdykKKyAgICAgICAgaWZhY2UtPmFsbG93KHJlcXVlc3QpOworfQorCisvKioKKyAq
IHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueToKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIERlbnkgdGhlIGFjdGlvbiB3aGljaCB0cmlnZ2VyZCB0
aGlzIHJlcXVlc3QuCisgKi8KK3ZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSA9IFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1RfR0VU
X0lGQUNFKHJlcXVlc3QpOworICAgIGlmIChpZmFjZS0+ZGVueSkKKyAgICAgICAgaWZhY2UtPmRl
bnkocmVxdWVzdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xMDk2MTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChf
X1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNl
cnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4i
CisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QgICAgICAgICAgICh3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVF
U1Qob2JqKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KSkKKyNk
ZWZpbmUgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhvYmopICAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsIFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UpKQorI2RlZmluZSBXRUJLSVRfSVNfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iaikgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1BFUk1JU1NJ
T05fUkVRVUVTVF9HRVRfSUZBQ0Uob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9JTlRFUkZBQ0Uo
KG9iaiksIFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0UGVybWlzc2lvblJl
cXVlc3RJZmFjZSkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCBX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdElmYWNlIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2U7CisKK3N0cnVjdCBfV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSB7CisgICAgR1R5cGVJbnRlcmZhY2UgcGFyZW50X2lu
dGVyZmFjZTsKKworICAgIHZvaWQgKCogYWxsb3cpIChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCk7CisgICAgdm9pZCAoKiBkZW55KSAgKFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9wZXJtaXNzaW9uX3JlcXVl
c3RfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wZXJtaXNzaW9u
X3JlcXVlc3RfYWxsb3cgICAgKFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkgICAgIChXZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAppbmRleCA3YTZjMDFkLi44Yzg0NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjQsNiArNjQsNyBAQCBlbnVtIHsK
ICAgICBTQ1JJUFRfRElBTE9HLAogCiAgICAgREVDSURFX1BPTElDWSwKKyAgICBQRVJNSVNTSU9O
X1JFUVVFU1QsCiAKICAgICBNT1VTRV9UQVJHRVRfQ0hBTkdFRCwKIApAQCAtMTkwLDYgKzE5MSwx
MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0UG9saWN5RGVjaXNpb24qCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2Vi
VmlldyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiBkZWNpc2lvbiwgV2ViS2l0UGVybWlzc2lv
blJlcXVlc3RUeXBlKQoreworICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueShkZWNp
c2lvbik7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyB2b2lkIHpvb21UZXh0T25seUNo
YW5nZWQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CkBAIC0zMTMsNiAr
MzIwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2Vi
Vmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGUgPSB3ZWJr
aXRXZWJWaWV3Q3JlYXRlOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2RpYWxvZyA9IHdlYmtp
dFdlYlZpZXdTY3JpcHREaWFsb2c7CiAgICAgd2ViVmlld0NsYXNzLT5kZWNpZGVfcG9saWN5ID0g
d2Via2l0V2ViVmlld0RlY2lkZVBvbGljeTsKKyAgICB3ZWJWaWV3Q2xhc3MtPnBlcm1pc3Npb25f
cmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdDsKIAogICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJWaWV3Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJWaWV3
UHJpdmF0ZSkpOwogCkBAIC02MzgsNiArNjQ2LDM5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1RZUEUpOwogCiAgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6cGVybWlzc2lvbi1yZXF1ZXN0OgorICAgICAqIEB3
ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0CisgICAgICog
QHJlcXVlc3RfdHlwZTogYSAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3RUeXBlIGRlbm90aW5nIHRo
ZSB0eXBlIG9mIEByZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVk
IHdoZW4gV2ViS2l0IGlzIHJlcXVlc3RpbmcgdGhlIGNsaWVudCB0bworICAgICAqIGRlY2lkZSBh
Ym91dCBhIHBlcm1pc3Npb24gcmVxdWVzdCwgc3VjaCBhcyBhbGxvd2luZyB0aGUgYnJvd3Nlcgor
ICAgICAqIHN3aXRjaCB0byBmdWxsc2NyZWVuIG1vZGUsIHNoYXJpbmcgaXRzIGxvY2F0aW9uIG9y
IHNpbWlsYXIuCisgICAgICoKKyAgICAgKiBJdCBpcyBwb3NzaWJsZSB0byBoYW5kbGUgcGVybWlz
c2lvbiByZXF1ZXN0cyBhc3luY2hyb25vdXNseSwgYnkKKyAgICAgKiBzaW1wbHkgY2FsbGluZyBn
X29iamVjdF9yZWYoKSBvbiB0aGUgQHJlcXVlc3QgYXJndW1lbnQgYW5kCisgICAgICogcmV0dXJu
aW5nICVUUlVFIHRvIGJsb2NrIHRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyLgorICAgICAqCisg
ICAgICogSWYgdGhlIGxhc3QgcmVmZXJlbmNlIGlzIHJlbW92ZWQgb24gYSAjV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QKKyAgICAgKiBhbmQgbm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSwgd2Via2l0
X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KCkKKyAgICAgKiB3aWxsIGJlIHRoZSBkZWZhdWx0IGRl
Y2lzaW9uLiBUaGUgZGVmYXVsdCBzaWduYWwgaGFuZGxlciB3aWxsCisgICAgICogc2ltcGx5IGNh
bGwgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KCkuCisgICAgICoKKyAgICAgKiBSZXR1
cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3Ig
dGhlIGV2ZW50LgorICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhl
ci4KKyAgICAgKgorICAgICAqLworICAgIHNpZ25hbHNbUEVSTUlTU0lPTl9SRVFVRVNUXSA9Cisg
ICAgICAgIGdfc2lnbmFsX25ldygicGVybWlzc2lvbi1yZXF1ZXN0IiwKKyAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAg
ICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHBlcm1pc3Npb25fcmVxdWVzdCksCisgICAgICAgICAg
ICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyogYWNjdW11
bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX09CSkVDVF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIs
IC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9QRVJNSVNTSU9OX1JFUVVFU1RfVFlQRSk7CisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmll
dzo6bW91c2UtdGFyZ2V0LWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdl
YlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICogQGhpdF90ZXN0X3Jl
c3VsdDogYSAjV2ViS2l0SGl0VGVzdFJlc3VsdApAQCAtODkxLDYgKzkzMiwxMiBAQCB2b2lkIHdl
YmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0UG9saWN5RGVjaXNpbwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tERUNJ
REVfUE9MSUNZXSwgMCwgZGVjaXNpb24sIHR5cGUsICZyZXR1cm5WYWx1ZSk7CiB9CiAKK3ZvaWQg
d2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUgdHlwZSwgV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1BFUk1JU1NJT05fUkVRVUVTVF0sIDAsIHJlcXVlc3QsIHR5
cGUsICZyZXR1cm5WYWx1ZSk7Cit9CisKIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hh
bmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXS0hpdFRlc3RSZXN1bHRSZWYgd2tIaXRUZXN0
UmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllcnMpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGY1YzIxYzUuLjhhNGQ0MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTEsNCAr
MSw0IEBACi0vKgorZHVtbS8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAgVG9rZXIgPGFscEBh
dG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdpbmRvd1Byb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oPgogCiBH
X0JFR0lOX0RFQ0xTCkBAIC05MCw2ICs5MSwxNiBAQCB0eXBlZGVmIGVudW0gewogfSBXZWJLaXRQ
b2xpY3lEZWNpc2lvblR5cGU7CiAKIC8qKgorICogV2ViS2l0UGVybWlzc2lvblJlcXVlc3RUeXBl
OgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSB0eXBlIG9mIGEg
cGVybWlzc2lvbiByZXF1ZXN0IGR1cmluZworICogI1dlYktpdFdlYlZpZXc6OnBlcm1pc3Npb24t
cmVxdWVzdC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUEVSTUlTU0lPTl9SRVFV
RVNUX1RZUEVfRFVNTVksIC8qIFRvIGJlIHJlcGxhY2VkIGZvciBzb21lIHJlYWwgdGhpbmcuICov
Cit9IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZTsKKworLyoqCiAgKiBXZWJLaXRMb2FkRXZl
bnQ6CiAgKiBAV0VCS0lUX0xPQURfU1RBUlRFRDogQSBuZXcgbG9hZCByZXF1ZXN0IGhhcyBiZWVu
IG1hZGUuCiAgKiBObyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkIHlldCwgZW1wdHkgc3RydWN0dXJl
cyBoYXZlCkBAIC0xNDEsNiArMTUyLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mgewog
ICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICpkZWNpc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAg
IHR5cGUpOworICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgKnBlcm1pc3Npb25f
cmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0VHlwZSB0eXBlKTsKICAgICB2b2lkICAgICAgICgqIG1vdXNlX3Rh
cmdldF9jaGFuZ2VkKSAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3Vs
dCAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDcwZDZkNmQuLmFjNTczMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDIsNiAr
NDIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9p
ZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBD
U3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJt
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKIFdLU3RyaW5nUmVmIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBDU3RyaW5nJiBkZWZhdWx0VGV4dCk7Cit2b2lkIHdlYmtpdFdl
YlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Np
b25SZXF1ZXN0VHlwZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UG9saWN5RGVjaXNp
b25UeXBlLCBXZWJLaXRQb2xpY3lEZWNpc2lvbiopOwogdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VU
YXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXS0hpdFRlc3RSZXN1bHRSZWYsIHVuc2lnbmVk
IG1vZGlmaWVycyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcq
LCBXS0ZyYW1lUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDlmMDg2NjMuLjBmOTE4ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMjEsNiArMjEsNyBAQAogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRVUklSZXNwb25zZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0V2luZG93UHJvcGVydGllcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0RG93bmxvYWQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKaW5kZXggODI5ZGUxYy4uY2FmMTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CkBAIC00OCw2ICs0OCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZQogPFRJVExF
PldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2ViVmlldwogV2ViS2l0TG9hZEV2ZW50CitX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUKIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZQogCiA8
U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgpAQCAtMzU3LDYgKzM1OCwyNiBAQCB3ZWJraXRf
ZG93bmxvYWRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Cit3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93Cit3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkK
KworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdENsYXNzCitX
RUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1QK
K1dFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1Rf
Q0xBU1MKK1dFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9QRVJNSVNT
SU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUK
KzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRQb2xpY3lEZWNpc2lvbjwvRklM
RT4KIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2Fk
Ci0tIAoxLjcuNy42Cgo=
</data>
<flag name="commit-queue"
          id="142065"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137082</attachid>
            <date>2012-04-13 06:58:48 -0700</date>
            <delta_ts>2012-04-16 03:48:40 -0700</delta_ts>
            <desc>2. Added a new geolocation permission request</desc>
            <filename>0002-2012-04-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>26902</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBiMDEyNGYyYmI4NTgzOTc0ODQ3NDZhMDBmMGFkMjBjYmZjYWU4MDQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDEzIEFwciAyMDEyIDE1OjQwOjE4ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzJdIDIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBl
cm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBBZGRlZCBhIG5ldyBraW5kIG9mIHBlcm1pc3Npb24gcmVxdWVz
dCBmb3Igc3VwcG9ydGluZyB0aGUKICAgICAgICBHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdU
SysuCgogICAgICAgIE5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNz
LCBpbXBsZW1lbnRpbmcgdGhlCiAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJm
YWNlLCB0byBlbmFibGluZyBjbGllbnQgYXBwbGljYXRpb25zCiAgICAgICAgdG8gYWxsb3cgb3Ig
ZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCiAgICAgICAgKF9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6CiAgICAgICAgKHdlYmtpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CiAgICAgICAgKHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKICAgICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9pbnRlcmZhY2VfaW5pdCk6CiAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNz
aW9uX3JlcXVlc3RfaW5pdCk6CiAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RGaW5hbGl6ZSk6CiAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3Jl
cXVlc3RfY2xhc3NfaW5pdCk6CiAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDcmVhdGUpOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KICAgICAgICAoX1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgogICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENsYXNzKToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgoKICAgICAgICBJbmNsdWRlIFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIFdlYktpdFByaXZhdGUuaCwgc28gd2UK
ICAgICAgICBjYW4gdXNlIGl0IGZyb20gdGhlIG5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0IGNsYXNzLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZh
dGUuaDogQWRkZWQgbmV3IGluY2x1ZGUuCgogICAgICAgIEltcGxlbWVudCBnZW9sb2NhdGlvbiBw
ZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRoZSBVSSBjbGllbnQuCgogICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwOgogICAgICAgIChkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogQ3JlYXRlIGEgbmV3CiAgICAgICAgaW5zdGFuY2Ug
b2YgdGhlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MgYW5kIGNhbGwK
ICAgICAgICB0byB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KCkuCiAgICAgICAg
KGF0dGFjaFVJQ2xpZW50VG9WaWV3KTogUHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
biBmb3IKICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBBZGQgbmV3IGVs
ZW1lbnQgdG8KICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUgZW51bWVyYXRpb24g
Zm9yIGdlb2xvY2F0aW9uIHJlcXVlc3RzLgoKICAgICAgICBVcGRhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbDoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQ6CgoyMDEyLTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlh
LmNvbT4KCiAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBw
ZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KCiAgICAgICAgTWFrZSBtaW5pYnJvd3NlciBjb25uZWN0IHRvIHRoZSBuZXcg
J3Blcm1pc3Npb24gcmVxdWVzdHMnIHNpZ25hbAogICAgICAgIHRvIGFsbG93IHVzZXJzIGhhbmRs
ZSB0aGUgR2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KCiAgICAgICAgKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgogICAgICAgIChnZW9sb2NhdGlvblJlcXVlc3REaWFs
b2dDYWxsYmFjayk6IENhbGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2luZwogICAgICAgIHRoZSB1
c2VyIGZvciBhbGxvd2luZyBvciBub3QgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4K
ICAgICAgICAod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KTogTGF1bmNoIGEgZGlhbG9n
IHRvIGFzayB0aGUgdXNlcgogICAgICAgIHdoZXRoZXIgdG8gYWxsb3cgb3IgZGVueSBnZW9sb2Nh
dGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgogICAgICAgIChicm93c2VyV2luZG93Q29uc3RydWN0
ZWQpOiBDb25uZWN0IHRvICdwZXJtaXNzaW9uLXJlcXVlc3QnIHNpZ25hbC4KLS0tCiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAg
IHwgICAgNCArCiAuLi4vQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcCB8ICAgOTMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9BUEkvZ3RrL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAgIHwgICA1OSArKysrKysrKysrKysKIC4uLi9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICAgIHwgICAyOCArKysrKysK
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCAgIHwgICAg
MSArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgICB8
ICAgMTAgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmggICB8ICAgIDggKystCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbCAgICB8ICAgIDEgKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQgfCAgIDE4ICsrKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArKysrCiBUb29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jICAgICAgICAgICAgICB8ICAgNDEgKysrKysrKysrCiAxMiBmaWxlcyBj
aGFuZ2VkLCAzMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzkzZGNh
My4uMjYzNDc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDU2IEBACiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkZWQgYSBuZXcga2luZCBvZiBwZXJt
aXNzaW9uIHJlcXVlc3QgZm9yIHN1cHBvcnRpbmcgdGhlCisgICAgICAgIEdlb2xvY2F0aW9uIEFQ
SSBpbiBXZWJLaXQyR1RLKy4KKworICAgICAgICBOZXcgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCBjbGFzcywgaW1wbGVtZW50aW5nIHRoZQorICAgICAgICBXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdCBpbnRlcmZhY2UsIHRvIGVuYWJsaW5nIGNsaWVudCBhcHBsaWNhdGlvbnMKKyAg
ICAgICAgdG8gYWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUpOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToK
KyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAg
ICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAo
d2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdl
YmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAg
ICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlLmg6IEFkZGVkLgorCisgICAgICAgIEluY2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0ZS5oLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGl0IGZy
b20gdGhlIG5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaW5j
bHVkZS4KKworICAgICAgICBJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0
cyBpbiB0aGUgVUkgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCk6IENyZWF0ZSBhIG5ldworICAgICAgICBpbnN0YW5jZSBvZiB0aGUgV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcyBhbmQgY2FsbAorICAgICAgICB0byB3
ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KCkuCisgICAgICAgIChhdHRhY2hVSUNs
aWVudFRvVmlldyk6IFByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yCisgICAg
ICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8K
KyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9s
b2NhdGlvbiByZXF1ZXN0cy4KKworICAgICAgICBVcGRhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisKKzIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdW1dLMl0gSW1wbGVtZW50IEFQSSBmb3IgR2VvbG9jYXRpb24g
cGVybWlzc2lvbiByZXF1ZXN0cyBpbiB0aGUgR1RLIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRkZWQgbmV3ICdwZXJtaXNzaW9uLXJlcXVlc3Qn
IHNpZ25hbCB0byBXZWJLaXRXZWJWaWV3LCB0byBiZQogICAgICAgICBmaXJlZCB3aGVuIFdlYktp
dCBuZWVkcyBjb25maXJtYXRpb24gZnJvbSB0aGUgdXNlciBvbiB3aGV0aGVyIHRvCiAgICAgICAg
IGFsbG93IG9yIGRlbnkgY2VydGFpbiBvcGVyYXRpb25zLCBzdWNoIGFzIHNoYXJpbmcgdGhlIHVz
ZXIncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA0NGZiYjJiLi4wYzBhYjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtOTQsNiArOTQsNyBAQCBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJT
ID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmluZENvbnRyb2xsZXIu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0Lmgg
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5o
IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBvbGljeURlY2lzaW9uLmggXApAQCAtNTY1LDYgKzU2Niw5IEBAIHdlYmtpdDJfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3Iu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxsc2NyZWVu
Q2xpZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVs
bHNjcmVlbkNsaWVudC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2FmYmRjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIK
KworI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQ
cml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Ig
c2hhcmluZyB1c2VyJ3MgbG9jYXRpb24KKyAqIEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNX
ZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBy
ZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIg
V2ViS2l0IHNob3VsZCBwcm92aWRlIHRoZSB1c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0
ZSB3aGVuIHJlcXVlc3RlZCB0aHJvdWdodCB0aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitzdGF0
aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBl
cm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9u
X3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExF
TUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBXS1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWY+IHJlcXVlc3Q7Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVR
VUVTVChyZXF1ZXN0KS0+cHJpdjsKKyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RB
bGxvdyhwcml2LT5yZXF1ZXN0LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVR
VUVTVChyZXF1ZXN0KS0+cHJpdjsKKyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RE
ZW55KHByaXYtPnJlcXVlc3QuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZAord2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNl
ICppZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Bl
cm1pc3Npb25fcmVxdWVzdF9pbml0KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qs
IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKTsKKyAgICBuZXcgKHJl
cXVlc3QtPnByaXYpIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5h
bGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZ2VvbG9jYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5p
dChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAg
b2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEZpbmFsaXplOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKSk7Cit9CisKK1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDcmVhdGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7
CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgTlVM
TCkpOworICAgIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSBy
ZXF1ZXN0OworICAgIHJldHVybiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjAzM2I2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Rf
aAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERl
ZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9Q
RVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmlu
ZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENs
YXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QgICAgICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisg
ICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAg
R09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZGU2
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisK
K1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RDcmVhdGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKTsK
KworI2VuZGlmIC8vIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApp
bmRleCA0YjdlOWFkLi4xZWZlODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Rvd25sb2FkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ZpbmRPcHRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZmMGUxMWMuLmI0
NDhlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVSUNsaWVudC5jcHAKQEAgLTIwLDEyICsyMCwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGls
aXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTEzNiw2ICsxMzgsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRGcmFt
ZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCiAgICAgd2Vi
a2l0V2ViVmlld1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dp
ZGdldCgpKSwgZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdl
YmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkpOworICAgIHdl
YmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVudElu
Zm8pLCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX1RZUEVfR0VPTE9DQVRJT04sIFdFQktJVF9Q
RVJNSVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOwor
fQorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7
CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3MCw3ICsxNzgsNyBAQCB2
b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAg
IDAsIC8vIHBhZ2VEaWRTY3JvbGwKICAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3Rh
CiAgICAgICAgIDAsIC8vIHJ1bk9wZW5QYW5lbAotICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIDAsIC8vIGhlYWRlckhlaWdodAog
ICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKICAgICAgICAgMCwgLy8gZHJhd0hlYWRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4
IDhhNGQ0MmMuLjc3NjliMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTkyLDEyICs5MiwxOCBAQCB0eXBlZGVmIGVudW0gewog
CiAvKioKICAqIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZToKKyAqIEBXRUJLSVRfUEVSTUlT
U0lPTl9SRVFVRVNUX1RZUEVfR0VPTE9DQVRJT046IFRoaXMgdHlwZSBvZgorICogcGVybWlzc2lv
biByZXF1ZXN0IGhhcHBlbnMgd2hlbiBXZWJLaXQgaXMgYXNrZWQgdG8gcmVwb3J0IHRoZQorICog
Y3VycmVudCBsb2NhdGlvbiBvZiB0aGUgdXNlciB0aHJvdWdoIHRoZSBKYXZhU2NyaXB0IEdlb2xv
Y2F0aW9uCisgKiBBUEkuIEEgY2FsbCB0byBlaXRoZXIgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9hbGxvdygpIG9yCisgKiB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoKSBzaG91bGQg
YmUgcGVyZm9ybWVkIHRvIHRlbGwgV2ViS2l0CisgKiB3aGF0IGl0IHNob3VsZCBmaW5hbGx5IGRv
IHdpdGggdGhlIHJlcXVlc3QuCiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCBmb3IgZGV0ZXJtaW5p
bmcgdGhlIHR5cGUgb2YgYSBwZXJtaXNzaW9uIHJlcXVlc3QgZHVyaW5nCiAgKiAjV2ViS2l0V2Vi
Vmlldzo6cGVybWlzc2lvbi1yZXF1ZXN0LgogICovCiB0eXBlZGVmIGVudW0gewotICAgIFdFQktJ
VF9QRVJNSVNTSU9OX1JFUVVFU1RfVFlQRV9EVU1NWSwgLyogVG8gYmUgcmVwbGFjZWQgZm9yIHNv
bWUgcmVhbCB0aGluZy4gKi8KKyAgICBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX1RZUEVfR0VP
TE9DQVRJT04sCiB9IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZTsKIAogLyoqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbAppbmRleCAwZjkxOGYzLi41ZTg5MWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
CkBAIC0yMiw2ICsyMiw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdpbmRv
d1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdERvd25s
b2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CmluZGV4IGNhZjEwNTguLmU3ZjhiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApA
QCAtMzc4LDYgKzM3OCwyNCBAQCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCiA8
L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDwvRklMRT4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKworPFNV
QlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xh
c3MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFT
UworV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lU
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04g
UHJpdmF0ZT4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisK
KzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xp
Y3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlmYTgwNjAuLmQ1MjI1MDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0wNC0xMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2Nh
dGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIG1pbmlicm93c2VyIGNvbm5lY3Qg
dG8gdGhlIG5ldyAncGVybWlzc2lvbiByZXF1ZXN0cycgc2lnbmFsCisgICAgICAgIHRvIGFsbG93
IHVzZXJzIGhhbmRsZSB0aGUgR2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgIChnZW9sb2Nh
dGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6IENhbGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2lu
ZworICAgICAgICB0aGUgdXNlciBmb3IgYWxsb3dpbmcgb3Igbm90IGdlb2xvY2F0aW9uIHBlcm1p
c3Npb24gcmVxdWVzdHMuCisgICAgICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3Qp
OiBMYXVuY2ggYSBkaWFsb2cgdG8gYXNrIHRoZSB1c2VyCisgICAgICAgIHdoZXRoZXIgdG8gYWxs
b3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorICAgICAgICAoYnJv
d3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ29ubmVjdCB0byAncGVybWlzc2lvbi1yZXF1ZXN0JyBz
aWduYWwuCisKIDIwMTItMDQtMTEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5v
a2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gTWFuYWdlIGdyYXBoaWNzIGJ1ZmZlcnMgaW4g
dGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCA1
ZmU5ODRhLi5kZTEzYjY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAg
LTE5OSw2ICsxOTksMjEgQEAgc3RhdGljIHZvaWQgYmFja0ZvcndhZGxpc3RDaGFuZ2VkKFdlYktp
dEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhZGxpc3QsIFdlYktpdEIKICAgICBicm93c2VyV2lu
ZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMod2luZG93LCBiYWNrRm9yd2FkbGlzdCk7CiB9CiAK
K3N0YXRpYyB2b2lkIGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxvZyog
ZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBU
OgorICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVlc3QpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1
ZXN0X2RlbnkocmVxdWVzdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVl
c3QpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3Q2xvc2UoV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtf
V0lER0VUKHdpbmRvdykpOwpAQCAtMjYzLDYgKzI3OCwzMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
Vmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNp
c2lvbgogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lk
ZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBlcm1pc3Np
b25SZXF1ZXN0ICpyZXF1ZXN0LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUgcmVxdWVzdFR5
cGUsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAocmVxdWVzdFR5cGUgIT0gV0VC
S0lUX1BFUk1JU1NJT05fUkVRVUVTVF9UWVBFX0dFT0xPQ0FUSU9OKQorICAgICAgcmV0dXJuIEZB
TFNFOworCisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfZGlhbG9nX25ld193aXRoX2J1dHRv
bnMoIkdlb2xvY2F0aW9uIHJlcXVlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1cod2luZG93KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMIHwg
R1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19PSywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfUkVTUE9OU0VfQUNDRVBU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
S19TVE9DS19DQU5DRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX1JFU1BPTlNFX1JFSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIEd0a1dpZGdldCAqY29u
dGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJQUxPRyhkaWFsb2cp
KTsKKyAgICBHdGtXaWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ldygiQWxsb3cgZ2VvbG9jYXRp
b24gcmVxdWVzdD8iKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJl
YSksIGxhYmVsLCBUUlVFLCBUUlVFLCA2KTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobGFiZWwpOwor
CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soZ2Vv
bG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVjdF9yZWYocmVxdWVzdCkpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0
YXRpYyB2b2lkIHdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0VGVzdFJlc3VsdCwgZ3VpbnQgbW91c2VNb2RpZmll
cnMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBpZiAoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKSB7CkBAIC00MjAsNiArNDYwLDcg
QEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3Qp
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExC
QUNLKHdlYlZpZXdDcmVhdGUpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93
LT53ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKHdlYlZpZXdMb2FkRmFpbGVkKSwg
d2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImRlY2lkZS1w
b2xpY3kiLCBHX0NBTExCQUNLKHdlYlZpZXdEZWNpZGVQb2xpY3kpLCB3aW5kb3cpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAicGVybWlzc2lvbi1yZXF1ZXN0IiwgR19D
QUxMQkFDSyh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpLCB3aW5kb3cpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAibW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBH
X0NBTExCQUNLKHdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQpLCB3aW5kb3cpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAibm90aWZ5Ojp6b29tLWxldmVsIiwgR19DQUxM
QkFDSyh3ZWJWaWV3Wm9vbUxldmVsQ2hhbmdlZCksIHdpbmRvdyk7CiAKLS0gCjEuNy43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137088</attachid>
            <date>2012-04-13 08:19:53 -0700</date>
            <delta_ts>2012-04-13 08:47:19 -0700</delta_ts>
            <desc>1. Add new &apos;permission-request&apos; signal to WebKitWebView</desc>
            <filename>0001-2012-04-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>20931</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5NjNkMjE4NDJkM2U2NDE5ZTczOGU1YTFmODViN2ZkNzMyYmMzNDZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDEzIEFwciAyMDEyIDE1OjMwOjEzICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBl
cm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBBZGRlZCBuZXcgJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFs
IHRvIFdlYktpdFdlYlZpZXcsIHRvIGJlCiAgICAgICAgZmlyZWQgd2hlbiBXZWJLaXQgbmVlZHMg
Y29uZmlybWF0aW9uIGZyb20gdGhlIHVzZXIgb24gd2hldGhlciB0bwogICAgICAgIGFsbG93IG9y
IGRlbnkgY2VydGFpbiBvcGVyYXRpb25zLCBzdWNoIGFzIHNoYXJpbmcgdGhlIHVzZXIncwogICAg
ICAgIGxvY2F0aW9uIHdpdGggd2ViIHNpdGUgdGhyb3VnaCB0aGUgR2VvbG9jYXRpb24gQVBJLgoK
ICAgICAgICBOZXcgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCBwcm92aWRpbmcg
YWxsb3coKSBhbmQKICAgICAgICBkZW55KCkgb3BlcmF0aW9ucywgdG8gYmUgY2FsbGVkIG92ZXIg
dGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIGl0CiAgICAgICAgd2hlbiBlbWl0dGVkIGFsb25nIHdp
dGggdGhlIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KICAgICAgICAo
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZWZhdWx0X2luaXQpOgogICAgICAgICh3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KToKICAgICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9kZW55KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0Lmg6IEFkZGVkLgogICAgICAgIChfV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSk6
CiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgoKICAgICAgICBBZGRl
ZCB0aGUgbmV3IHNpZ25hbCB0byBXZWJLaXRXZWJWaWV3LCBwcm92aWRpbmcgYSBkZWZhdWx0IGhh
bmRsZXIKICAgICAgICB0aGF0IHdpbGwganVzdCBkZW55IHRoZSByZXF1ZXN0IHdoZW4gdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZC4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAod2Via2l0V2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0
KTogRGVmYXVsdCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IERlY2xhcmUgdGhlIG5ldyBzaWduYWwgYW5kIGNvbm5lY3QKICAgICAgICB0byB0aGUgZGVmYXVs
dCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KTog
SGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhCiAgICAgICAgbWFrZSBhIG5ldyBwZXJtaXNzaW9u
IHJlcXVlc3QgYW5kIGVtaXQgdGhlIG5ldyBzaWduYWwgc2lnbmFsLgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgogICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNz
KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IERl
Y2xhcmUgdGhlIGNyZWF0aW9uYWwKICAgICAgICBmdW5jdGlvbiB3ZWJraXRXZWJWaWV3TWFrZVBl
cm1pc3Npb25SZXF1ZXN0IGZvciBpbnRlcm5hbCB1c2Ugb25seS4KCiAgICAgICAgVXBkYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0OgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0MyArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHAgIHwgICA3OCArKysrKysrKysrKysr
KysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmgg
ICAgfCAgIDU5ICsrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDQ3ICsrKysrKysrKysrKwogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oICAgfCAgIDE0ICsrKysKIC4uLi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSArCiAuLi4v
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCAgICB8ICAgIDEgKwog
Li4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgfCAgIDIx
ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDI2NyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZDdlY2Y3NC4uYzkzZGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEy
LTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAorICAg
ICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24g
cmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwgdG8g
V2ViS2l0V2ViVmlldywgdG8gYmUKKyAgICAgICAgZmlyZWQgd2hlbiBXZWJLaXQgbmVlZHMgY29u
ZmlybWF0aW9uIGZyb20gdGhlIHVzZXIgb24gd2hldGhlciB0bworICAgICAgICBhbGxvdyBvciBk
ZW55IGNlcnRhaW4gb3BlcmF0aW9ucywgc3VjaCBhcyBzaGFyaW5nIHRoZSB1c2VyJ3MKKyAgICAg
ICAgbG9jYXRpb24gd2l0aCB3ZWIgc2l0ZSB0aHJvdWdoIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisK
KyAgICAgICAgTmV3IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0IGludGVyZmFjZSwgcHJvdmlkaW5n
IGFsbG93KCkgYW5kCisgICAgICAgIGRlbnkoKSBvcGVyYXRpb25zLCB0byBiZSBjYWxsZWQgb3Zl
ciB0aGUgb2JqZWN0cyBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgd2hlbiBlbWl0dGVkIGFsb25n
IHdpdGggdGhlIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZWZhdWx0X2luaXQpOgorICAgICAgICAo
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyk6CisgICAgICAgICh3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2RlbnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFBlcm1pc3Npb25SZXF1
ZXN0SWZhY2UpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMuCisK
KyAgICAgICAgQWRkZWQgdGhlIG5ldyBzaWduYWwgdG8gV2ViS2l0V2ViVmlldywgcHJvdmlkaW5n
IGEgZGVmYXVsdCBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBqdXN0IGRlbnkgdGhlIHJlcXVl
c3Qgd2hlbiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RGVjaWRl
UGVybWlzc2lvblJlcXVlc3QpOiBEZWZhdWx0IGhhbmRsZXIuCisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6IERlY2xhcmUgdGhlIG5ldyBzaWduYWwgYW5kIGNvbm5lY3QKKyAg
ICAgICAgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdNYWtl
UGVybWlzc2lvblJlcXVlc3QpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEKKyAgICAgICAg
bWFrZSBhIG5ldyBwZXJtaXNzaW9uIHJlcXVlc3QgYW5kIGVtaXQgdGhlIG5ldyBzaWduYWwgc2ln
bmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmg6IERlY2xhcmUgdGhlIGNyZWF0aW9uYWwKKyAgICAgICAgZnVu
Y3Rpb24gd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdCBmb3IgaW50ZXJuYWwgdXNl
IG9ubHkuCisKKyAgICAgICAgVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorCisyMDEy
LTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBnZW9sb2NhdGlvbiBwcm92aWRlciBmb3IgdGhlIEdU
SyBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
Mzg3NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDZkZGI4NTguLjQ0ZmJiMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC05NSw2ICs5NSw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlX0hFQURF
UlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbi5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1p
c3Npb25SZXF1ZXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24uaCBcCkBAIC01NzcsNiArNTc4LDggQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZjcyMWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QuaCIKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAorICogQFNo
b3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdAorICogQFRpdGxlOiBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFRo
ZXJlIGFyZSBzaXR1YXRpb25zIHdoZXJlIGEgd2ViIGJyb3dzZXIgd291bGQgbmVlZCB0byBhc2sg
dGhlIHVzZXIKKyAqIGZvciBwZXJtaXNzaW9uIG9uIGNlcnRhaW4gdHlwZSBvZiBvcGVyYXRpb25z
LCBzdWNoIGFzIHN3aXRjaGluZyB0bworICogZnVsbCBzY3JlZW4gbW9kZSBvciByZXBvcnRpbmcg
dGhlIHVzZXIncyBsb2NhdGlvbiB0aHJvdWdoIHRoZQorICogc3RhbmRhcmQgR2VvbG9jYXRpb24g
QVBJLiBJbiB0aG9zZSBjYXNlcywgV2ViS2l0IHdpbGwgZW1pdCBhCisgKiAjV2ViS2l0V2ViVmlj
ZTo6cGVybWlzc2lvbi1yZXF1ZXN0IHNpZ25hbCB3aXRoIGEKKyAqICNXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdCBvYmplY3QgYXR0YWNoZWQgdG8gaXQuCisgKgorICogSWYgdGhlIHNpZ25hbCBoYW5k
bGVyIGRvZXMgbm90aGluZywgV2ViS2l0IHdpbGwgYWN0IGFzIGlmCisgKiB3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2RlbnkoKSB3YXMgY2FsbGVkIGFzIHNvb24gYXMgc2lnbmFsCisgKiBoYW5k
bGluZyBjb21wbGV0ZXMuIFRvIGhhbmRsZSBhIHBlcm1pc3Npb24gcmVxdWVzdCBpbiBhbgorICog
YXN5bmNocm9ub3VzIHdheSwgc2ltcGx5IGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9m
IHRoZQorICogI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0IG9iamVjdC4KKyAqLworCit0eXBlZGVm
IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJbnRl
cmZhY2U7CitHX0RFRklORV9JTlRFUkZBQ0UoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVmYXVsdF9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
SWZhY2UqKQoreworfQorCisvKioKKyAqIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3c6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBBbGxvdyB0
aGUgYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIHJlcXVlc3QuCisgKi8KK3ZvaWQgd2Via2l0
X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1Qo
cmVxdWVzdCkpOworCisgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZhY2UgPSBX
RUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9JRkFDRShyZXF1ZXN0KTsKKyAgICBpZiAoaWZh
Y2UtPmFsbG93KQorICAgICAgICBpZmFjZS0+YWxsb3cocmVxdWVzdCk7Cit9CisKKy8qKgorICog
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55OgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0CisgKgorICogRGVueSB0aGUgYWN0aW9uIHdoaWNoIHRyaWdnZXJkIHRo
aXMgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFBlcm1p
c3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlID0gV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRf
SUZBQ0UocmVxdWVzdCk7CisgICAgaWYgKGlmYWNlLT5kZW55KQorICAgICAgICBpZmFjZS0+ZGVu
eShyZXF1ZXN0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjEwOTYxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9f
V0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vy
cm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIK
KyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgKHdlYmtpdF9wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVT
VChvYmopICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QpKQorI2Rl
ZmluZSBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSkpCisjZGVmaW5lIFdFQktJVF9JU19QRVJNSVNTSU9O
X1JFUVVFU1Qob2JqKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUX0dFVF9JRkFDRShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0lOVEVSRkFDRSgo
b2JqKSwgV0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdElmYWNlKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0IFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0SWZhY2UgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZTsKKworc3RydWN0IF9XZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlIHsKKyAgICBHVHlwZUludGVyZmFjZSBwYXJlbnRfaW50
ZXJmYWNlOworCisgICAgdm9pZCAoKiBhbGxvdykgKFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKyAgICB2b2lkICgqIGRlbnkpICAoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJl
cXVlc3QpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Blcm1pc3Npb25f
cmVxdWVzdF9hbGxvdyAgICAoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueSAgICAgKFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDdhNmMwMWQuLjhjODQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGVudW0gewog
ICAgIFNDUklQVF9ESUFMT0csCiAKICAgICBERUNJREVfUE9MSUNZLAorICAgIFBFUk1JU1NJT05f
UkVRVUVTVCwKIAogICAgIE1PVVNFX1RBUkdFVF9DSEFOR0VELAogCkBAIC0xOTAsNiArMTkxLDEy
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRQb2xpY3lEZWNpc2lvbioKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIGRlY2lzaW9uLCBXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdFR5cGUpCit7CisgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KGRlY2lz
aW9uKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQgem9vbVRleHRPbmx5Q2hh
bmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSSh3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKTsKQEAgLTMxMyw2ICsz
MjAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZSA9IHdlYmtp
dFdlYlZpZXdDcmVhdGU7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfZGlhbG9nID0gd2Via2l0
V2ViVmlld1NjcmlwdERpYWxvZzsKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3
ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OworICAgIHdlYlZpZXdDbGFzcy0+cGVybWlzc2lvbl9y
ZXF1ZXN0ID0gd2Via2l0V2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0OwogCiAgICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQ
cml2YXRlKSk7CiAKQEAgLTYzOCw2ICs2NDYsMzkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT05fVFlQRSk7CiAKICAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpwZXJtaXNzaW9uLXJlcXVlc3Q6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKKyAgICAgKiBA
cmVxdWVzdF90eXBlOiBhICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUgZGVub3RpbmcgdGhl
IHR5cGUgb2YgQHJlcXVlc3QKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQg
d2hlbiBXZWJLaXQgaXMgcmVxdWVzdGluZyB0aGUgY2xpZW50IHRvCisgICAgICogZGVjaWRlIGFi
b3V0IGEgcGVybWlzc2lvbiByZXF1ZXN0LCBzdWNoIGFzIGFsbG93aW5nIHRoZSBicm93c2VyCisg
ICAgICogc3dpdGNoIHRvIGZ1bGxzY3JlZW4gbW9kZSwgc2hhcmluZyBpdHMgbG9jYXRpb24gb3Ig
c2ltaWxhci4KKyAgICAgKgorICAgICAqIEl0IGlzIHBvc3NpYmxlIHRvIGhhbmRsZSBwZXJtaXNz
aW9uIHJlcXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieQorICAgICAqIHNpbXBseSBjYWxsaW5nIGdf
b2JqZWN0X3JlZigpIG9uIHRoZSBAcmVxdWVzdCBhcmd1bWVudCBhbmQKKyAgICAgKiByZXR1cm5p
bmcgJVRSVUUgdG8gYmxvY2sgdGhlIGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIuCisgICAgICoKKyAg
ICAgKiBJZiB0aGUgbGFzdCByZWZlcmVuY2UgaXMgcmVtb3ZlZCBvbiBhICNXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdAorICAgICAqIGFuZCBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlLCB3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoKQorICAgICAqIHdpbGwgYmUgdGhlIGRlZmF1bHQgZGVj
aXNpb24uIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwKKyAgICAgKiBzaW1wbHkgY2Fs
bCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoKS4KKyAgICAgKgorICAgICAqIFJldHVy
bnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0
aGUgZXZlbnQuCisgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVy
LgorICAgICAqCisgICAgICovCisgICAgc2lnbmFsc1tQRVJNSVNTSU9OX1JFUVVFU1RdID0KKyAg
ICAgICAgZ19zaWduYWxfbmV3KCJwZXJtaXNzaW9uLXJlcXVlc3QiLAorICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZG
U0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcGVybWlzc2lvbl9yZXF1ZXN0KSwKKyAgICAgICAgICAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVs
YXRvciBkYXRhICovLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVB
Tl9fT0JKRUNUX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwg
LyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1BFUk1JU1NJT05fUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1BFUk1JU1NJT05fUkVRVUVTVF9UWVBFKTsKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3
Ojptb3VzZS10YXJnZXQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2Vi
VmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBAaGl0X3Rlc3RfcmVz
dWx0OiBhICNXZWJLaXRIaXRUZXN0UmVzdWx0CkBAIC04OTEsNiArOTMyLDEyIEBAIHZvaWQgd2Vi
a2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRQb2xpY3lEZWNpc2lvCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0RFQ0lE
RV9QT0xJQ1ldLCAwLCBkZWNpc2lvbiwgdHlwZSwgJnJldHVyblZhbHVlKTsKIH0KIAordm9pZCB3
ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSB0eXBlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbUEVSTUlTU0lPTl9SRVFVRVNUXSwgMCwgcmVxdWVzdCwgdHlw
ZSwgJnJldHVyblZhbHVlKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFu
Z2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLSGl0VGVzdFJlc3VsdFJlZiB3a0hpdFRlc3RS
ZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVycykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggZjVjMjFjNS4uZWE2NWJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
aW5kb3dQcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UG9saWN5RGVjaXNpb24uaD4KIAogR19C
RUdJTl9ERUNMUwpAQCAtOTAsNiArOTEsMTYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gV2ViS2l0UG9s
aWN5RGVjaXNpb25UeXBlOwogCiAvKioKKyAqIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZToK
KyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgdHlwZSBvZiBhIHBl
cm1pc3Npb24gcmVxdWVzdCBkdXJpbmcKKyAqICNXZWJLaXRXZWJWaWV3OjpwZXJtaXNzaW9uLXJl
cXVlc3QuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVT
VF9UWVBFX0RVTU1ZLCAvKiBUbyBiZSByZXBsYWNlZCBmb3Igc29tZSByZWFsIHRoaW5nLiAqLwor
fSBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGU7CisKKy8qKgogICogV2ViS2l0TG9hZEV2ZW50
OgogICogQFdFQktJVF9MT0FEX1NUQVJURUQ6IEEgbmV3IGxvYWQgcmVxdWVzdCBoYXMgYmVlbiBt
YWRlLgogICogTm8gZGF0YSBoYXMgYmVlbiByZWNlaXZlZCB5ZXQsIGVtcHR5IHN0cnVjdHVyZXMg
aGF2ZQpAQCAtMTQxLDYgKzE1Miw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAg
ICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAqZGVjaXNpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICB0
eXBlKTsKKyAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICpwZXJtaXNzaW9uX3Jl
cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdFR5cGUgdHlwZSk7CiAgICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJn
ZXRfY2hhbmdlZCkgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQg
ICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaAppbmRleCA3MGQ2ZDZkLi5hYzU3MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTQyLDYgKzQy
LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0
cmluZyYgbWVzc2FnZSk7CiBib29sIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7CiBXS1N0cmluZ1JlZiB3ZWJr
aXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgZGVmYXVsdFRleHQpOwordm9pZCB3ZWJraXRXZWJW
aWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdFR5cGUsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9u
VHlwZSwgV2ViS2l0UG9saWN5RGVjaXNpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFy
Z2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV0tIaXRUZXN0UmVzdWx0UmVmLCB1bnNpZ25lZCBt
b2RpZmllcnMpOwogdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3Kiwg
V0tGcmFtZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA5ZjA4NjYzLi4wZjkxOGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIxLDYgKzIxLDcgQEAKICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0VVJJUmVzcG9uc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdERvd25sb2FkLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CmluZGV4IDgyOWRlMWMuLmNhZjEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dApAQCAtNDgsNiArNDgsNyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUKIDxUSVRMRT5X
ZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKIFdlYktpdExvYWRFdmVudAorV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RUeXBlCiBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUKIAogPFNV
QlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KQEAgLTM1Nyw2ICszNTgsMjYgQEAgd2Via2l0X2Rv
d25sb2FkX2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0UGVy
bWlzc2lvblJlcXVlc3Q8L0ZJTEU+CitXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAord2Via2l0X3Bl
cm1pc3Npb25fcmVxdWVzdF9hbGxvdword2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55CisK
KzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0UGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VC
S0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0NM
QVNTCitXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0UGVybWlz
c2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8
L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248L0ZJTEU+
CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZAot
LSAKMS43LjcuNgoK
</data>
<flag name="commit-queue"
          id="142072"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137092</attachid>
            <date>2012-04-13 08:47:19 -0700</date>
            <delta_ts>2012-04-16 03:48:40 -0700</delta_ts>
            <desc>1. Add new &apos;permission-request&apos; signal to WebKitWebView</desc>
            <filename>0001-2012-04-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>20895</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxNDBlNGJiZWFkMGVjNGI1YThhMzBjZjAzOWNhM2ZiNDk1OTA1NmUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDEzIEFwciAyMDEyIDE1OjMwOjEzICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBl
cm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBBZGRlZCBuZXcgJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFs
IHRvIFdlYktpdFdlYlZpZXcsIHRvIGJlCiAgICAgICAgZmlyZWQgd2hlbiBXZWJLaXQgbmVlZHMg
Y29uZmlybWF0aW9uIGZyb20gdGhlIHVzZXIgb24gd2hldGhlciB0bwogICAgICAgIGFsbG93IG9y
IGRlbnkgY2VydGFpbiBvcGVyYXRpb25zLCBzdWNoIGFzIHNoYXJpbmcgdGhlIHVzZXIncwogICAg
ICAgIGxvY2F0aW9uIHdpdGggd2ViIHNpdGUgdGhyb3VnaCB0aGUgR2VvbG9jYXRpb24gQVBJLgoK
ICAgICAgICBOZXcgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCBwcm92aWRpbmcg
YWxsb3coKSBhbmQKICAgICAgICBkZW55KCkgb3BlcmF0aW9ucywgdG8gYmUgY2FsbGVkIG92ZXIg
dGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIGl0CiAgICAgICAgd2hlbiBlbWl0dGVkIGFsb25nIHdp
dGggdGhlIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KICAgICAgICAo
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZWZhdWx0X2luaXQpOgogICAgICAgICh3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KToKICAgICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9kZW55KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0Lmg6IEFkZGVkLgogICAgICAgIChfV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSk6
CiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgoKICAgICAgICBBZGRl
ZCB0aGUgbmV3IHNpZ25hbCB0byBXZWJLaXRXZWJWaWV3LCBwcm92aWRpbmcgYSBkZWZhdWx0IGhh
bmRsZXIKICAgICAgICB0aGF0IHdpbGwganVzdCBkZW55IHRoZSByZXF1ZXN0IHdoZW4gdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZC4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAod2Via2l0V2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0
KTogRGVmYXVsdCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IERlY2xhcmUgdGhlIG5ldyBzaWduYWwgYW5kIGNvbm5lY3QKICAgICAgICB0byB0aGUgZGVmYXVs
dCBoYW5kbGVyLgogICAgICAgICh3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KTog
SGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhCiAgICAgICAgbWFrZSBhIG5ldyBwZXJtaXNzaW9u
IHJlcXVlc3QgYW5kIGVtaXQgdGhlIG5ldyBzaWduYWwgc2lnbmFsLgogICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgogICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNz
KToKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IERl
Y2xhcmUgdGhlIGNyZWF0aW9uYWwKICAgICAgICBmdW5jdGlvbiB3ZWJraXRXZWJWaWV3TWFrZVBl
cm1pc3Npb25SZXF1ZXN0IGZvciBpbnRlcm5hbCB1c2Ugb25seS4KCiAgICAgICAgVXBkYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0OgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0MyArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHAgIHwgICA3OCArKysrKysrKysrKysr
KysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmgg
ICAgfCAgIDU5ICsrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDQ3ICsrKysrKysrKysrKwogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oICAgfCAgIDE0ICsrKysKIC4uLi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSArCiAuLi4v
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCAgICB8ICAgIDEgKwog
Li4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgfCAgIDIw
ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDI2NiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZDdlY2Y3NC4uYzkzZGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEy
LTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAorICAg
ICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24g
cmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwgdG8g
V2ViS2l0V2ViVmlldywgdG8gYmUKKyAgICAgICAgZmlyZWQgd2hlbiBXZWJLaXQgbmVlZHMgY29u
ZmlybWF0aW9uIGZyb20gdGhlIHVzZXIgb24gd2hldGhlciB0bworICAgICAgICBhbGxvdyBvciBk
ZW55IGNlcnRhaW4gb3BlcmF0aW9ucywgc3VjaCBhcyBzaGFyaW5nIHRoZSB1c2VyJ3MKKyAgICAg
ICAgbG9jYXRpb24gd2l0aCB3ZWIgc2l0ZSB0aHJvdWdoIHRoZSBHZW9sb2NhdGlvbiBBUEkuCisK
KyAgICAgICAgTmV3IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0IGludGVyZmFjZSwgcHJvdmlkaW5n
IGFsbG93KCkgYW5kCisgICAgICAgIGRlbnkoKSBvcGVyYXRpb25zLCB0byBiZSBjYWxsZWQgb3Zl
ciB0aGUgb2JqZWN0cyBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgd2hlbiBlbWl0dGVkIGFsb25n
IHdpdGggdGhlIG5ldyAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZWZhdWx0X2luaXQpOgorICAgICAgICAo
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyk6CisgICAgICAgICh3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2RlbnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFBlcm1pc3Npb25SZXF1
ZXN0SWZhY2UpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMuCisK
KyAgICAgICAgQWRkZWQgdGhlIG5ldyBzaWduYWwgdG8gV2ViS2l0V2ViVmlldywgcHJvdmlkaW5n
IGEgZGVmYXVsdCBoYW5kbGVyCisgICAgICAgIHRoYXQgd2lsbCBqdXN0IGRlbnkgdGhlIHJlcXVl
c3Qgd2hlbiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RGVjaWRl
UGVybWlzc2lvblJlcXVlc3QpOiBEZWZhdWx0IGhhbmRsZXIuCisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6IERlY2xhcmUgdGhlIG5ldyBzaWduYWwgYW5kIGNvbm5lY3QKKyAg
ICAgICAgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdNYWtl
UGVybWlzc2lvblJlcXVlc3QpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEKKyAgICAgICAg
bWFrZSBhIG5ldyBwZXJtaXNzaW9uIHJlcXVlc3QgYW5kIGVtaXQgdGhlIG5ldyBzaWduYWwgc2ln
bmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmg6IERlY2xhcmUgdGhlIGNyZWF0aW9uYWwKKyAgICAgICAgZnVu
Y3Rpb24gd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdCBmb3IgaW50ZXJuYWwgdXNl
IG9ubHkuCisKKyAgICAgICAgVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorCisyMDEy
LTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBnZW9sb2NhdGlvbiBwcm92aWRlciBmb3IgdGhlIEdU
SyBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
Mzg3NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDZkZGI4NTguLjQ0ZmJiMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC05NSw2ICs5NSw3IEBAIGxpYndlYmtpdDJndGtpbmNsdWRlX0hFQURF
UlMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbi5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1p
c3Npb25SZXF1ZXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvbi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24uaCBcCkBAIC01NzcsNiArNTc4LDggQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5RGVjaXNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZjcyMWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QuaCIKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAorICogQFNo
b3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdAorICogQFRpdGxlOiBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFRo
ZXJlIGFyZSBzaXR1YXRpb25zIHdoZXJlIGEgd2ViIGJyb3dzZXIgd291bGQgbmVlZCB0byBhc2sg
dGhlIHVzZXIKKyAqIGZvciBwZXJtaXNzaW9uIG9uIGNlcnRhaW4gdHlwZSBvZiBvcGVyYXRpb25z
LCBzdWNoIGFzIHN3aXRjaGluZyB0bworICogZnVsbCBzY3JlZW4gbW9kZSBvciByZXBvcnRpbmcg
dGhlIHVzZXIncyBsb2NhdGlvbiB0aHJvdWdoIHRoZQorICogc3RhbmRhcmQgR2VvbG9jYXRpb24g
QVBJLiBJbiB0aG9zZSBjYXNlcywgV2ViS2l0IHdpbGwgZW1pdCBhCisgKiAjV2ViS2l0V2ViVmlj
ZTo6cGVybWlzc2lvbi1yZXF1ZXN0IHNpZ25hbCB3aXRoIGEKKyAqICNXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdCBvYmplY3QgYXR0YWNoZWQgdG8gaXQuCisgKgorICogSWYgdGhlIHNpZ25hbCBoYW5k
bGVyIGRvZXMgbm90aGluZywgV2ViS2l0IHdpbGwgYWN0IGFzIGlmCisgKiB3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2RlbnkoKSB3YXMgY2FsbGVkIGFzIHNvb24gYXMgc2lnbmFsCisgKiBoYW5k
bGluZyBjb21wbGV0ZXMuIFRvIGhhbmRsZSBhIHBlcm1pc3Npb24gcmVxdWVzdCBpbiBhbgorICog
YXN5bmNocm9ub3VzIHdheSwgc2ltcGx5IGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9m
IHRoZQorICogI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0IG9iamVjdC4KKyAqLworCit0eXBlZGVm
IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJbnRl
cmZhY2U7CitHX0RFRklORV9JTlRFUkZBQ0UoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVmYXVsdF9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
SWZhY2UqKQoreworfQorCisvKioKKyAqIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3c6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBBbGxvdyB0
aGUgYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIHJlcXVlc3QuCisgKi8KK3ZvaWQgd2Via2l0
X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1Qo
cmVxdWVzdCkpOworCisgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZhY2UgPSBX
RUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9JRkFDRShyZXF1ZXN0KTsKKyAgICBpZiAoaWZh
Y2UtPmFsbG93KQorICAgICAgICBpZmFjZS0+YWxsb3cocmVxdWVzdCk7Cit9CisKKy8qKgorICog
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55OgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFBl
cm1pc3Npb25SZXF1ZXN0CisgKgorICogRGVueSB0aGUgYWN0aW9uIHdoaWNoIHRyaWdnZXJkIHRo
aXMgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFBlcm1p
c3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlID0gV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRf
SUZBQ0UocmVxdWVzdCk7CisgICAgaWYgKGlmYWNlLT5kZW55KQorICAgICAgICBpZmFjZS0+ZGVu
eShyZXF1ZXN0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjEwOTYxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9f
V0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vy
cm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIK
KyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgKHdlYmtpdF9wZXJtaXNz
aW9uX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVT
VChvYmopICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QpKQorI2Rl
ZmluZSBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSkpCisjZGVmaW5lIFdFQktJVF9JU19QRVJNSVNTSU9O
X1JFUVVFU1Qob2JqKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUX0dFVF9JRkFDRShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0lOVEVSRkFDRSgo
b2JqKSwgV0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdElmYWNlKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0IFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0SWZhY2UgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZTsKKworc3RydWN0IF9XZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlIHsKKyAgICBHVHlwZUludGVyZmFjZSBwYXJlbnRfaW50
ZXJmYWNlOworCisgICAgdm9pZCAoKiBhbGxvdykgKFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKyAgICB2b2lkICgqIGRlbnkpICAoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJl
cXVlc3QpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Blcm1pc3Npb25f
cmVxdWVzdF9hbGxvdyAgICAoV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueSAgICAgKFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDdhNmMwMWQuLjhjODQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGVudW0gewog
ICAgIFNDUklQVF9ESUFMT0csCiAKICAgICBERUNJREVfUE9MSUNZLAorICAgIFBFUk1JU1NJT05f
UkVRVUVTVCwKIAogICAgIE1PVVNFX1RBUkdFVF9DSEFOR0VELAogCkBAIC0xOTAsNiArMTkxLDEy
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRQb2xpY3lEZWNpc2lvbioKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIGRlY2lzaW9uLCBXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdFR5cGUpCit7CisgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KGRlY2lz
aW9uKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQgem9vbVRleHRPbmx5Q2hh
bmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSSh3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKTsKQEAgLTMxMyw2ICsz
MjAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZSA9IHdlYmtp
dFdlYlZpZXdDcmVhdGU7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfZGlhbG9nID0gd2Via2l0
V2ViVmlld1NjcmlwdERpYWxvZzsKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3
ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OworICAgIHdlYlZpZXdDbGFzcy0+cGVybWlzc2lvbl9y
ZXF1ZXN0ID0gd2Via2l0V2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0OwogCiAgICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQ
cml2YXRlKSk7CiAKQEAgLTYzOCw2ICs2NDYsMzkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT05fVFlQRSk7CiAKICAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpwZXJtaXNzaW9uLXJlcXVlc3Q6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKKyAgICAgKiBA
cmVxdWVzdF90eXBlOiBhICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGUgZGVub3RpbmcgdGhl
IHR5cGUgb2YgQHJlcXVlc3QKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQg
d2hlbiBXZWJLaXQgaXMgcmVxdWVzdGluZyB0aGUgY2xpZW50IHRvCisgICAgICogZGVjaWRlIGFi
b3V0IGEgcGVybWlzc2lvbiByZXF1ZXN0LCBzdWNoIGFzIGFsbG93aW5nIHRoZSBicm93c2VyCisg
ICAgICogc3dpdGNoIHRvIGZ1bGxzY3JlZW4gbW9kZSwgc2hhcmluZyBpdHMgbG9jYXRpb24gb3Ig
c2ltaWxhci4KKyAgICAgKgorICAgICAqIEl0IGlzIHBvc3NpYmxlIHRvIGhhbmRsZSBwZXJtaXNz
aW9uIHJlcXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieQorICAgICAqIHNpbXBseSBjYWxsaW5nIGdf
b2JqZWN0X3JlZigpIG9uIHRoZSBAcmVxdWVzdCBhcmd1bWVudCBhbmQKKyAgICAgKiByZXR1cm5p
bmcgJVRSVUUgdG8gYmxvY2sgdGhlIGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIuCisgICAgICoKKyAg
ICAgKiBJZiB0aGUgbGFzdCByZWZlcmVuY2UgaXMgcmVtb3ZlZCBvbiBhICNXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdAorICAgICAqIGFuZCBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlLCB3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoKQorICAgICAqIHdpbGwgYmUgdGhlIGRlZmF1bHQgZGVj
aXNpb24uIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwKKyAgICAgKiBzaW1wbHkgY2Fs
bCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkoKS4KKyAgICAgKgorICAgICAqIFJldHVy
bnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0
aGUgZXZlbnQuCisgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVy
LgorICAgICAqCisgICAgICovCisgICAgc2lnbmFsc1tQRVJNSVNTSU9OX1JFUVVFU1RdID0KKyAg
ICAgICAgZ19zaWduYWxfbmV3KCJwZXJtaXNzaW9uLXJlcXVlc3QiLAorICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZG
U0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcGVybWlzc2lvbl9yZXF1ZXN0KSwKKyAgICAgICAgICAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVs
YXRvciBkYXRhICovLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVB
Tl9fT0JKRUNUX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwg
LyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1BFUk1JU1NJT05fUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1BFUk1JU1NJT05fUkVRVUVTVF9UWVBFKTsKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3
Ojptb3VzZS10YXJnZXQtY2hhbmdlZDoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2Vi
VmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBAaGl0X3Rlc3RfcmVz
dWx0OiBhICNXZWJLaXRIaXRUZXN0UmVzdWx0CkBAIC04OTEsNiArOTMyLDEyIEBAIHZvaWQgd2Vi
a2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRQb2xpY3lEZWNpc2lvCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0RFQ0lE
RV9QT0xJQ1ldLCAwLCBkZWNpc2lvbiwgdHlwZSwgJnJldHVyblZhbHVlKTsKIH0KIAordm9pZCB3
ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSB0eXBlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbUEVSTUlTU0lPTl9SRVFVRVNUXSwgMCwgcmVxdWVzdCwgdHlw
ZSwgJnJldHVyblZhbHVlKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFu
Z2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLSGl0VGVzdFJlc3VsdFJlZiB3a0hpdFRlc3RS
ZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVycykKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggZjVjMjFjNS4uZWE2NWJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
aW5kb3dQcm9wZXJ0aWVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UG9saWN5RGVjaXNpb24uaD4KIAogR19C
RUdJTl9ERUNMUwpAQCAtOTAsNiArOTEsMTYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gV2ViS2l0UG9s
aWN5RGVjaXNpb25UeXBlOwogCiAvKioKKyAqIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZToK
KyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgdHlwZSBvZiBhIHBl
cm1pc3Npb24gcmVxdWVzdCBkdXJpbmcKKyAqICNXZWJLaXRXZWJWaWV3OjpwZXJtaXNzaW9uLXJl
cXVlc3QuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVT
VF9UWVBFX0RVTU1ZLCAvKiBUbyBiZSByZXBsYWNlZCBmb3Igc29tZSByZWFsIHRoaW5nLiAqLwor
fSBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdFR5cGU7CisKKy8qKgogICogV2ViS2l0TG9hZEV2ZW50
OgogICogQFdFQktJVF9MT0FEX1NUQVJURUQ6IEEgbmV3IGxvYWQgcmVxdWVzdCBoYXMgYmVlbiBt
YWRlLgogICogTm8gZGF0YSBoYXMgYmVlbiByZWNlaXZlZCB5ZXQsIGVtcHR5IHN0cnVjdHVyZXMg
aGF2ZQpAQCAtMTQxLDYgKzE1Miw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAg
ICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAqZGVjaXNpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICB0
eXBlKTsKKyAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICpwZXJtaXNzaW9uX3Jl
cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdFR5cGUgdHlwZSk7CiAgICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJn
ZXRfY2hhbmdlZCkgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQg
ICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaAppbmRleCA3MGQ2ZDZkLi5hYzU3MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTQyLDYgKzQy
LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0
cmluZyYgbWVzc2FnZSk7CiBib29sIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShX
ZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7CiBXS1N0cmluZ1JlZiB3ZWJr
aXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgZGVmYXVsdFRleHQpOwordm9pZCB3ZWJraXRXZWJW
aWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdFR5cGUsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9u
VHlwZSwgV2ViS2l0UG9saWN5RGVjaXNpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFy
Z2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV0tIaXRUZXN0UmVzdWx0UmVmLCB1bnNpZ25lZCBt
b2RpZmllcnMpOwogdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3Kiwg
V0tGcmFtZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA5ZjA4NjYzLi4wZjkxOGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIxLDYgKzIxLDcgQEAKICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0VVJJUmVzcG9uc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdERvd25sb2FkLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CmluZGV4IDgyOWRlMWMuLjc4MjNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dApAQCAtNDgsNiArNDgsNyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUKIDxUSVRMRT5X
ZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKIFdlYktpdExvYWRFdmVudAorV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RUeXBlCiBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUKIAogPFNV
QlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KQEAgLTM1Nyw2ICszNTgsMjUgQEAgd2Via2l0X2Rv
d25sb2FkX2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0UGVy
bWlzc2lvblJlcXVlc3Q8L0ZJTEU+CitXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAord2Via2l0X3Bl
cm1pc3Npb25fcmVxdWVzdF9hbGxvdword2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55CisK
KzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0UGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VC
S0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUCitX
RUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFV
RVNUCitXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9JRkFDRQorCis8U1VCU0VDVElPTiBQ
cml2YXRlPgorV2ViS2l0UGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0
UG9saWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl9kb3dubG9hZAotLSAKMS43LjcuNgoK
</data>
<flag name="commit-queue"
          id="142176"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137310</attachid>
            <date>2012-04-16 03:48:40 -0700</date>
            <delta_ts>2012-04-20 10:38:18 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-04-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>26630</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxOTIyNTVlNDEwN2E0NTc4ODc3Y2EyN2E4OTllMzljOWVhMGM1MTQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDEzIEFwciAyMDEyIDE1OjQwOjE4ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wNC0xMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdW1dLMl0gSW1wbGVtZW50IEFQSSBmb3IgR2VvbG9jYXRpb24gcGVybWlz
c2lvbiByZXF1ZXN0cyBpbiB0aGUgR1RLIHBvcnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgogICAgICAgIEFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZv
ciBzdXBwb3J0aW5nIHRoZQogICAgICAgIEdlb2xvY2F0aW9uIEFQSSBpbiBXZWJLaXQyR1RLKy4K
CiAgICAgICAgTmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MsIGlt
cGxlbWVudGluZyB0aGUKICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCBpbnRlcmZhY2Us
IHRvIGVuYWJsaW5nIGNsaWVudCBhcHBsaWNhdGlvbnMKICAgICAgICB0byBhbGxvdyBvciBkZW55
IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCgogICAgICAgICogR05VbWFrZWZpbGUu
YW06IEFkZGVkIG5ldyBmaWxlcy4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KICAgICAgICAoX1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKICAgICAgICAod2Via2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKICAgICAgICAod2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdERlbnkpOgogICAgICAgICh3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0
X2ludGVyZmFjZV9pbml0KToKICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25f
cmVxdWVzdF9pbml0KToKICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEZpbmFsaXplKToKICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVz
dF9jbGFzc19pbml0KToKICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dENyZWF0ZSk6CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgogICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCk6CiAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2xhc3MpOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCgogICAgICAgIEluY2x1ZGUgV0tHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0ZS5oLCBzbyB3ZQogICAg
ICAgIGNhbiB1c2UgaXQgZnJvbSB0aGUgbmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QgY2xhc3MuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5o
OiBBZGRlZCBuZXcgaW5jbHVkZS4KCiAgICAgICAgSW1wbGVtZW50IGdlb2xvY2F0aW9uIHBlcm1p
c3Npb24gcmVxdWVzdHMgaW4gdGhlIFVJIGNsaWVudC4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6CiAgICAgICAgKGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpOiBDcmVhdGUgYSBuZXcKICAgICAgICBpbnN0YW5jZSBvZiB0
aGUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcyBhbmQgY2FsbAogICAg
ICAgIHRvIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoKS4KICAgICAgICAoYXR0
YWNoVUlDbGllbnRUb1ZpZXcpOiBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZv
cgogICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCiAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgZWxlbWVu
dCB0bwogICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSBlbnVtZXJhdGlvbiBmb3Ig
Z2VvbG9jYXRpb24gcmVxdWVzdHMuCgogICAgICAgIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cy4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDoKCjIwMTItMDQtMTMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29t
PgoKICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1p
c3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKICAgICAgICBNYWtlIG1pbmlicm93c2VyIGNvbm5lY3QgdG8gdGhlIG5ldyAncGVy
bWlzc2lvbiByZXF1ZXN0cycgc2lnbmFsCiAgICAgICAgdG8gYWxsb3cgdXNlcnMgaGFuZGxlIHRo
ZSBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKICAgICAgICAqIE1pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmM6CiAgICAgICAgKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0Nh
bGxiYWNrKTogQ2FsbGJhY2sgZm9yIHRoZSBkaWFsb2cgYXNraW5nCiAgICAgICAgdGhlIHVzZXIg
Zm9yIGFsbG93aW5nIG9yIG5vdCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgogICAg
ICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOiBMYXVuY2ggYSBkaWFsb2cgdG8g
YXNrIHRoZSB1c2VyCiAgICAgICAgd2hldGhlciB0byBhbGxvdyBvciBkZW55IGdlb2xvY2F0aW9u
IHBlcm1pc3Npb24gcmVxdWVzdHMuCiAgICAgICAgKGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZCk6
IENvbm5lY3QgdG8gJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2lnbmFsLgotLS0KIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MCArKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDQgKwogLi4uL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAg
fCAgMTAyICsrKysrKysrKysrKysrKysrKysrCiAuLi4vQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggICB8ICAgNTkgKysrKysrKysrKysKIC4uLi9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICAgIHwgICAyOCArKysrKysKIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCAgIHwgICAgMSArCiAu
Li4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgICB8ICAgMTAg
KystCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCAgICB8
ICAgIDEgKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQgfCAgIDE4ICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aCAgICAgICAgIHwgICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTcgKysrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYyAgICAgICAgICAgICAgfCAgIDQxICsrKysrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCAz
MzEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDczZTcxYi4uZDA1N2I1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1IEBACiAyMDEyLTA0LTEzICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXVtXSzJdIEltcGxl
bWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBw
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBzdXBwb3J0aW5nIHRoZQorICAg
ICAgICBHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdUSysuCisKKyAgICAgICAgTmV3IFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MsIGltcGxlbWVudGluZyB0aGUKKyAg
ICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCB0byBlbmFibGluZyBjbGll
bnQgYXBwbGljYXRpb25zCisgICAgICAgIHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVy
bWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcg
ZmlsZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0RGVueSk6CisgICAgICAgICh3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFj
ZV9pbml0KToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3Rf
aW5pdCk6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxp
emUpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCk6CisgICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dENsYXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oOiBBZGRlZC4KKworICAgICAgICBJbmNsdWRlIFdLR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIFdlYktpdFByaXZhdGUuaCwgc28gd2UKKyAg
ICAgICAgY2FuIHVzZSBpdCBmcm9tIHRoZSBuZXcgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCBjbGFzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZh
dGUuaDogQWRkZWQgbmV3IGluY2x1ZGUuCisKKyAgICAgICAgSW1wbGVtZW50IGdlb2xvY2F0aW9u
IHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIFVJIGNsaWVudC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgaW5z
dGFuY2Ugb2YgdGhlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MgYW5k
IGNhbGwKKyAgICAgICAgdG8gd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdCgpLgor
ICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOiBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9u
IGZ1bmN0aW9uIGZvcgorICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDog
QWRkIG5ldyBlbGVtZW50IHRvCisgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSBl
bnVtZXJhdGlvbiBmb3IgZ2VvbG9jYXRpb24gcmVxdWVzdHMuCisKKyAgICAgICAgVXBkYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0OgorCisyMDEyLTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBB
UEkgZm9yIGdlbmVyaWMgcGVybWlzc2lvbiByZXF1ZXN0cwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwMTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRl
eCA0NGZiYjJiLi4wYzBhYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtOTQsNiArOTQsNyBA
QCBsaWJ3ZWJraXQyZ3RraW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RmluZENvbnRyb2xsZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCBcCiAJ
JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmggXApA
QCAtNTY1LDYgKzU2Niw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxsc2NyZWVuQ2xpZW50LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVsbHNjcmVlbkNsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0UHJp
dmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1NDM2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Np
b25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlw
dGlvbjogQSBwZXJtaXNzaW9uIHJlcXVlc3QgZm9yIHNoYXJpbmcgdXNlcidzIGxvY2F0aW9uCisg
KiBAVGl0bGU6IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxz
bzogI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgcmVwcmVzZW50cyBhIHJlcXVlc3QgZm9yCisg
KiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgcHJvdmlkZSB0aGUg
dXNlcidzCisgKiBsb2NhdGlvbiB0byBhIHdlYnNpdGUgd2hlbiByZXF1ZXN0ZWQgdGhyb3VnaHQg
dGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAqLworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25f
cmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CitH
X0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LCB3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAor
ICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9UWVBF
X1BFUk1JU1NJT05fUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KSkKKwor
c3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7CisgICAg
V0tSZXRhaW5QdHI8V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmPiByZXF1ZXN0Owor
ICAgIGJvb2wgbWFkZURlY2lzaW9uOworfTsKKworc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVF
U1QocmVxdWVzdCktPnByaXY7CisgICAgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxs
b3cocHJpdi0+cmVxdWVzdC5nZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsK
K30KKworc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnko
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwor
ICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKyAgICBX
S0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KHByaXYtPnJlcXVlc3QuZ2V0KCkpOwor
ICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9w
ZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJ
ZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2UtPmFsbG93ID0gd2Via2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdERlbnk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlv
bl9wZXJtaXNzaW9uX3JlcXVlc3RfaW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIHJlcXVlc3QtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFV
RVNULCBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk7CisgICAgbmV3
IChyZXF1ZXN0LT5wcml2KSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZSgpOworICAgIHJlcXVlc3QtPnByaXYtPm1hZGVEZWNpc2lvbiA9IGZhbHNlOworfQorCitzdGF0
aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUoR09iamVj
dCogb2JqZWN0KQoreworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3Qp
LT5wcml2OworCisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lvbiBoYXMg
YmVlbiBtYWRlIGlzIGRlbnlpbmcgdGhlIHJlcXVlc3QuCisgICAgaWYgKCFwcml2LT5tYWRlRGVj
aXNpb24pCisgICAgICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkocHJpdi0+
cmVxdWVzdC5nZXQoKSk7CisKKyAgICBwcml2LT5+V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZ2VvbG9jYXRpb25f
cGVybWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3Nf
aW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQorewor
ICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Cisg
ICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdEZpbmFsaXplOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9m
KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKSk7Cit9CisKK1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDcmVhdGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3Qp
Cit7CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwg
TlVMTCkpOworICAgIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3Qg
PSByZXF1ZXN0OworICAgIHJldHVybiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAzM2I2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25f
cGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElP
Tl9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNU
LCBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9O
X1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJ
T05fUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2Rl
ZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QgICAgICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiov
CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9
OworCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7Cisg
ICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2
ZGU2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEs
MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisKK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVm
KTsKKworI2VuZGlmIC8vIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aAppbmRleCA0YjdlOWFkLi4xZWZlODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Rvd25sb2FkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ZpbmRPcHRpb25zLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZmMGUxMWMu
LjY5ODNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIwLDEyICsyMCwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEzNiw2ICsxMzgsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCiAgICAg
d2Via2l0V2ViVmlld1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmll
d1dpZGdldCgpKSwgZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0
eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVm
KHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkpOworICAg
IHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVu
dEluZm8pLCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKGdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QuZ2V0KCkpKTsKK30KKwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0x
NzAsNyArMTc4LDcgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCiAgICAgICAgIDAsIC8vIGV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YQogICAgICAgICAwLCAvLyBydW5PcGVuUGFuZWwKLSAgICAgICAgMCwg
Ly8gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LAogICAgICAgICAwLCAv
LyBoZWFkZXJIZWlnaHQKICAgICAgICAgMCwgLy8gZm9vdGVySGVpZ2h0CiAgICAgICAgIDAsIC8v
IGRyYXdIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDBmOTE4ZjMuLjVlODkxZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIyLDYgKzIyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0V2luZG93UHJvcGVydGllcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0RG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMzI5Y2VmNS4uNWViYzVhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CkBAIC0zNzUsNiArMzc1LDI0IEBAIHdlYmtpdF9wZXJtaXNzaW9u
X3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PC9GSUxFPgorV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdAorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lP
Tl9SRVFVRVNUCitXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRf
SVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfR0VPTE9DQVRJT05fUEVS
TUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9S
RVFVRVNUX0NMQVNTCitXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9D
TEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0
X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRQb2xpY3lEZWNpc2lv
bjwvRklMRT4KIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rv
d25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXgg
YjVkODI4Yi4uYTk0NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RW51bVR5
cGVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEhpdFRl
c3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWZhODA2MC4uZDUyMjUw
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEyLTA0LTEzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xv
Y2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgbWluaWJyb3dzZXIgY29ubmVj
dCB0byB0aGUgbmV3ICdwZXJtaXNzaW9uIHJlcXVlc3RzJyBzaWduYWwKKyAgICAgICAgdG8gYWxs
b3cgdXNlcnMgaGFuZGxlIHRoZSBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKGdlb2xv
Y2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogQ2FsbGJhY2sgZm9yIHRoZSBkaWFsb2cgYXNr
aW5nCisgICAgICAgIHRoZSB1c2VyIGZvciBhbGxvd2luZyBvciBub3QgZ2VvbG9jYXRpb24gcGVy
bWlzc2lvbiByZXF1ZXN0cy4KKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVz
dCk6IExhdW5jaCBhIGRpYWxvZyB0byBhc2sgdGhlIHVzZXIKKyAgICAgICAgd2hldGhlciB0byBh
bGxvdyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisgICAgICAgIChi
cm93c2VyV2luZG93Q29uc3RydWN0ZWQpOiBDb25uZWN0IHRvICdwZXJtaXNzaW9uLXJlcXVlc3Qn
IHNpZ25hbC4KKwogMjAxMi0wNC0xMSAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxA
bm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBNYW5hZ2UgZ3JhcGhpY3MgYnVmZmVycyBp
biB0aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4
IDVmZTk4NGEuLjhjZTI5MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpA
QCAtMTk5LDYgKzE5OSwyMSBAQCBzdGF0aWMgdm9pZCBiYWNrRm9yd2FkbGlzdENoYW5nZWQoV2Vi
S2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCwgV2ViS2l0QgogICAgIGJyb3dzZXJX
aW5kb3dVcGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyh3aW5kb3csIGJhY2tGb3J3YWRsaXN0KTsKIH0K
IAorc3RhdGljIHZvaWQgZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2soR3RrRGlhbG9n
KiBkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9BQ0NF
UFQ6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfZGVueShyZXF1ZXN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CisgICAgZ19vYmplY3RfdW5yZWYocmVx
dWVzdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJW
aWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdU
S19XSURHRVQod2luZG93KSk7CkBAIC0yNjMsNiArMjc4LDMxIEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURl
Y2lzaW9uCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVj
aWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QgKnJlcXVlc3QsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAo
IVdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKworICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX2RpYWxvZ19u
ZXdfd2l0aF9idXR0b25zKCJHZW9sb2NhdGlvbiByZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfV0lORE9XKHdpbmRvdyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJ
QUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfT0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1JF
U1BPTlNFX0FDQ0VQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9SRUpFQ1QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBH
dGtXaWRnZXQgKmNvbnRlbnRBcmVhID0gZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKEdUS19E
SUFMT0coZGlhbG9nKSk7CisgICAgR3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcoIkFs
bG93IGdlb2xvY2F0aW9uIHJlcXVlc3Q/Iik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goY29udGVudEFyZWEpLCBsYWJlbCwgVFJVRSwgVFJVRSwgNik7CisgICAgZ3RrX3dpZGdldF9z
aG93KGxhYmVsKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBH
X0NBTExCQUNLKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKSwgZ19vYmplY3RfcmVm
KHJlcXVlc3QpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHJldHVybiBU
UlVFOworfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdFRlc3RSZXN1bHQsIGd1aW50
IG1vdXNlTW9kaWZpZXJzLCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgaWYgKCF3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSkgewpAQCAt
NDIwLDYgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2Jq
ZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAiY3Jl
YXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q3JlYXRlKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdpbmRvdy0+d2ViVmlldywgImxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyh3ZWJWaWV3
TG9hZEZhaWxlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZp
ZXcsICJkZWNpZGUtcG9saWN5IiwgR19DQUxMQkFDSyh3ZWJWaWV3RGVjaWRlUG9saWN5KSwgd2lu
ZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgInBlcm1pc3Npb24t
cmVxdWVzdCIsIEdfQ0FMTEJBQ0sod2ViVmlld0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KSwgd2lu
ZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgIm1vdXNlLXRhcmdl
dC1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKSwgd2luZG93
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgIm5vdGlmeTo6em9vbS1s
ZXZlbCIsIEdfQ0FMTEJBQ0sod2ViVmlld1pvb21MZXZlbENoYW5nZWQpLCB3aW5kb3cpOwogCi0t
IAoxLjcuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138117</attachid>
            <date>2012-04-20 10:38:18 -0700</date>
            <delta_ts>2012-05-28 02:55:16 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0001-GTK-WK2-Implement-API-for-Geolocation-permission-req.patch</filename>
            <type>text/plain</type>
            <size>30595</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3MjVkNmM5ZWM1OTZmZjQ4MWJkMTJkNGFhMDQxYzE0MzNlNGEzMjJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDIwIEFwciAyMDEyIDE3OjAxOjAwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJl
cXVlc3RzCiBpbiB0aGUgR1RLIHBvcnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mzg3OQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViS2l0
MjoKCkFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBzdXBwb3J0aW5n
IHRoZQpHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdUSysuCgpOZXcgV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcywgaW1wbGVtZW50aW5nIHRoZQpXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdCBpbnRlcmZhY2UsIHRvIGVuYWJsaW5nIGNsaWVudCBhcHBsaWNhdGlvbnMKdG8g
YWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKKiBHTlVtYWtl
ZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKF9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0QWxsb3cpOgood2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkpOgood2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdCk6Cih3ZWJraXRfZ2VvbG9jYXRp
b25fcGVybWlzc2lvbl9yZXF1ZXN0X2luaXQpOgood2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEZpbmFsaXplKToKKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToK
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6
IEFkZGVkLgooX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgooX1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyk6CiogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCgpJbmNsdWRl
IFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIFdlYktpdFByaXZhdGUuaCwgc28g
d2UKY2FuIHVzZSBpdCBmcm9tIHRoZSBuZXcgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCBjbGFzcy4KCiogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBu
ZXcgaW5jbHVkZS4KCkltcGxlbWVudCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzIGlu
IHRoZSBVSSBjbGllbnQuCgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDoK
KGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBDcmVhdGUgYSBu
ZXcKaW5zdGFuY2Ugb2YgdGhlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xh
c3MgYW5kIGNhbGwKdG8gd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdCgpLgooYXR0
YWNoVUlDbGllbnRUb1ZpZXcpOiBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZv
cgpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LgoqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkIG5ldyBlbGVtZW50IHRvCldlYktpdFBlcm1p
c3Npb25SZXF1ZXN0VHlwZSBlbnVtZXJhdGlvbiBmb3IgZ2VvbG9jYXRpb24gcmVxdWVzdHMuCiog
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBBZGRlZCBoZWFkZXIgZmlsZSBmb3IKV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAoKTmV3IHVuaXQgdGVzdHMgdG8gdGVzdCBhbGxv
d2luZyBhbmQgZGVueWluZyBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKKiBVSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6Cih0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1
ZXN0cyk6IE5ldyB0ZXN0IHRoYXQgbG9hZHMgYSBzaW1wbGUgSFRNTAp3aXRoIEphdmFTY3JpcHQg
Y29kZSByZXF1ZXN0aW5nIHRoZSBjdXJyZW50IGxvY2F0aW9uLgooYmVmb3JlQWxsKTogQWRkZWQg
bmV3IHRlc3QuCgpVcGRhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMuCgoqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CiogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKClRvb2xzOgoKTWFrZSBtaW5pYnJvd3NlciBjb25uZWN0
IHRvIHRoZSBuZXcgJ3Blcm1pc3Npb24gcmVxdWVzdHMnIHNpZ25hbAp0byBhbGxvdyB1c2VycyBo
YW5kbGUgdGhlIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCgoqIE1pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmM6CihnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6
IENhbGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2luZwp0aGUgdXNlciBmb3IgYWxsb3dpbmcgb3Ig
bm90IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCih3ZWJWaWV3RGVjaWRlUGVybWlz
c2lvblJlcXVlc3QpOiBMYXVuY2ggYSBkaWFsb2cgdG8gYXNrIHRoZSB1c2VyCndoZXRoZXIgdG8g
YWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgooYnJvd3Nlcldp
bmRvd0NvbnN0cnVjdGVkKTogQ29ubmVjdCB0byAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwu
Ci0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDU5ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKwogLi4uL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5jcHAgfCAgMTEwICsrKysrKysrKysrKysrKysrKysrCiAuLi4vQVBJL2d0
ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggICB8ICAgNTkgKysrKysrKysr
KysKIC4uLi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oICAgIHwg
ICAyOCArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0
ZS5oICAgfCAgICAxICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcCAgIHwgICAxMCArKy0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCB8ICAgMTggKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8ICAgMzQgKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggICAgICAgICB8ICAgIDEgKwogVG9vbHMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKwogVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDM0ICsrKysr
KwogMTMgZmlsZXMgY2hhbmdlZCwgMzc2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGNiNTI4ZTIuLjg1OGQ5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2NCBAQAogMjAx
Mi0wNC0yMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKKyAg
ICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNzaW9u
IHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyBraW5kIG9mIHBlcm1pc3Npb24gcmVxdWVzdCBm
b3Igc3VwcG9ydGluZyB0aGUKKyAgICAgICAgR2VvbG9jYXRpb24gQVBJIGluIFdlYktpdDJHVEsr
LgorCisgICAgICAgIE5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNz
LCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0IGludGVy
ZmFjZSwgdG8gZW5hYmxpbmcgY2xpZW50IGFwcGxpY2F0aW9ucworICAgICAgICB0byBhbGxvdyBv
ciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3cpOgorICAgICAgICAod2Via2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkpOgorICAgICAgICAod2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRp
b25fcGVybWlzc2lvbl9yZXF1ZXN0X2luaXQpOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9w
ZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisK
KyAgICAgICAgSW5jbHVkZSBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBXZWJL
aXRQcml2YXRlLmgsIHNvIHdlCisgICAgICAgIGNhbiB1c2UgaXQgZnJvbSB0aGUgbmV3IFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZGVkIG5ldyBpbmNsdWRlLgorCisgICAgICAg
IEltcGxlbWVudCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRoZSBVSSBjbGll
bnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6Cisg
ICAgICAgIChkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogQ3Jl
YXRlIGEgbmV3CisgICAgICAgIGluc3RhbmNlIG9mIHRoZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0IGNsYXNzIGFuZCBjYWxsCisgICAgICAgIHRvIHdlYmtpdFdlYlZpZXdNYWtl
UGVybWlzc2lvblJlcXVlc3QoKS4KKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KTogUHJv
dmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IKKyAgICAgICAgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgZWxlbWVudCB0bworICAgICAgICBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdFR5cGUgZW51bWVyYXRpb24gZm9yIGdlb2xvY2F0aW9uIHJlcXVlc3Rz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDogQWRkZWQgaGVhZGVyIGZp
bGUgZm9yCisgICAgICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKworICAg
ICAgICBOZXcgdW5pdCB0ZXN0cyB0byB0ZXN0IGFsbG93aW5nIGFuZCBkZW55aW5nIHBlcm1pc3Np
b24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk6
IE5ldyB0ZXN0IHRoYXQgbG9hZHMgYSBzaW1wbGUgSFRNTAorICAgICAgICB3aXRoIEphdmFTY3Jp
cHQgY29kZSByZXF1ZXN0aW5nIHRoZSBjdXJyZW50IGxvY2F0aW9uLgorICAgICAgICAoYmVmb3Jl
QWxsKTogQWRkZWQgbmV3IHRlc3QuCisKKyAgICAgICAgVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0OgorCisyMDEyLTA0LTIwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KKwogICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIGdlbmVyaWMg
cGVybWlzc2lvbiByZXF1ZXN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQwMTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA4MjNlNWU1Li4wMTQ5
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtOTUsNiArOTUsNyBAQCBsaWJ3ZWJraXQyZ3Rr
aW5jbHVkZV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RmluZENvbnRyb2xsZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaCBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmggXApAQCAtNDk5LDYgKzUwMCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAgXApA
QCAtNTY2LDYgKzU2OCw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxsc2NyZWVuQ2xpZW50LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVsbHNjcmVlbkNsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0UHJp
dmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYzZmFhMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Np
b25SZXF1ZXN0LmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBm
b3Igc2hhcmluZyB1c2VyJ3MgbG9jYXRpb24KKyAqIEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qs
ICNXZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRo
ZXIgV2ViS2l0IHNob3VsZCBwcm92aWRlIHRoZSB1c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vi
c2l0ZSB3aGVuIHJlcXVlc3RlZCB0aHJvdWdodCB0aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitz
dGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNz
aW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICBHX0lN
UExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9u
X3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBXS1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWY+IHJlcXVlc3Q7CisgICAgYm9vbCBtYWRlRGVjaXNpb247Cit9Owor
CitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAg
IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lU
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8v
IE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RB
bGxvdyhwcml2LT5yZXF1ZXN0LmdldCgpKTsKKyAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVl
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVu
eShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwor
CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBX
RUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisg
ICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVj
aXNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdERlbnkocHJpdi0+cmVxdWVzdC5nZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0g
dHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkKK3sKKyAgICBpZmFj
ZS0+YWxsb3cgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3c7CisgICAg
aWZhY2UtPmRlbnkgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0
KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmVx
dWVzdC0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRf
VFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlKTsKKyAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYg
PSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCktPnByaXY7CisK
KyAgICAvLyBEZWZhdWx0IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUg
aXMgZGVueWluZyB0aGUgcmVxdWVzdC4KKyAgICBpZiAoIXByaXYtPm1hZGVEZWNpc2lvbikKKyAg
ICAgICAgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueShwcml2LT5yZXF1ZXN0Lmdl
dCgpKTsKKworICAgIHByaXYtPn5XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9u
X3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxp
emU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpKTsKK30KKworV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENy
ZWF0ZShXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCkKK3sKKyAgICBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiBnZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBOVUxMKSk7Cisg
ICAgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC0+cHJpdi0+cmVxdWVzdCA9IHJlcXVlc3Q7
CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDMzYjYzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVm
aW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJl
Y3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0X2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5o
PgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVS
TUlTU0lPTl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9u
X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwg
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNT
SU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9S
RVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJ
VF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlT
U0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQor
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCAgICAg
ICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgICBXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVj
dCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2dlb2xv
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZkZTY4NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENyZWF0ZShXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYpOworCisjZW5k
aWYgLy8gV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRi
N2U5YWQuLjFlZmU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dL
RG93bmxvYWQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlvbnMuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNmYwZTExYy4uNjk4M2Q4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcApAQCAtMjAsMTIgKzIwLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0VUlDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApAQCAtMTM2LDYgKzEzOCwxMiBAQCBzdGF0aWMgdm9pZCBwcmludEZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKikKICAgICB3ZWJraXRXZWJW
aWV3UHJpbnRGcmFtZShXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkp
LCBmcmFtZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVm
LCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBHUmVmUHRyPFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShyZXF1ZXN0KSk7CisgICAgd2Via2l0V2Vi
Vmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIFdF
QktJVF9QRVJNSVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQo
KSkpOworfQorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3MCw3ICsxNzgs
NyBAQCB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKICAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFz
ZVF1b3RhCiAgICAgICAgIDAsIC8vIHJ1bk9wZW5QYW5lbAotICAgICAgICAwLCAvLyBkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIDAsIC8vIGhlYWRlckhl
aWdodAogICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKICAgICAgICAgMCwgLy8gZHJhd0hlYWRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzU3MjdhZC4uNTI1YzYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sCkBAIC0yMiw2ICsyMiw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFdpbmRvd1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdERvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IDJiYmUzNjAuLjM1N2ZkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dApAQCAtMzc1LDYgKzM3NSwyNCBAQCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2dl
dF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAor
V0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0lTX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVR
VUVTVF9DTEFTUworV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFT
UworV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlCit3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCis8L1NF
Q1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVjaXNpb248L0ZJTEU+CiBX
ZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGY2OWY1MjkuLmU1MDJkOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKQEAgLTI3OCwxNSArMjc4LDMxIEBAIHB1YmxpYzoKICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKICAgICB9CiAKKyAgICBzdGF0aWMgZ2Jvb2xl
YW4gcGVybWlzc2lvblJlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJl
cXVlc3QqIHJlcXVlc3QsIFVJQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3Qp
KTsKKworICAgICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKKyAgICAg
ICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueShyZXF1ZXN0
KTsKKworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAg
ICByZXR1cm4gVFJVRTsKKyAgICB9CisKICAgICBVSUNsaWVudFRlc3QoKQogICAgICAgICA6IG1f
c2NyaXB0RGlhbG9nVHlwZShXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVCkKICAgICAgICAgLCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQorICAgICAgICAsIG1fYWxsb3dQZXJtaXNzaW9u
UmVxdWVzdHMoZmFsc2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAg
IHsKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyks
IFRSVUUpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdf
Q0FMTEJBQ0sodmlld0NyZWF0ZSksIHRoaXMpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgInNjcmlwdC1kaWFsb2ciLCBHX0NBTExCQUNLKHNjcmlwdERpYWxvZyksIHRoaXMp
OwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm1vdXNlLXRhcmdldC1jaGFu
Z2VkIiwgR19DQUxMQkFDSyhtb3VzZVRhcmdldENoYW5nZWQpLCB0aGlzKTsKKyAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNL
KHBlcm1pc3Npb25SZXF1ZXN0ZWQpLCB0aGlzKTsKICAgICB9CiAKICAgICB+VUlDbGllbnRUZXN0
KCkKQEAgLTMxNCw2ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFdlYlZpZXdFdmVudHM+
IG1fd2ViVmlld0V2ZW50czsKICAgICBXZWJLaXRTY3JpcHREaWFsb2dUeXBlIG1fc2NyaXB0RGlh
bG9nVHlwZTsKICAgICBib29sIG1fc2NyaXB0RGlhbG9nQ29uZmlybWVkOworICAgIGJvb2wgbV9h
bGxvd1Blcm1pc3Npb25SZXF1ZXN0czsKICAgICBXaW5kb3dQcm9wZXJ0aWVzIG1fd2luZG93UHJv
cGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRvd1Byb3BlcnRpZXNDaGFu
Z2VkOwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbV9tb3VzZVRhcmdldEhpdFRl
c3RSZXN1bHQ7CkBAIC00NDEsNiArNDU4LDIyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91
c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBnZW9sb2NhdGlvblJlcXVlc3RIVE1MID0gIjxodG1sPjxzY3JpcHQ+
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7IDsg
fSk7PC9zY3JpcHQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOworCisgICAgLy8gVGVzdCBkZW55aW5n
IGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVz
dHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChnZW9sb2NhdGlvblJlcXVlc3RIVE1MLCAw
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CisKKyAgICAvLyBUZXN0
IGFsbG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNz
aW9uUmVxdWVzdHMgPSB0cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKGdlb2xvY2F0aW9uUmVxdWVz
dEhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMoKTsKK30KKwog
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdab29tTGV2ZWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X3dlYl92aWV3X2dldF96
b29tX2xldmVsKHRlc3QtPm1fd2ViVmlldyksID09LCAxKTsKQEAgLTU5Myw2ICs2MjYsNyBAQCB2
b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
amF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0
ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOworICAg
IFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24tcmVxdWVzdHMi
LCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJ6b29tLWxldmVsIiwgdGVzdFdlYlZpZXdab29tTGV2ZWwpOwogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicnVuLWphdmFzY3JpcHQiLCB0ZXN0
V2ViVmlld1J1bkphdmFTY3JpcHQpOwogICAgIEZ1bGxTY3JlZW5DbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAiZnVsbHNjcmVlbiIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMDUyMTk0MS4uODU1
ZmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rmlu
ZENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEhpdFRlc3RSZXN1bHQuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDg2MDhjOC4uNTAxYmZlMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA0LTIwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1p
c3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgbWluaWJyb3dzZXIgY29ubmVjdCB0byB0aGUgbmV3
ICdwZXJtaXNzaW9uIHJlcXVlc3RzJyBzaWduYWwKKyAgICAgICAgdG8gYWxsb3cgdXNlcnMgaGFu
ZGxlIHRoZSBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKGdlb2xvY2F0aW9uUmVxdWVz
dERpYWxvZ0NhbGxiYWNrKTogQ2FsbGJhY2sgZm9yIHRoZSBkaWFsb2cgYXNraW5nCisgICAgICAg
IHRoZSB1c2VyIGZvciBhbGxvd2luZyBvciBub3QgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1
ZXN0cy4KKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCk6IExhdW5jaCBh
IGRpYWxvZyB0byBhc2sgdGhlIHVzZXIKKyAgICAgICAgd2hldGhlciB0byBhbGxvdyBvciBkZW55
IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisgICAgICAgIChicm93c2VyV2luZG93
Q29uc3RydWN0ZWQpOiBDb25uZWN0IHRvICdwZXJtaXNzaW9uLXJlcXVlc3QnIHNpZ25hbC4KKwog
MjAxMi0wNC0yMCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4
LmludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBbRFJUXSBTZW5kIGRvdWJsZSBjbGljayBldmVu
dCBmcm9tIEV2ZW50U2VuZGVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRl
eCA1ZmU5ODRhLi45MWMwNDc2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
QEAgLTE5OSw2ICsxOTksMjEgQEAgc3RhdGljIHZvaWQgYmFja0ZvcndhZGxpc3RDaGFuZ2VkKFdl
YktpdEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhZGxpc3QsIFdlYktpdEIKICAgICBicm93c2Vy
V2luZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMod2luZG93LCBiYWNrRm9yd2FkbGlzdCk7CiB9
CiAKK3N0YXRpYyB2b2lkIGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKEd0a0RpYWxv
ZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfWUVT
OgorICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVlc3QpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1
ZXN0X2RlbnkocmVxdWVzdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVl
c3QpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3Q2xvc2UoV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtf
V0lER0VUKHdpbmRvdykpOwpAQCAtMjYzLDYgKzI3OCwyNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
Vmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNp
c2lvbgogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lk
ZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBlcm1pc3Np
b25SZXF1ZXN0ICpyZXF1ZXN0LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgaWYgKCFX
RUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisKKyAgICBHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2Rp
YWxvZ19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9Z
X1dJVEhfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfTUVTU0FHRV9RVUVTVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvbG9jYXRpb24gcmVxdWVzdCIpOworCisg
ICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4dChHVEtfTUVTU0FHRV9E
SUFMT0coZGlhbG9nKSwgIkFsbG93IGdlb2xvY2F0aW9uIHJlcXVlc3Q/Iik7CisgICAgZ19zaWdu
YWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soZ2VvbG9jYXRpb25SZXF1
ZXN0RGlhbG9nQ2FsbGJhY2spLCBnX29iamVjdF9yZWYocmVxdWVzdCkpOworICAgIGd0a193aWRn
ZXRfc2hvdyhkaWFsb2cpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyB2b2lkIHdl
YlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0SGl0
VGVzdFJlc3VsdCAqaGl0VGVzdFJlc3VsdCwgZ3VpbnQgbW91c2VNb2RpZmllcnMsIEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKIHsKICAgICBpZiAoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKSB7CkBAIC00MjAsNiArNDUzLDcgQEAgc3RhdGljIHZv
aWQgYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAgICAgZ19zaWdu
YWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdD
cmVhdGUpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAi
bG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKHdlYlZpZXdMb2FkRmFpbGVkKSwgd2luZG93KTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NB
TExCQUNLKHdlYlZpZXdEZWNpZGVQb2xpY3kpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2luZG93LT53ZWJWaWV3LCAicGVybWlzc2lvbi1yZXF1ZXN0IiwgR19DQUxMQkFDSyh3ZWJW
aWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2luZG93LT53ZWJWaWV3LCAibW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBHX0NBTExCQUNLKHdl
YlZpZXdNb3VzZVRhcmdldENoYW5nZWQpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2luZG93LT53ZWJWaWV3LCAibm90aWZ5Ojp6b29tLWxldmVsIiwgR19DQUxMQkFDSyh3ZWJWaWV3
Wm9vbUxldmVsQ2hhbmdlZCksIHdpbmRvdyk7CiAKLS0gCjEuNy43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144313</attachid>
            <date>2012-05-28 02:55:29 -0700</date>
            <delta_ts>2012-05-30 14:58:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83879-20120528115527.patch</filename>
            <type>text/plain</type>
            <size>27116</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWM4ZWZhODllYmI5YWE5
ZGFiNTI3NTU0NWYwY2RjZGExM2YyYThhOS4uYmI4NmYyNjU4N2UwYzQzMTIyYWRjN2I3OTJjZGNk
NWIyOWUzN2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA1LTI4ICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtX
SzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4g
dGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBzdXBwb3J0aW5n
IHRoZQorICAgICAgICBHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdUSysuCisKKyAgICAgICAg
TmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MsIGltcGxlbWVudGlu
ZyB0aGUKKyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCB0byBlbmFi
bGluZyBjbGllbnQgYXBwbGljYXRpb25zCisgICAgICAgIHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9j
YXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1p
c3Npb25fcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgorCisgICAgICAg
IEluY2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0
ZS5oLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGl0IGZyb20gdGhlIG5ldyBXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaW5jbHVkZS4KKworICAgICAgICBJbXBsZW1l
bnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cyBpbiB0aGUgVUkgY2xpZW50LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAo
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6IENyZWF0ZSBhIG5l
dworICAgICAgICBpbnN0YW5jZSBvZiB0aGUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCBjbGFzcyBhbmQgY2FsbAorICAgICAgICB0byB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Np
b25SZXF1ZXN0KCkuCisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6IFByb3ZpZGUgYW4g
aW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yCisgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8KKyAgICAgICAgV2ViS2l0UGVybWlzc2lv
blJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9sb2NhdGlvbiByZXF1ZXN0cy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZGVkIGhlYWRlciBmaWxlIGZvcgor
ICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisKKyAgICAgICAgTmV3
IHVuaXQgdGVzdHMgdG8gdGVzdCBhbGxvd2luZyBhbmQgZGVueWluZyBwZXJtaXNzaW9uIHJlcXVl
c3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMpOiBOZXcgdGVz
dCB0aGF0IGxvYWRzIGEgc2ltcGxlIEhUTUwKKyAgICAgICAgd2l0aCBKYXZhU2NyaXB0IGNvZGUg
cmVxdWVzdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbi4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFk
ZGVkIG5ldyB0ZXN0LgorCisgICAgICAgIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoK
KwogMjAxMi0wNS0yNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYktpdCBzaG91bGQgYmUgbGF6eS1maW5hbGl6YXRpb24tc2FmZSAoZXNwLiB0aGUgRE9N
KSB2MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzVkMjJmYWQwYTVkYWE4ZDk4
ODdkZTg4MTYyMzUwMjM5ZjA5YmM2MC4uNTgzN2FmNTdkZDZlYTc5MjJmMmYyZGJhYzllN2YyZWM4
NjY3M2NhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NSw2ICs5NSw3IEBA
IHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RXJyb3IuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaW5k
Q29udHJvbGxlci5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdE1pbWVJbmZvLmggXApAQCAtNTEyLDYgKzUxMyw3IEBAIHdlYmtpdDJfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5l
ci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLR3JhbW1hckRldGFpbC5oIFwKQEAgLTU4MSw2ICs1ODMsOSBAQCB3ZWJraXQyX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RnVsbHNjcmVlbkNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEZ1bGxzY3JlZW5DbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVm
M2ZhYTFjOTJjMDc0ZmYzZjA3YjAwZjg0MDNkZjFjZjFhNjY1NjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdC5oIgorCisvKioKKyAqIFNFQ1RJT046IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBwZXJtaXNzaW9uIHJlcXVlc3QgZm9y
IHNoYXJpbmcgdXNlcidzIGxvY2F0aW9uCisgKiBAVGl0bGU6IFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LCAj
V2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qg
cmVwcmVzZW50cyBhIHJlcXVlc3QgZm9yCisgKiBwZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVy
IFdlYktpdCBzaG91bGQgcHJvdmlkZSB0aGUgdXNlcidzCisgKiBsb2NhdGlvbiB0byBhIHdlYnNp
dGUgd2hlbiByZXF1ZXN0ZWQgdGhyb3VnaHQgdGhlIEdlb2xvY2F0aW9uIEFQSS4KKyAqLworc3Rh
dGljIHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CitHX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBM
RU1FTlRfSU5URVJGQUNFKFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9y
ZXF1ZXN0X2ludGVyZmFjZV9pbml0KSkKKworc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZSB7CisgICAgV0tSZXRhaW5QdHI8V0tHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UmVmPiByZXF1ZXN0OworICAgIGJvb2wgbWFkZURlY2lzaW9uOworfTsKKwor
c3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9H
RU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCktPnByaXY7CisKKyAgICAvLyBP
bmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYgKHByaXYtPm1hZGVEZWNpc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxs
b3cocHJpdi0+cmVxdWVzdC5nZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsK
K30KKworc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnko
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwor
ICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VC
S0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAg
IC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3REZW55KHByaXYtPnJlcXVlc3QuZ2V0KCkpOworICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRy
dWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNl
X2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2Ut
PmFsbG93ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93OworICAgIGlm
YWNlLT5kZW55ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaW5pdChX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJlcXVl
c3QtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZ
UEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZSk7CisgICAgbmV3IChyZXF1ZXN0LT5wcml2KSBXZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQor
eworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpLT5wcml2OworCisg
ICAgLy8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIGlz
IGRlbnlpbmcgdGhlIHJlcXVlc3QuCisgICAgaWYgKCFwcml2LT5tYWRlRGVjaXNpb24pCisgICAg
ICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkocHJpdi0+cmVxdWVzdC5nZXQo
KSk7CisKKyAgICBwcml2LT5+V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9y
ZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgb2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZpbmFsaXpl
OworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKSk7Cit9CisKK1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVh
dGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QpCit7CisgICAgV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgTlVMTCkpOworICAg
IGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0Owor
ICAgIHJldHVybiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzM2I2M2Y3ZWY1NTM0NjY2
OTI3YWZkZGUxMGQ5ZDM5NjgxYzgyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Rf
aAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERl
ZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9Q
RVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmlu
ZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENs
YXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QgICAgICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzICAgV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisg
ICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyB7CisgICAg
R09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZGU2ODc1MzE1MDliYWVlNmJmYTdmYzgyYzM4
NzU1NDZlNTkxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2
YXRlLmgiCisKK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKKworI2VuZGlmIC8vIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBy
aXZhdGUuaAppbmRleCBiN2M1MzcwMTVlZDEyNWQwZjg0ZTY2MmU0NWFjMTU4YjMwMTQyNTk3Li5l
ODNlYTgzNmMzN2MyNDg4MzA4MzEzYWU3ZmMzZDY4MmYxMTUxM2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Rvd25sb2FkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Z1bGxTY3JlZW5DbGllbnRHdGsu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5z
cGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
CmluZGV4IDlmNzhjOWNiZmMzNGZhNjMxNzRmN2QzYWY1YzJkZDVlN2M3NTA0YjUuLmZiNzY1YjRk
YWQzYjAyZjE2MzM1ODZhZmJiN2U3MTliNjhlYTg3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIxLDYgKzIxLDcg
QEAKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQ
cml2YXRlLmgiCkBAIC0xNDQsNiArMTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAg
ICAgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcoY2xp
ZW50SW5mbyksIHJlcXVlc3QuZ2V0KCkpOwogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tT
ZWN1cml0eU9yaWdpblJlZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVl
c3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRv
cHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkp
OworICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoV0VCS0lUX1dFQl9WSUVX
KGNsaWVudEluZm8pLCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKGdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuZ2V0KCkpKTsKK30KKwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7
CkBAIC0xNzgsNyArMTg1LDcgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCiAgICAgICAgIDAsIC8v
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YQogICAgICAgICBydW5PcGVuUGFuZWwsCi0gICAgICAgIDAs
IC8vIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKICAgICAgICAgMCwg
Ly8gaGVhZGVySGVpZ2h0CiAgICAgICAgIDAsIC8vIGZvb3RlckhlaWdodAogICAgICAgICAwLCAv
LyBkcmF3SGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA5MDAwNWFjYjJhYzJlYzAxOWVk
YWNjODFlM2U3YTQyNjhmZGM3M2YwLi5jOGM1MmQxYTdjNDEwNzhlYjA1ODg2YjlkZTAxMmIzNzky
ZDk3ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTIyLDYgKzIyLDcgQEAKICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2luZG93UHJvcGVydGllcy54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLnhtbCIv
PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9u
LnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggNDI1MWNjNGE2ZTlmYjM1Nzg1
MzY2MTBmOTM2YTJjZTk0YzY3YmIxMi4uM2VmZDBmODExOTVkZTdhOWE5ZjQ2MGU1MDllZWM2NDM4
ZjMwNWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0zODUsNiArMzg1LDI0IEBA
IHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PC9GSUxFPgorV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VCS0lUX1RZUEVfR0VP
TE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
Tl9SRVFVRVNUCitXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJL
SVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlT
U0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9wZXJt
aXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5X
ZWJLaXRQb2xpY3lEZWNpc2lvbjwvRklMRT4KIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZTRj
NjBiZWJjNDhlMTZjOWFlMjg2OTJkMWQ2MDMwYTIzYTRlZDZmMi4uNWE4OGUzMzliNjI3OWRkZmI2
ZTM4YjhhODYzZTA3Mzg0ZjAwOWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjc4
LDE1ICsyNzgsMzEgQEAgcHVibGljOgogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1f
bWFpbkxvb3ApOwogICAgIH0KIAorICAgIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVz
dGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgVUlD
bGllbnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1J
U1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworCisgICAgICAgIGlmICh0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzKQorICAgICAgICAgICAgd2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworCisgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAg
IH0KKwogICAgIFVJQ2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHREaWFsb2dUeXBlKFdF
QktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkKHRydWUpCisgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyhmYWxzZSkKICAg
ICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAgICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7CiAgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh2aWV3Q3JlYXRl
KSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWRp
YWxvZyIsIEdfQ0FMTEJBQ0soc2NyaXB0RGlhbG9nKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV93ZWJWaWV3LCAibW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBHX0NBTExCQUNLKG1v
dXNlVGFyZ2V0Q2hhbmdlZCksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Vi
VmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3Rl
ZCksIHRoaXMpOwogICAgIH0KIAogICAgIH5VSUNsaWVudFRlc3QoKQpAQCAtMzE0LDYgKzMzMCw3
IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3RXZlbnRzOwog
ICAgIFdlYktpdFNjcmlwdERpYWxvZ1R5cGUgbV9zY3JpcHREaWFsb2dUeXBlOwogICAgIGJvb2wg
bV9zY3JpcHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2FsbG93UGVybWlzc2lvblJlcXVl
c3RzOwogICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hT
ZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxX
ZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTQ0OSw2
ICs0NjYsMjIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJn
ZXRNb2RpZmllcnMpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1
ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+c2hv
d0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdl
b2xvY2F0aW9uUmVxdWVzdEhUTUwgPSAiPGh0bWw+PHNjcmlwdD5uYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsgOyB9KTs8L3NjcmlwdD48Ym9keT48
L2JvZHk+PC9odG1sPiI7CisKKyAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVl
c3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOworICAgIHRl
c3QtPmxvYWRIdG1sKGdlb2xvY2F0aW9uUmVxdWVzdEhUTUwsIDApOworICAgIHRlc3QtPndhaXRV
bnRpbE1haW5Mb29wRmluaXNoZXMoKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJtaXNz
aW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRydWU7
CisgICAgdGVzdC0+bG9hZEh0bWwoZ2VvbG9jYXRpb25SZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVz
dC0+d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld1pvb21MZXZlbChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBn
X2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwodGVzdC0+bV93
ZWJWaWV3KSwgPT0sIDEpOwpAQCAtNzE2LDYgKzc0OSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3Mi
LCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJv
cGVydGllcyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2Ut
dGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CisgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAicGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3UGVybWlz
c2lvblJlcXVlc3RzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpv
b20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZlbCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJydW4tamF2YXNjcmlwdCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlw
dCk7CiAgICAgRmlsZUNob29zZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZmlsZS1jaG9v
c2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggYjU4MjEwYTgwYjlkMDBjZjkx
YmQ0MWJjYmExNzBkZGNlNTgyOTk5NC4uNjk1OTg4ZDVlYjA2NjJmMWQyMjBkZTNhNmNmZDc5NTZk
YjgzNTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RXJyb3IuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEhpdFRl
c3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE1pbWVJbmZvLmg+CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjRlMzRkZDQxODc0YzUwMjY5ZDcxMjA1
MDgyNDA1ZTJlZWRhOGViMi4uZWJmYjkyM2U1OTczNDFjMDk3MzAwMDlkMGJjZjFjY2JmOGFmNzJi
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEyLTA1LTI4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xv
Y2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgbWluaWJyb3dzZXIgY29ubmVj
dCB0byB0aGUgbmV3ICdwZXJtaXNzaW9uIHJlcXVlc3RzJyBzaWduYWwKKyAgICAgICAgdG8gYWxs
b3cgdXNlcnMgaGFuZGxlIHRoZSBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKGdlb2xv
Y2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogQ2FsbGJhY2sgZm9yIHRoZSBkaWFsb2cgYXNr
aW5nCisgICAgICAgIHRoZSB1c2VyIGZvciBhbGxvd2luZyBvciBub3QgZ2VvbG9jYXRpb24gcGVy
bWlzc2lvbiByZXF1ZXN0cy4KKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVz
dCk6IExhdW5jaCBhIGRpYWxvZyB0byBhc2sgdGhlIHVzZXIKKyAgICAgICAgd2hldGhlciB0byBh
bGxvdyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisgICAgICAgIChi
cm93c2VyV2luZG93Q29uc3RydWN0ZWQpOiBDb25uZWN0IHRvICdwZXJtaXNzaW9uLXJlcXVlc3Qn
IHNpZ25hbC4KKwogMjAxMi0wNS0yNyAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5h
Z2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgYmxvYiBzdXBw
b3J0IGZvciB0aGUgRUZMIHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmlu
ZGV4IDY4MTAxNjY3ZGQ4OGM5M2Y5ODJmMTIzNTc3MDBjMDg3NjM0YThlODIuLjY2NGY3ZjhlNzlk
MThmZGQ1N2I0MTExNDZjMGIzODNmZGFkYTdhMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYwpAQCAtMjEzLDYgKzIxMywyMSBAQCBzdGF0aWMgdm9pZCBiYWNrRm9yd2FkbGlz
dENoYW5nZWQoV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCwgV2ViS2l0Qgog
ICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyh3aW5kb3csIGJhY2tGb3J3
YWRsaXN0KTsKIH0KIAorc3RhdGljIHZvaWQgZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJh
Y2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBjYXNlIEdUS19S
RVNQT05TRV9ZRVM6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVx
dWVzdCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHdlYmtpdF9wZXJt
aXNzaW9uX3JlcXVlc3RfZGVueShyZXF1ZXN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CisgICAgZ19vYmplY3Rf
dW5yZWYocmVxdWVzdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KEdUS19XSURHRVQod2luZG93KSk7CkBAIC0yNzcsNiArMjkyLDI0IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktp
dFBvbGljeURlY2lzaW9uCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3
ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sK
KyAgICBpZiAoIVdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVz
dCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3Rr
X21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9XKHdpbmRvdyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElB
TE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1
ZXN0Iik7CisKKyAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdU
S19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCAiQWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9s
b2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7Cisg
ICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3Rh
dGljIHZvaWQgd2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3
LCBXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRUZXN0UmVzdWx0LCBndWludCBtb3VzZU1vZGlmaWVy
cywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAgIGlmICghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpIHsKQEAgLTQzNCw2ICs0NjcsNyBA
QCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93Q29uc3RydWN0ZWQoR09iamVjdCAqZ09iamVjdCkK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJB
Q0sod2ViVmlld0NyZWF0ZSksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ct
PndlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld0xvYWRGYWlsZWQpLCB3
aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAiZGVjaWRlLXBv
bGljeSIsIEdfQ0FMTEJBQ0sod2ViVmlld0RlY2lkZVBvbGljeSksIHdpbmRvdyk7CisgICAgZ19z
aWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NB
TExCQUNLKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCksIHdpbmRvdyk7CiAgICAgZ19z
aWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJtb3VzZS10YXJnZXQtY2hhbmdlZCIsIEdf
Q0FMTEJBQ0sod2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZCksIHdpbmRvdyk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJub3RpZnk6Onpvb20tbGV2ZWwiLCBHX0NBTExC
QUNLKHdlYlZpZXdab29tTGV2ZWxDaGFuZ2VkKSwgd2luZG93KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144930</attachid>
            <date>2012-05-30 14:58:13 -0700</date>
            <delta_ts>2012-05-31 05:22:14 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0001-GTK-WK2-Implement-API-for-Geolocation-permission-req.patch</filename>
            <type>text/plain</type>
            <size>29853</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkZmNkZDkxNGU2OWVkYmJkMzIxNTcwNTY4YmE4ODk5NWUwMGM4YjlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMwIE1heSAyMDEyIDE3OjU2OjQ5ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJl
cXVlc3RzCiBpbiB0aGUgR1RLIHBvcnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mzg3OQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViS2l0
MjoKCkFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBzdXBwb3J0aW5n
IHRoZQpHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdUSysuCgpOZXcgV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcywgaW1wbGVtZW50aW5nIHRoZQpXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdCBpbnRlcmZhY2UsIHRvIGVuYWJsaW5nIGNsaWVudCBhcHBsaWNhdGlvbnMKdG8g
YWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCiogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgooX1dlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RBbGxvdyk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueSk6
Cih3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKHdlYmtpdF9nZW9s
b2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaW5pdCk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0RmluYWxpemUpOgood2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVx
dWVzdF9jbGFzc19pbml0KToKKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVh
dGUpOgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaDogQWRkZWQuCihfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CihfV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzKToKKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oOiBBZGRlZC4KCklu
Y2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0ZS5o
LCBzbyB3ZQpjYW4gdXNlIGl0IGZyb20gdGhlIG5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0IGNsYXNzLgoKKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmg6IEFk
ZGVkIG5ldyBpbmNsdWRlLgoKSW1wbGVtZW50IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVz
dHMgaW4gdGhlIFVJIGNsaWVudC4KCiogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwOgooZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6IENyZWF0
ZSBhIG5ldwppbnN0YW5jZSBvZiB0aGUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCBjbGFzcyBhbmQgY2FsbAp0byB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KCku
CihhdHRhY2hVSUNsaWVudFRvVmlldyk6IFByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZnVuY3Rp
b24gZm9yCmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCiogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8KV2ViS2l0
UGVybWlzc2lvblJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9sb2NhdGlvbiByZXF1ZXN0
cy4KKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZGVkIGhlYWRlciBmaWxlIGZvcgpX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CgpOZXcgdW5pdCB0ZXN0cyB0byB0ZXN0
IGFsbG93aW5nIGFuZCBkZW55aW5nIHBlcm1pc3Npb24gcmVxdWVzdHMuCgoqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKHRlc3RXZWJWaWV3UGVybWlzc2lv
blJlcXVlc3RzKTogTmV3IHRlc3QgdGhhdCBsb2FkcyBhIHNpbXBsZSBIVE1MCndpdGggSmF2YVNj
cmlwdCBjb2RlIHJlcXVlc3RpbmcgdGhlIGN1cnJlbnQgbG9jYXRpb24uCihiZWZvcmVBbGwpOiBB
ZGRlZCBuZXcgdGVzdC4KClVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcy4KCiogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKiBVSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgoKVG9vbHM6CgpNYWtlIG1pbmlicm93c2VyIGNv
bm5lY3QgdG8gdGhlIG5ldyAncGVybWlzc2lvbiByZXF1ZXN0cycgc2lnbmFsCnRvIGFsbG93IHVz
ZXJzIGhhbmRsZSB0aGUgR2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KCiogTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxi
YWNrKTogQ2FsbGJhY2sgZm9yIHRoZSBkaWFsb2cgYXNraW5nCnRoZSB1c2VyIGZvciBhbGxvd2lu
ZyBvciBub3QgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKHdlYlZpZXdEZWNpZGVQ
ZXJtaXNzaW9uUmVxdWVzdCk6IExhdW5jaCBhIGRpYWxvZyB0byBhc2sgdGhlIHVzZXIKd2hldGhl
ciB0byBhbGxvdyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCihicm93
c2VyV2luZG93Q29uc3RydWN0ZWQpOiBDb25uZWN0IHRvICdwZXJtaXNzaW9uLXJlcXVlc3QnIHNp
Z25hbC4KLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNTkgKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmNwcCB8ICAxMTAgKysrKysrKysrKysrKysrKysrKysKIC4uLi9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAgIHwgICA1OSArKysr
KysrKysrKwogLi4uL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgg
ICAgfCAgIDI4ICsrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNs
aWVudC5jcHAgICB8ICAgIDkgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCB8ICAgMTggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCAgfCAgIDUyICsrKysrKysrKwogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oICAgICAgICAgfCAgICAxICsKIFRvb2xzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArKysKIFRv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgICAzNCAr
KysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDM4OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDk1MjdjZWEuLmQ2ZThlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAor
MjAxMi0wNS0zMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNz
aW9uIHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyBraW5kIG9mIHBlcm1pc3Npb24gcmVxdWVz
dCBmb3Igc3VwcG9ydGluZyB0aGUKKyAgICAgICAgR2VvbG9jYXRpb24gQVBJIGluIFdlYktpdDJH
VEsrLgorCisgICAgICAgIE5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNs
YXNzLCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0IGlu
dGVyZmFjZSwgdG8gZW5hYmxpbmcgY2xpZW50IGFwcGxpY2F0aW9ucworICAgICAgICB0byBhbGxv
dyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBuZXcgZmlsZXMuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKKyAg
ICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6CisgICAgICAg
ICh3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3ZWJr
aXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KToKKyAgICAgICAgKHdlYmtpdF9n
ZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X2dlb2xv
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChfV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oOiBB
ZGRlZC4KKworICAgICAgICBJbmNsdWRlIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IGluIFdlYktpdFByaXZhdGUuaCwgc28gd2UKKyAgICAgICAgY2FuIHVzZSBpdCBmcm9tIHRoZSBu
ZXcgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDogQWRkZWQgbmV3IGluY2x1ZGUuCisK
KyAgICAgICAgSW1wbGVtZW50IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhl
IFVJIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcDoKKyAgICAgICAgKGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QpOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgaW5zdGFuY2Ugb2YgdGhlIFdlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MgYW5kIGNhbGwKKyAgICAgICAgdG8gd2Via2l0V2Vi
Vmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdCgpLgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1Zp
ZXcpOiBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvcgorICAgICAgICBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkIG5ldyBlbGVtZW50IHRvCisgICAgICAg
IFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSBlbnVtZXJhdGlvbiBmb3IgZ2VvbG9jYXRpb24g
cmVxdWVzdHMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBBZGRlZCBo
ZWFkZXIgZmlsZSBmb3IKKyAgICAgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dAorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIHRvIHRlc3QgYWxsb3dpbmcgYW5kIGRlbnlpbmcg
cGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3UGVybWlzc2lvblJl
cXVlc3RzKTogTmV3IHRlc3QgdGhhdCBsb2FkcyBhIHNpbXBsZSBIVE1MCisgICAgICAgIHdpdGgg
SmF2YVNjcmlwdCBjb2RlIHJlcXVlc3RpbmcgdGhlIGN1cnJlbnQgbG9jYXRpb24uCisgICAgICAg
IChiZWZvcmVBbGwpOiBBZGRlZCBuZXcgdGVzdC4KKworICAgICAgICBVcGRhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQ6CisKIDIwMTItMDUtMjkgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2Fu
Y2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dLMl0gSW1wbGVtZW50IGdlb2xvY2F0
aW9uIHByb3ZpZGVyIGZvciB0aGUgR1RLIHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDAxNmY1ZTAuLjgzODlkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtOTUsNiArOTUsNyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RmluZENvbnRyb2xsZXIuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAogCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNaW1lSW5mby5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjQ2MmM1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgi
CisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKy8qKgorICogU0VDVElP
TjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0
aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Igc2hhcmluZyB1c2VyJ3MgbG9jYXRpb24KKyAq
IEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNv
OiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAq
IHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBwcm92aWRlIHRoZSB1
c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0ZSB3aGVuIHJlcXVlc3RlZCB0aHJvdWdodCB0
aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9y
ZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKK0df
REVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qs
IHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVf
UEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCitz
dHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBX
S1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IHdrUmVxdWVzdDsK
KyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNT
SU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1l
LgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KHByaXYtPndrUmVxdWVzdC5nZXQoKSk7
CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0
IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KHByaXYtPndrUmVxdWVzdC5n
ZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdElmYWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2dl
b2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KFdlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC0+cHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNT
SU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKTsK
KyAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVS
TUlTU0lPTl9SRVFVRVNUKG9iamVjdCktPnByaXY7CisKKyAgICAvLyBEZWZhdWx0IGJlaGF2aW91
ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0aGUgcmVxdWVzdC4K
KyAgICBpZiAoIXByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgV0tHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0RGVueShwcml2LT53a1JlcXVlc3QuZ2V0KCkpOworCisgICAgcHJpdi0+fldl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7CisgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25f
cGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZTsKKyAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSkpOworfQorCitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiB3
ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiB3a1JlcXVlc3QpCit7CisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IFdFQktJVF9HRU9M
T0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgTlVMTCkpOworICAgIGdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QtPnByaXYtPndrUmVxdWVzdCA9IHdrUmVxdWVzdDsKKyAgICByZXR1cm4gZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzNiNjNm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgor
CisjaWZuZGVmIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorI2RlZmluZSBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Qg
ICAgICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ
UEUoKG9iaiksIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCkpCisj
ZGVmaW5lIFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ICAgICAgICBXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDbGFzcyAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IHsKKyAgICBHT2JqZWN0
IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xh
c3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmRlNjg3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorCitXZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KiB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CisKKyNlbmRpZiAvLyBXZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMjU0OGQ3Yi4uN2Q0
ZWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50
LmgiCiAKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKQEAgLTE0NCw2ICsxNDUsMTIg
QEAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29z
ZXJSZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgcmVxdWVzdC5nZXQoKSk7CiB9
CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBHUmVmUHRyPFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZShyZXF1ZXN0KSk7CisgICAgd2Via2l0V2ViVmlld01ha2VQZXJt
aXNzaW9uUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIFdFQktJVF9QRVJNSVNT
SU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOworfQorCiB2
b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAg
V0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3OCw3ICsxODUsNyBAQCB2b2lkIGF0
dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8v
IHBhZ2VEaWRTY3JvbGwKICAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAg
ICAgIHJ1bk9wZW5QYW5lbCwKLSAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LAogICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKICAgICAgICAgMCwg
Ly8gZm9vdGVySGVpZ2h0CiAgICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCmluZGV4IDkwMDA1YWMuLmM4YzUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMjIs
NiArMjIsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXaW5kb3dQcm9wZXJ0
aWVzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXREb3dubG9hZC54bWwi
Lz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QueG1s
Ii8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBvbGljeURl
Y2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb24ueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRl
eCAxMDA1YjNlLi5lNTc3OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTM4Nyw2
ICszODcsMjQgQEAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q8
L0ZJTEU+CitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisKKzxTVUJTRUNUSU9O
IFN0YW5kYXJkPgorV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzCitXRUJL
SVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9HRU9MT0NBVElP
Tl9QRVJNSVNTSU9OX1JFUVVFU1QKK1dFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1QKK1dFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJ
VF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9HRU9MT0NB
VElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+
CitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZQord2Via2l0X2dlb2xv
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KIDxGSUxFPldlYktpdFBvbGljeURlY2lzaW9uPC9GSUxFPgogV2ViS2l0UG9saWN5RGVjaXNp
b24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cAppbmRleCBmNGIxMzE2Li4yYTY4Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0x
OSw2ICsxOSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVz
dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KQEAgLTI3OCwxNSArMjgwLDMwIEBAIHB1YmxpYzoKICAgICAgICAgZ19tYWluX2xv
b3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKICAgICB9CiAKKyAgICBzdGF0aWMgZ2Jvb2xlYW4g
cGVybWlzc2lvblJlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QqIHJlcXVlc3QsIFVJQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsK
KworICAgICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKKyAgICAgICAg
ICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueShyZXF1ZXN0KTsK
KworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKICAgICBVSUNsaWVudFRlc3QoKQogICAg
ICAgICA6IG1fc2NyaXB0RGlhbG9nVHlwZShXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVCkKICAg
ICAgICAgLCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQorICAgICAgICAsIG1fYWxsb3dQ
ZXJtaXNzaW9uUmVxdWVzdHMoZmFsc2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVy
cygwKQogICAgIHsKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9v
cGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1f
d2ViVmlldyksIFRSVUUpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNy
ZWF0ZSIsIEdfQ0FMTEJBQ0sodmlld0NyZWF0ZSksIHRoaXMpOwogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgInNjcmlwdC1kaWFsb2ciLCBHX0NBTExCQUNLKHNjcmlwdERpYWxv
ZyksIHRoaXMpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm1vdXNlLXRh
cmdldC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtb3VzZVRhcmdldENoYW5nZWQpLCB0aGlzKTsKKyAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBH
X0NBTExCQUNLKHBlcm1pc3Npb25SZXF1ZXN0ZWQpLCB0aGlzKTsKICAgICB9CiAKICAgICB+VUlD
bGllbnRUZXN0KCkKQEAgLTMxNCw2ICszMzEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFdlYlZp
ZXdFdmVudHM+IG1fd2ViVmlld0V2ZW50czsKICAgICBXZWJLaXRTY3JpcHREaWFsb2dUeXBlIG1f
c2NyaXB0RGlhbG9nVHlwZTsKICAgICBib29sIG1fc2NyaXB0RGlhbG9nQ29uZmlybWVkOworICAg
IGJvb2wgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0czsKICAgICBXaW5kb3dQcm9wZXJ0aWVzIG1f
d2luZG93UHJvcGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRvd1Byb3Bl
cnRpZXNDaGFuZ2VkOwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbV9tb3VzZVRh
cmdldEhpdFRlc3RSZXN1bHQ7CkBAIC00NDksNiArNDY3LDM5IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsKIH0KIAorc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgp
OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBnZW9sb2NhdGlvblJlcXVlc3RIVE1MID0gIjxodG1s
PjxzY3JpcHQ+ZnVuY3Rpb24gcnVuVGVzdCgpIHsgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7IGRvY3VtZW50LnRpdGxlID0gXCJPS1wiIH0sIGZ1
bmN0aW9uKGUpIHsgZG9jdW1lbnQudGl0bGUgPSBlLmNvZGUgfSk7IH08L3NjcmlwdD48Ym9keSBv
bmxvYWQ9J3J1blRlc3QoKTsnPjwvYm9keT48L2h0bWw+IjsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogY2hlY2tSZXN1bHRTY3JpcHQgPSAiZG9jdW1lbnQudGl0bGUiOworCisgICAgLy8gVGVzdCBk
ZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9u
UmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChnZW9sb2NhdGlvblJlcXVlc3RI
VE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKKworICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoY2hlY2tSZXN1bHRTY3JpcHQsIDApOworICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworCisg
ICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBHZW9sb2NhdGlvbiBBUEkgc3BlY2lmaWNhdGlvbiwgJzEn
IGlzIHRoZQorICAgIC8vIGVycm9yIGNvZGUgcmV0dXJuZWQgZm9yIHRoZSBQRVJNSVNTSU9OX0RF
TklFRCBlcnJvci4KKyAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9nZW8vYXBpL3NwZWMtc291cmNl
Lmh0bWwjcG9zaXRpb25fZXJyb3JfaW50ZXJmYWNlCisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVl
U3RyaW5nLmdldCgpLCA9PSwgIjEiKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJtaXNz
aW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRydWU7
CisgICAgdGVzdC0+bG9hZEh0bWwoZ2VvbG9jYXRpb25SZXF1ZXN0SFRNTCwgMCk7CisgICAgdGVz
dC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7CisKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNoZWNrUmVzdWx0U2NyaXB0LCAw
KTsKKyAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB2YWx1ZVN0cmluZy5zZXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OworCisgICAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWQgbm90IGdldCB0aGUgUEVSTUlTU0lPTl9ERU5J
RUQgZXJyb3Igbm93LgorICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgIT0s
ICIxIik7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Wm9vbUxldmVsKFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF93
ZWJfdmlld19nZXRfem9vbV9sZXZlbCh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgMSk7CkBAIC03MzMs
NiArNzg0LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERp
YWxvZ3MpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1w
cm9wZXJ0aWVzIiwgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmlld01vdXNl
VGFyZ2V0KTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwZXJtaXNz
aW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiem9vbS1sZXZlbCIsIHRlc3RXZWJWaWV3Wm9v
bUxldmVsKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJ1bi1qYXZh
c2NyaXB0IiwgdGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KTsKICAgICBGaWxlQ2hvb3NlclRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmaWxlLWNob29zZXItcmVxdWVzdCIsIHRlc3RXZWJWaWV3
RmlsZUNob29zZXJSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAppbmRleCBjYzVjMzQ5Li42MTNiODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0SGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWltZUluZm8u
aD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
Yzg4ZTFmLi4wNWI0ODMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDUtMzAgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dLMl0gSW1wbGVtZW50
IEFQSSBmb3IgR2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cyBpbiB0aGUgR1RLIHBvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBtaW5p
YnJvd3NlciBjb25uZWN0IHRvIHRoZSBuZXcgJ3Blcm1pc3Npb24gcmVxdWVzdHMnIHNpZ25hbAor
ICAgICAgICB0byBhbGxvdyB1c2VycyBoYW5kbGUgdGhlIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24g
cmVxdWVzdHMuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgor
ICAgICAgICAoZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2spOiBDYWxsYmFjayBmb3Ig
dGhlIGRpYWxvZyBhc2tpbmcKKyAgICAgICAgdGhlIHVzZXIgZm9yIGFsbG93aW5nIG9yIG5vdCBn
ZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorICAgICAgICAod2ViVmlld0RlY2lkZVBl
cm1pc3Npb25SZXF1ZXN0KTogTGF1bmNoIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlcgorICAgICAg
ICB3aGV0aGVyIHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0
cy4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZCk6IENvbm5lY3QgdG8gJ3Blcm1p
c3Npb24tcmVxdWVzdCcgc2lnbmFsLgorCiAyMDEyLTA1LTI5ICBTdGVwaGFuaWUgTGV3aXMgIDxz
bGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzcyMApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXgg
NjgxMDE2Ni4uY2VmOWU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBA
IC0yMTMsNiArMjEzLDIxIEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRsaXN0Q2hhbmdlZChXZWJL
aXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRCCiAgICAgYnJvd3Nlcldp
bmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0ZvcndhZGxpc3QpOwogfQog
CitzdGF0aWMgdm9pZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayhHdGtEaWFsb2cg
KmRpYWxvZywgZ2ludCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3Qp
Cit7CisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX1lFUzoK
KyAgICAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9kZW55KHJlcXVlc3QpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0
KTsKK30KKwogc3RhdGljIHZvaWQgd2ViVmlld0Nsb3NlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcs
IEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJ
REdFVCh3aW5kb3cpKTsKQEAgLTI3Nyw2ICsyOTIsMjQgQEAgc3RhdGljIGdib29sZWFuIHdlYlZp
ZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNp
b24KICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9u
UmVxdWVzdCAqcmVxdWVzdCwgQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGlmICghV0VC
S0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworCisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFs
b2dfbmV3KEdUS19XSU5ET1cod2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVTVFJPWV9X
SVRIX1BBUkVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX01FU1NBR0VfUVVFU1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX1lFU19OTywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2xvY2F0aW9uIHJlcXVlc3QiKTsKKworICAg
IGd0a19tZXNzYWdlX2RpYWxvZ19mb3JtYXRfc2Vjb25kYXJ5X3RleHQoR1RLX01FU1NBR0VfRElB
TE9HKGRpYWxvZyksICJBbGxvdyBnZW9sb2NhdGlvbiByZXF1ZXN0PyIpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGdlb2xvY2F0aW9uUmVxdWVz
dERpYWxvZ0NhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3coZGlhbG9nKTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgdm9pZCB3ZWJW
aWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdEhpdFRl
c3RSZXN1bHQgKmhpdFRlc3RSZXN1bHQsIGd1aW50IG1vdXNlTW9kaWZpZXJzLCBCcm93c2VyV2lu
ZG93ICp3aW5kb3cpCiB7CiAgICAgaWYgKCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfbGluayhoaXRUZXN0UmVzdWx0KSkgewpAQCAtNDM0LDYgKzQ2Nyw3IEBAIHN0YXRpYyB2b2lk
IGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q3Jl
YXRlKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImxv
YWQtZmFpbGVkIiwgR19DQUxMQkFDSyh3ZWJWaWV3TG9hZEZhaWxlZCksIHdpbmRvdyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJkZWNpZGUtcG9saWN5IiwgR19DQUxM
QkFDSyh3ZWJWaWV3RGVjaWRlUG9saWN5KSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdpbmRvdy0+d2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0sod2ViVmll
d0RlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KHdpbmRvdy0+d2ViVmlldywgIm1vdXNlLXRhcmdldC1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJW
aWV3TW91c2VUYXJnZXRDaGFuZ2VkKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdp
bmRvdy0+d2ViVmlldywgIm5vdGlmeTo6em9vbS1sZXZlbCIsIEdfQ0FMTEJBQ0sod2ViVmlld1pv
b21MZXZlbENoYW5nZWQpLCB3aW5kb3cpOwogCi0tIAoxLjcuMTAuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145058</attachid>
            <date>2012-05-31 05:22:14 -0700</date>
            <delta_ts>2012-06-04 14:43:05 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0002-GTK-WK2-Implement-API-for-Geolocation-permission-req.patch</filename>
            <type>text/plain</type>
            <size>31608</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA1ZWZhZjU0MWQ1YjdhY2E3NjE0YjUwNDcyYWMzY2I4ZGRhMjIyYzAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMwIE1heSAyMDEyIDE3OjU2OjQ5ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzJdIFtHVEtdW1dLMl0gSW1wbGVtZW50IEFQSSBmb3IgR2VvbG9jYXRpb24gcGVybWlzc2lv
bgogcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM4NzkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dl
YktpdDI6CgpBZGRlZCBhIG5ldyBraW5kIG9mIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Igc3VwcG9y
dGluZyB0aGUKR2VvbG9jYXRpb24gQVBJIGluIFdlYktpdDJHVEsrLgoKTmV3IFdlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MsIGltcGxlbWVudGluZyB0aGUKV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCB0byBlbmFibGluZyBjbGllbnQgYXBwbGljYXRpb25z
CnRvIGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KCiogR05V
bWFrZWZpbGUubGlzdC5hbTogQWRkZWQgbmV3IGZpbGVzLgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKF9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0QWxsb3cpOgood2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERl
bnkpOgood2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdCk6Cih3ZWJraXRf
Z2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2luaXQpOgood2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdEZpbmFsaXplKToKKHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9u
X3JlcXVlc3RfY2xhc3NfaW5pdCk6Cih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q3JlYXRlKToKKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Lmg6IEFkZGVkLgooX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgoo
X1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyk6CiogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQu
CgpJbmNsdWRlIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIFdlYktpdFByaXZh
dGUuaCwgc28gd2UKY2FuIHVzZSBpdCBmcm9tIHRoZSBuZXcgV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCBjbGFzcy4KCiogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5o
OiBBZGRlZCBuZXcgaW5jbHVkZS4KCkltcGxlbWVudCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJl
cXVlc3RzIGluIHRoZSBVSSBjbGllbnQuCgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcDoKKGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBD
cmVhdGUgYSBuZXcKaW5zdGFuY2Ugb2YgdGhlIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QgY2xhc3MgYW5kIGNhbGwKdG8gd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVz
dCgpLgooYXR0YWNoVUlDbGllbnRUb1ZpZXcpOiBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZ1
bmN0aW9uIGZvcgpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lgoq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkIG5ldyBlbGVtZW50IHRvCldl
YktpdFBlcm1pc3Npb25SZXF1ZXN0VHlwZSBlbnVtZXJhdGlvbiBmb3IgZ2VvbG9jYXRpb24gcmVx
dWVzdHMuCiogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBBZGRlZCBoZWFkZXIgZmlsZSBm
b3IKV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAoKTmV3IHVuaXQgdGVzdHMgdG8g
dGVzdCBhbGxvd2luZyBhbmQgZGVueWluZyBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6Cih0ZXN0V2ViVmlld1Blcm1p
c3Npb25SZXF1ZXN0cyk6IE5ldyB0ZXN0IHRoYXQgbG9hZHMgYSBzaW1wbGUgSFRNTAp3aXRoIEph
dmFTY3JpcHQgY29kZSByZXF1ZXN0aW5nIHRoZSBjdXJyZW50IGxvY2F0aW9uLgooYmVmb3JlQWxs
KTogQWRkZWQgbmV3IHRlc3QuCgpVcGRhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMuCgoqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CiogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKClRvb2xzOgoKTWFrZSBtaW5pYnJvd3Nl
ciBjb25uZWN0IHRvIHRoZSBuZXcgJ3Blcm1pc3Npb24gcmVxdWVzdHMnIHNpZ25hbAp0byBhbGxv
dyB1c2VycyBoYW5kbGUgdGhlIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCgoqIE1p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CihnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dD
YWxsYmFjayk6IENhbGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2luZwp0aGUgdXNlciBmb3IgYWxs
b3dpbmcgb3Igbm90IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCih3ZWJWaWV3RGVj
aWRlUGVybWlzc2lvblJlcXVlc3QpOiBMYXVuY2ggYSBkaWFsb2cgdG8gYXNrIHRoZSB1c2VyCndo
ZXRoZXIgdG8gYWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoo
YnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ29ubmVjdCB0byAncGVybWlzc2lvbi1yZXF1ZXN0
JyBzaWduYWwuCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDU5ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5s
aXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDUgKwogLi4uL0FQSS9ndGsvV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgfCAgMTEwICsrKysrKysrKysrKysrKysrKysrCiAu
Li4vQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggICB8ICAgNTkg
KysrKysrKysrKysKIC4uLi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZS5oICAgIHwgICAyOCArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UHJpdmF0ZS5oICAgfCAgICAxICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVJQ2xpZW50LmNwcCAgIHwgICAgOSArLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwgICAgfCAgICAxICsKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IHwgICAxOCArKysrCiAuLi4vVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8ICAgNTIgKysrKysrKysrCiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggICAgICAgICB8ICAgIDEgKwog
VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3
ICsrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAg
fCAgIDM0ICsrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMzkzIGluc2VydGlvbnMoKyksIDEgZGVs
ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMzY1MjgxNS4uOTVmMDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDEyLTA1LTMwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9u
IHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lv
biByZXF1ZXN0IGZvciBzdXBwb3J0aW5nIHRoZQorICAgICAgICBHZW9sb2NhdGlvbiBBUEkgaW4g
V2ViS2l0MkdUSysuCisKKyAgICAgICAgTmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QgY2xhc3MsIGltcGxlbWVudGluZyB0aGUKKyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJl
cXVlc3QgaW50ZXJmYWNlLCB0byBlbmFibGluZyBjbGllbnQgYXBwbGljYXRpb25zCisgICAgICAg
IHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUpOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToK
KyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAg
ICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAo
d2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdl
YmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAg
ICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlLmg6IEFkZGVkLgorCisgICAgICAgIEluY2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0ZS5oLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGl0IGZy
b20gdGhlIG5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaW5j
bHVkZS4KKworICAgICAgICBJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0
cyBpbiB0aGUgVUkgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCk6IENyZWF0ZSBhIG5ldworICAgICAgICBpbnN0YW5jZSBvZiB0aGUgV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcyBhbmQgY2FsbAorICAgICAgICB0byB3
ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KCkuCisgICAgICAgIChhdHRhY2hVSUNs
aWVudFRvVmlldyk6IFByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yCisgICAg
ICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8K
KyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9s
b2NhdGlvbiByZXF1ZXN0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6
IEFkZGVkIGhlYWRlciBmaWxlIGZvcgorICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0CisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgdG8gdGVzdCBhbGxvd2luZyBhbmQg
ZGVueWluZyBwZXJtaXNzaW9uIHJlcXVlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdQZXJt
aXNzaW9uUmVxdWVzdHMpOiBOZXcgdGVzdCB0aGF0IGxvYWRzIGEgc2ltcGxlIEhUTUwKKyAgICAg
ICAgd2l0aCBKYXZhU2NyaXB0IGNvZGUgcmVxdWVzdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbi4K
KyAgICAgICAgKGJlZm9yZUFsbCk6IEFkZGVkIG5ldyB0ZXN0LgorCisgICAgICAgIFVwZGF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKwogMjAxMi0wNS0yOSAgTWFyaW8gU2FuY2hleiBQcmFk
YSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQg
Z2VvbG9jYXRpb24gcHJvdmlkZXIgZm9yIHRoZSBHVEsgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggNGNjMDk0MS4uZTM0NWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC05NSw2ICs5NSw3IEBAIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGaW5kQ29udHJvbGxlci5oIFwKKwkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIFwKIAkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1pbWVJbmZvLmggXApAQCAtNTEzLDYgKzUx
NCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRp
b24uaCBcCkBAIC01ODQsNiArNTg2LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRl
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZ1bGxzY3JlZW5D
bGllbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxs
c2NyZWVuQ2xpZW50LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjQ2MmM1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0w
LDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKy8qKgorICog
U0VDVElPTjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rl
c2NyaXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Igc2hhcmluZyB1c2VyJ3MgbG9jYXRp
b24KKyAqIEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNl
ZV9hbHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICog
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBm
b3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBwcm92aWRl
IHRoZSB1c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0ZSB3aGVuIHJlcXVlc3RlZCB0aHJv
dWdodCB0aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2Uq
KTsKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QsIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpF
Q1QsCisgICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lU
X1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQp
KQorCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsK
KyAgICBXS1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IHdrUmVx
dWVzdDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCog
cmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19HRU9MT0NBVElPTl9Q
RVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
Tl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQg
YSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KHByaXYtPndrUmVxdWVzdC5n
ZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkoV2ViS2l0UGVybWlzc2lvblJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lz
aW9uIGF0IGEgdGltZS4KKyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KHByaXYtPndrUmVx
dWVzdC5nZXQoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1ZTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJt
aXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3ZWJr
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KFdlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC0+cHJpdiA9IEdfVFlQ
RV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9Q
RVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2
YXRlKTsKKyAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VPTE9DQVRJ
T05fUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCktPnByaXY7CisKKyAgICAvLyBEZWZhdWx0IGJl
aGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0aGUgcmVx
dWVzdC4KKyAgICBpZiAoIXByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0RGVueShwcml2LT53a1JlcXVlc3QuZ2V0KCkpOworCisgICAgcHJp
di0+fldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7CisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRf
Y2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZ2VvbG9j
YXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZTsKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZSkpOworfQorCitXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KiB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKFdLR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZiB3a1JlcXVlc3QpCit7CisgICAgV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IFdFQktJ
VF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgTlVMTCkpOworICAgIGdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QtPnByaXYtPndrUmVxdWVzdCA9IHdrUmVxdWVzdDsKKyAgICByZXR1
cm4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
MzNiNjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VC
S0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9y
ICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNl
bmRpZgorCisjaWZuZGVmIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RfaAorI2Rl
ZmluZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVH
SU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1QgICAgICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9n
ZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNU
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9O
X1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVT
VCkpCisjZGVmaW5lIFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
R0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVF
U1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ICAgICAgICBXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IHsKKyAgICBH
T2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfZ2VvbG9jYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmRlNjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorCitXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3Jl
YXRlKFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CisKKyNlbmRpZiAvLyBXZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKaW5kZXggNDRiZDM1MC4uMzlm
ZTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBy
aXZhdGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tGaW5kT3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0dlb2xvY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVjdG9yLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0luc3BlY3RvckNsaWVudEd0ay5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDI1NDhkN2Iu
LjdkNGVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJLaXRVSUNs
aWVudC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCkBAIC0xNDQsNiArMTQ1
LDEyIEBAIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgd2Via2l0V2ViVmlld1J1bkZpbGVD
aG9vc2VyUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIHJlcXVlc3QuZ2V0KCkp
OwogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBn
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDcmVhdGUocmVxdWVzdCkpOworICAgIHdlYmtpdFdlYlZpZXdNYWtl
UGVybWlzc2lvblJlcXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfUEVS
TUlTU0lPTl9SRVFVRVNUKGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKK30K
Kwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0xNzgsNyArMTg1LDcgQEAgdm9p
ZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAw
LCAvLyBwYWdlRGlkU2Nyb2xsCiAgICAgICAgIDAsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQog
ICAgICAgICBydW5PcGVuUGFuZWwsCi0gICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCwKICAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0CiAgICAgICAg
IDAsIC8vIGZvb3RlckhlaWdodAogICAgICAgICAwLCAvLyBkcmF3SGVhZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAppbmRleCA5MDAwNWFjLi5jOGM1MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAg
LTIyLDYgKzIyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2luZG93UHJv
cGVydGllcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RG93bmxvYWQu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0
LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQb2xp
Y3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQK
aW5kZXggMTAwNWIzZS4uZTU3Nzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0z
ODcsNiArMzg3LDI0IEBAIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VD
VElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0PC9GSUxFPgorV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcwor
V0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lP
Tl9SRVFVRVNUCitXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitX
RUJLSVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfR0VP
TE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2
YXRlPgorV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9n
ZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNF
Q1RJT04+CiA8RklMRT5XZWJLaXRQb2xpY3lEZWNpc2lvbjwvRklMRT4KIFdlYktpdFBvbGljeURl
Y2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggNmVkZTUzMy4uYTExNTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtMTksNiArMTksOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmll
d1Rlc3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC0yNzgsMTUgKzI4MCwzMCBAQCBwdWJsaWM6CiAgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiAgICAgfQogCisgICAgc3RhdGljIGdib29s
ZWFuIHBlcm1pc3Npb25SZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0KiByZXF1ZXN0LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fz
c2VydChXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgdGVz
dC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0
KSk7CisKKyAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCisgICAg
ICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVlc3QpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkocmVxdWVz
dCk7CisKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCiAgICAgVUlDbGllbnRUZXN0KCkK
ICAgICAgICAgOiBtX3NjcmlwdERpYWxvZ1R5cGUoV0VCS0lUX1NDUklQVF9ESUFMT0dfQUxFUlQp
CiAgICAgICAgICwgbV9zY3JpcHREaWFsb2dDb25maXJtZWQodHJ1ZSkKKyAgICAgICAgLCBtX2Fs
bG93UGVybWlzc2lvblJlcXVlc3RzKGZhbHNlKQogICAgICAgICAsIG1fbW91c2VUYXJnZXRNb2Rp
ZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9j
YW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyhtX3dlYlZpZXcpLCBUUlVFKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcs
ICJjcmVhdGUiLCBHX0NBTExCQUNLKHZpZXdDcmVhdGUpLCB0aGlzKTsKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJzY3JpcHQtZGlhbG9nIiwgR19DQUxMQkFDSyhzY3JpcHRE
aWFsb2cpLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJtb3Vz
ZS10YXJnZXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobW91c2VUYXJnZXRDaGFuZ2VkKSwgdGhpcyk7
CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicGVybWlzc2lvbi1yZXF1ZXN0
IiwgR19DQUxMQkFDSyhwZXJtaXNzaW9uUmVxdWVzdGVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAg
flVJQ2xpZW50VGVzdCgpCkBAIC0zMTQsNiArMzMxLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxX
ZWJWaWV3RXZlbnRzPiBtX3dlYlZpZXdFdmVudHM7CiAgICAgV2ViS2l0U2NyaXB0RGlhbG9nVHlw
ZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsK
KyAgICBib29sIG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHM7CiAgICAgV2luZG93UHJvcGVydGll
cyBtX3dpbmRvd1Byb3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5kb3dQ
cm9wZXJ0aWVzQ2hhbmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1fbW91
c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwpAQCAtNDQ5LDYgKzQ2NywzOSBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICBnX2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CiB9CiAKK3N0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBw
ZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZ2VvbG9jYXRpb25SZXF1ZXN0SFRNTCA9ICI8
aHRtbD48c2NyaXB0PmZ1bmN0aW9uIHJ1blRlc3QoKSB7IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9
LCBmdW5jdGlvbihlKSB7IGRvY3VtZW50LnRpdGxlID0gZS5jb2RlIH0pOyB9PC9zY3JpcHQ+PGJv
ZHkgb25sb2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+PC9odG1sPiI7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNoZWNrUmVzdWx0U2NyaXB0ID0gImRvY3VtZW50LnRpdGxlIjsKKworICAgIC8vIFRl
c3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5tX2FsbG93UGVybWlz
c2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0bWwoZ2VvbG9jYXRpb25SZXF1
ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7CisKKyAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNoZWNrUmVzdWx0U2NyaXB0LCAwKTsKKyAgICBnX2Fz
c2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsK
KworICAgIC8vIEFjY29yZGluZyB0byB0aGUgR2VvbG9jYXRpb24gQVBJIHNwZWNpZmljYXRpb24s
ICcxJyBpcyB0aGUKKyAgICAvLyBlcnJvciBjb2RlIHJldHVybmVkIGZvciB0aGUgUEVSTUlTU0lP
Tl9ERU5JRUQgZXJyb3IuCisgICAgLy8gaHR0cDovL2Rldi53My5vcmcvZ2VvL2FwaS9zcGVjLXNv
dXJjZS5odG1sI3Bvc2l0aW9uX2Vycm9yX2ludGVyZmFjZQorICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICIxIik7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGEgcGVy
bWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSB0
cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKGdlb2xvY2F0aW9uUmVxdWVzdEhUTUwsIDApOworICAg
IHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOworCisgICAgamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjaGVja1Jlc3VsdFNjcmlw
dCwgMCk7CisgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdmFsdWVTdHJpbmcu
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKKworICAgIC8vIENoZWNrIHRoYXQgd2UgZGlkIG5vdCBnZXQgdGhlIFBFUk1JU1NJT05f
REVOSUVEIGVycm9yIG5vdy4KKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ICE9LCAiMSIpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1pvb21MZXZlbChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwodGVzdC0+bV93ZWJWaWV3KSwgPT0sIDEpOwpAQCAt
NzMwLDYgKzc4MSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0phdmFTY3Jp
cHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3aW5k
b3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAgVUlDbGll
bnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdN
b3VzZVRhcmdldCk7CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicGVy
bWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3UGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmll
d1pvb21MZXZlbCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJydW4t
amF2YXNjcmlwdCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdCk7CiAgICAgRmlsZUNob29zZXJU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZmlsZS1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2Vi
Vmlld0ZpbGVDaG9vc2VyUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKaW5kZXggY2M1YzM0OS4uNjEzYjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEhpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE1pbWVJ
bmZvLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMTQ3ZDdkNi4uNWMxNDYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTMwICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXSzJdIEltcGxl
bWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBw
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
bWluaWJyb3dzZXIgY29ubmVjdCB0byB0aGUgbmV3ICdwZXJtaXNzaW9uIHJlcXVlc3RzJyBzaWdu
YWwKKyAgICAgICAgdG8gYWxsb3cgdXNlcnMgaGFuZGxlIHRoZSBHZW9sb2NhdGlvbiBwZXJtaXNz
aW9uIHJlcXVlc3RzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YzoKKyAgICAgICAgKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxiYWNrKTogQ2FsbGJhY2sg
Zm9yIHRoZSBkaWFsb2cgYXNraW5nCisgICAgICAgIHRoZSB1c2VyIGZvciBhbGxvd2luZyBvciBu
b3QgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKyAgICAgICAgKHdlYlZpZXdEZWNp
ZGVQZXJtaXNzaW9uUmVxdWVzdCk6IExhdW5jaCBhIGRpYWxvZyB0byBhc2sgdGhlIHVzZXIKKyAg
ICAgICAgd2hldGhlciB0byBhbGxvdyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVx
dWVzdHMuCisgICAgICAgIChicm93c2VyV2luZG93Q29uc3RydWN0ZWQpOiBDb25uZWN0IHRvICdw
ZXJtaXNzaW9uLXJlcXVlc3QnIHNpZ25hbC4KKwogMjAxMi0wNS0zMCAgRGlyayBQcmFua2UgIDxk
cHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBucnd0OiBzZWVtcyB0byBsZWFrIHRlbXAg
ZGlycwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggNjgxMDE2Ni4uY2Vm
OWU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yMTMsNiArMjEz
LDIxIEBAIHN0YXRpYyB2b2lkIGJhY2tGb3J3YWRsaXN0Q2hhbmdlZChXZWJLaXRCYWNrRm9yd2Fy
ZExpc3QgKmJhY2tGb3J3YWRsaXN0LCBXZWJLaXRCCiAgICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5h
dmlnYXRpb25BY3Rpb25zKHdpbmRvdywgYmFja0ZvcndhZGxpc3QpOwogfQogCitzdGF0aWMgdm9p
ZCBnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayhHdGtEaWFsb2cgKmRpYWxvZywgZ2lu
dCByZXNwb25zZSwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgc3dp
dGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX1lFUzoKKyAgICAgICAgd2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KHJlcXVl
c3QpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RL
X1dJREdFVChkaWFsb2cpKTsKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKK30KKwogc3Rh
dGljIHZvaWQgd2ViVmlld0Nsb3NlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKIHsKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCh3aW5kb3cp
KTsKQEAgLTI3Nyw2ICsyOTIsMjQgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQb2xp
Y3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpb24KICAgICByZXR1
cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAqcmVx
dWVzdCwgQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGlmICghV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworCisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19X
SU5ET1cod2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NB
R0VfUVVFU1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19CVVRUT05TX1lFU19OTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkdlb2xvY2F0aW9uIHJlcXVlc3QiKTsKKworICAgIGd0a19tZXNzYWdl
X2RpYWxvZ19mb3JtYXRfc2Vjb25kYXJ5X3RleHQoR1RLX01FU1NBR0VfRElBTE9HKGRpYWxvZyks
ICJBbGxvdyBnZW9sb2NhdGlvbiByZXF1ZXN0PyIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlh
bG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGdlb2xvY2F0aW9uUmVxdWVzdERpYWxvZ0NhbGxi
YWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9n
KTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3TW91c2VUYXJn
ZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdEhpdFRlc3RSZXN1bHQgKmhp
dFRlc3RSZXN1bHQsIGd1aW50IG1vdXNlTW9kaWZpZXJzLCBCcm93c2VyV2luZG93ICp3aW5kb3cp
CiB7CiAgICAgaWYgKCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRU
ZXN0UmVzdWx0KSkgewpAQCAtNDM0LDYgKzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5k
b3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2lu
ZG93LT53ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q3JlYXRlKSwgd2luZG93
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImxvYWQtZmFpbGVkIiwg
R19DQUxMQkFDSyh3ZWJWaWV3TG9hZEZhaWxlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29u
bmVjdCh3aW5kb3ctPndlYlZpZXcsICJkZWNpZGUtcG9saWN5IiwgR19DQUxMQkFDSyh3ZWJWaWV3
RGVjaWRlUG9saWN5KSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2Vi
VmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0sod2ViVmlld0RlY2lkZVBlcm1p
c3Npb25SZXF1ZXN0KSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2Vi
VmlldywgIm1vdXNlLXRhcmdldC1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJWaWV3TW91c2VUYXJn
ZXRDaGFuZ2VkKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmll
dywgIm5vdGlmeTo6em9vbS1sZXZlbCIsIEdfQ0FMTEJBQ0sod2ViVmlld1pvb21MZXZlbENoYW5n
ZWQpLCB3aW5kb3cpOwogCi0tIAoxLjcuMTAuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145630</attachid>
            <date>2012-06-04 14:43:05 -0700</date>
            <delta_ts>2012-06-05 01:38:43 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0001-GTK-WK2-Implement-API-for-Geolocation-permission-req.patch</filename>
            <type>text/plain</type>
            <size>31909</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBiMzkzMDhmMzcyMDE4OWM4ZGU2ZjM0ZGU4NmUwYzhlMWE3ZjkwNTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDQgSnVuIDIwMTIgMTg6NTU6NDkgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVx
dWVzdHMKIGluIHRoZSBHVEsgcG9ydAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzODc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJjZS9XZWJLaXQy
OgoKQWRkZWQgYSBuZXcga2luZCBvZiBwZXJtaXNzaW9uIHJlcXVlc3QgZm9yIHN1cHBvcnRpbmcg
dGhlCkdlb2xvY2F0aW9uIEFQSSBpbiBXZWJLaXQyR1RLKy4KCk5ldyBXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLCBpbXBsZW1lbnRpbmcgdGhlCldlYktpdFBlcm1pc3Np
b25SZXF1ZXN0IGludGVyZmFjZSwgdG8gZW5hYmxpbmcgY2xpZW50IGFwcGxpY2F0aW9ucwp0byBh
bGxvdyBvciBkZW55IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCgoqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IEFkZGVkIG5ldyBmaWxlcy4KKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCihfV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpOgood2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdEFsbG93KToKKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToK
KHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgood2Via2l0X2dlb2xv
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KToKKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RGaW5hbGl6ZSk6Cih3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1
ZXN0X2NsYXNzX2luaXQpOgood2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0
ZSk6CiogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oOiBBZGRlZC4KKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKF9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgoqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgoKSW5j
bHVkZSBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBXZWJLaXRQcml2YXRlLmgs
IHNvIHdlCmNhbiB1c2UgaXQgZnJvbSB0aGUgbmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QgY2xhc3MuCgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDogQWRk
ZWQgbmV3IGluY2x1ZGUuCgpJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0
cyBpbiB0aGUgVUkgY2xpZW50LgoKKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHA6CihkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogQ3JlYXRl
IGEgbmV3Cmluc3RhbmNlIG9mIHRoZSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
IGNsYXNzIGFuZCBjYWxsCnRvIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoKS4K
KGF0dGFjaFVJQ2xpZW50VG9WaWV3KTogUHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
biBmb3IKZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC4KKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgZWxlbWVudCB0bwpXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdFR5cGUgZW51bWVyYXRpb24gZm9yIGdlb2xvY2F0aW9uIHJlcXVlc3Rz
LgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDogQWRkZWQgaGVhZGVyIGZpbGUgZm9yCldl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKCk5ldyB1bml0IHRlc3RzIHRvIHRlc3Qg
YWxsb3dpbmcgYW5kIGRlbnlpbmcgcGVybWlzc2lvbiByZXF1ZXN0cy4KCiogVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgoodGVzdFdlYlZpZXdQZXJtaXNzaW9u
UmVxdWVzdHMpOiBOZXcgdGVzdCB0aGF0IGxvYWRzIGEgc2ltcGxlIEhUTUwKd2l0aCBKYXZhU2Ny
aXB0IGNvZGUgcmVxdWVzdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbi4KKGJlZm9yZUFsbCk6IEFk
ZGVkIG5ldyB0ZXN0LgoKVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzLgoKKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgoqIFVJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CgpUb29sczoKCk1ha2UgbWluaWJyb3dzZXIgY29u
bmVjdCB0byB0aGUgbmV3ICdwZXJtaXNzaW9uIHJlcXVlc3RzJyBzaWduYWwKdG8gYWxsb3cgdXNl
cnMgaGFuZGxlIHRoZSBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgoKKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgooZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJh
Y2spOiBDYWxsYmFjayBmb3IgdGhlIGRpYWxvZyBhc2tpbmcKdGhlIHVzZXIgZm9yIGFsbG93aW5n
IG9yIG5vdCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgood2ViVmlld0RlY2lkZVBl
cm1pc3Npb25SZXF1ZXN0KTogTGF1bmNoIGEgZGlhbG9nIHRvIGFzayB0aGUgdXNlcgp3aGV0aGVy
IHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKGJyb3dz
ZXJXaW5kb3dDb25zdHJ1Y3RlZCk6IENvbm5lY3QgdG8gJ3Blcm1pc3Npb24tcmVxdWVzdCcgc2ln
bmFsLgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA1OSArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bSAgICAgICAgICAgICAgICAgfCAgICA1ICsKIC4uLi9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuY3BwIHwgIDExMCArKysrKysrKysrKysrKysrKysrKwogLi4uL0FQ
SS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICAgfCAgIDU5ICsrKysr
KysrKysrCiAuLi4vV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCAg
ICB8ICAgMjggKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBy
aXZhdGUuaCAgIHwgICAgMSArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
SUNsaWVudC5jcHAgICB8ICAgIDkgKy0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCB8ICAgMTggKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCAgfCAgIDYyICsrKysrKysrKysrCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggICAgICAgICB8ICAgIDEgKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsr
KwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAg
IDM0ICsrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgNDAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRp
b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMjVkYTNlNy4uOGQ3N2I0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0
IEBACiAyMDEyLTA2LTA0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR1RLXVtXSzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBl
cm1pc3Npb24gcmVxdWVzdHMgaW4gdGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiBy
ZXF1ZXN0IGZvciBzdXBwb3J0aW5nIHRoZQorICAgICAgICBHZW9sb2NhdGlvbiBBUEkgaW4gV2Vi
S2l0MkdUSysuCisKKyAgICAgICAgTmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QgY2xhc3MsIGltcGxlbWVudGluZyB0aGUKKyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QgaW50ZXJmYWNlLCB0byBlbmFibGluZyBjbGllbnQgYXBwbGljYXRpb25zCisgICAgICAgIHRv
IGFsbG93IG9yIGRlbnkgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRk
ZWQuCisgICAgICAgIChfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUp
OgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAg
ICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAg
KHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Vi
a2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRf
Z2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4K
KyAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
Lmg6IEFkZGVkLgorCisgICAgICAgIEluY2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmggaW4gV2ViS2l0UHJpdmF0ZS5oLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGl0IGZyb20g
dGhlIG5ldyBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaW5jbHVk
ZS4KKworICAgICAgICBJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cyBp
biB0aGUgVUkgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgorICAgICAgICAoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCk6IENyZWF0ZSBhIG5ldworICAgICAgICBpbnN0YW5jZSBvZiB0aGUgV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjbGFzcyBhbmQgY2FsbAorICAgICAgICB0byB3ZWJr
aXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KCkuCisgICAgICAgIChhdHRhY2hVSUNsaWVu
dFRvVmlldyk6IFByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yCisgICAgICAg
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8KKyAg
ICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9sb2Nh
dGlvbiByZXF1ZXN0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFk
ZGVkIGhlYWRlciBmaWxlIGZvcgorICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0CisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgdG8gdGVzdCBhbGxvd2luZyBhbmQgZGVu
eWluZyBwZXJtaXNzaW9uIHJlcXVlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdQZXJtaXNz
aW9uUmVxdWVzdHMpOiBOZXcgdGVzdCB0aGF0IGxvYWRzIGEgc2ltcGxlIEhUTUwKKyAgICAgICAg
d2l0aCBKYXZhU2NyaXB0IGNvZGUgcmVxdWVzdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbi4KKyAg
ICAgICAgKGJlZm9yZUFsbCk6IEFkZGVkIG5ldyB0ZXN0LgorCisgICAgICAgIFVwZGF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dDoKKworMjAxMi0wNi0wNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAg
PG1zYW5jaGV6QGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgZ2Vv
bG9jYXRpb24gcHJvdmlkZXIgZm9yIHRoZSBHVEsgcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggNGNjMDk0MS4uZTM0NWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC05NSw2ICs5NSw3IEBAIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGaW5kQ29udHJvbGxlci5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1pbWVJbmZvLmggXApAQCAtNTEzLDYgKzUxNCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24u
aCBcCkBAIC01ODQsNiArNTg2LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZ1bGxzY3JlZW5DbGll
bnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxsc2Ny
ZWVuQ2xpZW50LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTFmMTg2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAg
KzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZS5oIgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKy8qKgorICogU0VD
VElPTjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2Ny
aXB0aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Igc2hhcmluZyB1c2VyJ3MgbG9jYXRpb24K
KyAqIEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9h
bHNvOiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IK
KyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBwcm92aWRlIHRo
ZSB1c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0ZSB3aGVuIHJlcXVlc3RlZCB0aHJvdWdo
dCB0aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lv
bl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsK
K0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QsIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZ
UEVfUEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQor
CitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAg
ICBXS1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IHdrUmVxdWVz
dDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVR
VUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVx
dWVzdCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAg
aWYgKHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocHJpdi0+d2tSZXF1ZXN0LmdldCgpKTsKKyAgICBw
cml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVz
dCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYg
KHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0RGVueShwcml2LT53a1JlcXVlc3QuZ2V0KCkpOworICAgIHByaXYt
Pm1hZGVEZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9u
X3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZh
Y2UpCit7CisgICAgaWZhY2UtPmFsbG93ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdERlbnk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNz
aW9uX3JlcXVlc3RfaW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIHJlcXVlc3QtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
cmVxdWVzdCwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk7CisgICAgbmV3IChyZXF1ZXN0
LT5wcml2KSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUo
R09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChv
YmplY3QpLT5wcml2OworCisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lv
biBoYXMgYmVlbiBtYWRlIGlzIGRlbnlpbmcgdGhlIHJlcXVlc3QuCisgICAgaWYgKCFwcml2LT5t
YWRlRGVjaXNpb24pCisgICAgICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnko
cHJpdi0+d2tSZXF1ZXN0LmdldCgpKTsKKworICAgIHByaXYtPn5XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9nZW9s
b2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVz
dF9jbGFzc19pbml0KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xh
c3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGts
YXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0RmluYWxpemU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNz
LCBzaXplb2YoV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpKTsKK30K
KworV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYg
d2tSZXF1ZXN0KQoreworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIGdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lP
Tl9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9O
X1JFUVVFU1QsIE5VTEwpKTsKKyAgICBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LT5wcml2
LT53a1JlcXVlc3QgPSB3a1JlcXVlc3Q7CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzYjYzZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQy
Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtp
dF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VC
S0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJN
SVNTSU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpKQorI2Rl
ZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVT
VChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNf
R0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05f
UkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1Rf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lU
X1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2xhc3MgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAv
KjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlw
ZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZTZkZTY4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlX2gKKyNk
ZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaAorCisjaW5j
bHVkZSAiV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldl
YktpdFByaXZhdGUuaCIKKworV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Vi
a2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXS0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWYpOworCisjZW5kaWYgLy8gV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UHJpdmF0ZS5oCmluZGV4IDQ0YmQzNTAuLjM5ZmU2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9sb2NhdGlv
bk1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0luc3BlY3Rvci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0
b3JDbGllbnRHdGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAyNTQ4ZDdiLi43ZDRlZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKIAogI2luY2x1ZGUgIldl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgpAQCAtMTQ0LDYgKzE0NSwxMiBAQCBzdGF0aWMgdm9pZCBydW5P
cGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLT3BlblBhbmVsUGFy
YW1ldGVycwogICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV0VCS0lUX1dF
Ql9WSUVXKGNsaWVudEluZm8pLCByZXF1ZXN0LmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFJlZiByZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEdSZWZQdHI8V2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRl
KHJlcXVlc3QpKTsKKyAgICB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdFQktJ
VF9XRUJfVklFVyhjbGllbnRJbmZvKSwgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChnZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKSk7Cit9CisKIHZvaWQgYXR0YWNoVUlDbGllbnRU
b1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB3a1VJ
Q2xpZW50ID0gewpAQCAtMTc4LDcgKzE4NSw3IEBAIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXco
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgMCwgLy8gcGFnZURpZFNjcm9sbAogICAg
ICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICAgICAgcnVuT3BlblBhbmVsLAot
ICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
CisgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAg
ICAgICAgIDAsIC8vIGhlYWRlckhlaWdodAogICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKICAg
ICAgICAgMCwgLy8gZHJhd0hlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggOTAwMDVhYy4u
YzhjNTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0yMiw2ICsyMiw3IEBACiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdERvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwi
Lz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lv
bi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDZkZGUwODYuLmM2ZGNhYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMzg4LDYgKzM4OCwyNCBAQCB3ZWJraXRf
cGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJ
TEU+V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVT
VAorV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xP
Q0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BF
Uk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVR
VUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9y
ZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9s
aWN5RGVjaXNpb248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl9kb3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZlZGU1MzMuLjA4
ZDY1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTE5LDYgKzE5LDggQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Zh
bHVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMjc4LDE1
ICsyODAsMzAgQEAgcHVibGljOgogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOwogICAgIH0KIAorICAgIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdGVk
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgVUlDbGll
bnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworCisgICAgICAgIGlmICh0ZXN0
LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzKQorICAgICAgICAgICAgd2Via2l0X3Blcm1pc3Np
b25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworCisgICAgICAgIHJldHVybiBU
UlVFOworICAgIH0KKwogICAgIFVJQ2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHREaWFs
b2dUeXBlKFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0RGlh
bG9nQ29uZmlybWVkKHRydWUpCisgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyhm
YWxzZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0
aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7CiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh2
aWV3Q3JlYXRlKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAi
c2NyaXB0LWRpYWxvZyIsIEdfQ0FMTEJBQ0soc2NyaXB0RGlhbG9nKSwgdGhpcyk7CiAgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBHX0NB
TExCQUNLKG1vdXNlVGFyZ2V0Q2hhbmdlZCksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fd2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVybWlzc2lv
blJlcXVlc3RlZCksIHRoaXMpOwogICAgIH0KIAogICAgIH5VSUNsaWVudFRlc3QoKQpAQCAtMzE0
LDYgKzMzMSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3
RXZlbnRzOwogICAgIFdlYktpdFNjcmlwdERpYWxvZ1R5cGUgbV9zY3JpcHREaWFsb2dUeXBlOwog
ICAgIGJvb2wgbV9zY3JpcHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2FsbG93UGVybWlz
c2lvblJlcXVlc3RzOwogICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwog
ICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAg
R1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsK
QEAgLTQ0OSw2ICs0NjcsNDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdNb3VzZVRhcmdldChV
SUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1f
bW91c2VUYXJnZXRNb2RpZmllcnMpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Blcm1p
c3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
dGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGdlb2xvY2F0aW9uUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAg
ICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgorICAgICAgICAi
ICB7IgorICAgICAgICAiICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZnVuY3Rpb24ocCkgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIKKyAgICAgICAgIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsg
ZG9jdW1lbnQudGl0bGUgPSBlLmNvZGUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAiICA8
L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIK
KyAgICAgICAgIjwvaHRtbD4iOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiBy
ZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAg
ICB0ZXN0LT5sb2FkSHRtbChnZW9sb2NhdGlvblJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0LT53
YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjaGVja1Jl
c3VsdFNjcmlwdCA9ICJkb2N1bWVudC50aXRsZSI7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZChjaGVja1Jlc3VsdFNjcmlwdCwgMCk7CisgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgR093blB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisKKyAgICAvLyBBY2NvcmRpbmcg
dG8gdGhlIEdlb2xvY2F0aW9uIEFQSSBzcGVjaWZpY2F0aW9uLCAnMScgaXMgdGhlCisgICAgLy8g
ZXJyb3IgY29kZSByZXR1cm5lZCBmb3IgdGhlIFBFUk1JU1NJT05fREVOSUVEIGVycm9yLgorICAg
IC8vIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbCNwb3NpdGlvbl9l
cnJvcl9pbnRlcmZhY2UKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09
LCAiMSIpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAg
ICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2Fk
SHRtbChnZW9sb2NhdGlvblJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRs
ZUNoYW5nZWQoKTsKKworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoY2hlY2tSZXN1bHRTY3JpcHQsIDApOworICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisKKyAgICAvLyBDaGVj
ayB0aGF0IHdlIGRpZCBub3QgZ2V0IHRoZSBQRVJNSVNTSU9OX0RFTklFRCBlcnJvciBub3cuCisg
ICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCAhPSwgIjEiKTsKK30KKwogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdab29tTGV2ZWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X3dlYl92aWV3X2dldF96b29t
X2xldmVsKHRlc3QtPm1fd2ViVmlldyksID09LCAxKTsKQEAgLTczMCw2ICs3OTEsNyBAQCB2b2lk
IGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiamF2
YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAgICAgVUlD
bGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0ZXN0
V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQpOworICAgIFVJ
Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24tcmVxdWVzdHMiLCB0
ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJ6b29tLWxldmVsIiwgdGVzdFdlYlZpZXdab29tTGV2ZWwpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicnVuLWphdmFzY3JpcHQiLCB0ZXN0V2Vi
Vmlld1J1bkphdmFTY3JpcHQpOwogICAgIEZpbGVDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGNj
NWMzNDkuLjYxM2I4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVycm9yLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRIaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRKYXZhc2NyaXB0UmVz
dWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRNaW1lSW5mby5oPgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNlNTgzMTguLjMxZTFmODkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMiBAQAogMjAxMi0wNi0wNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGln
YWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2Nh
dGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRoZSBHVEsgcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIG1pbmlicm93c2VyIGNvbm5lY3Qg
dG8gdGhlIG5ldyAncGVybWlzc2lvbiByZXF1ZXN0cycgc2lnbmFsCisgICAgICAgIHRvIGFsbG93
IHVzZXJzIGhhbmRsZSB0aGUgR2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgIChnZW9sb2Nh
dGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6IENhbGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2lu
ZworICAgICAgICB0aGUgdXNlciBmb3IgYWxsb3dpbmcgb3Igbm90IGdlb2xvY2F0aW9uIHBlcm1p
c3Npb24gcmVxdWVzdHMuCisgICAgICAgICh3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3Qp
OiBMYXVuY2ggYSBkaWFsb2cgdG8gYXNrIHRoZSB1c2VyCisgICAgICAgIHdoZXRoZXIgdG8gYWxs
b3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzLgorICAgICAgICAoYnJv
d3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ29ubmVjdCB0byAncGVybWlzc2lvbi1yZXF1ZXN0JyBz
aWduYWwuCisKKzIwMTItMDYtMDQgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2Fs
aWEuY29tPgorCiAgICAgICAgIFtHVEtdW1dLMl0gSW1wbGVtZW50IGdlb2xvY2F0aW9uIHByb3Zp
ZGVyIGZvciB0aGUgR1RLIHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzODc3CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmlu
ZGV4IDY4MTAxNjYuLmNlZjllN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YwpAQCAtMjEzLDYgKzIxMywyMSBAQCBzdGF0aWMgdm9pZCBiYWNrRm9yd2FkbGlzdENoYW5nZWQo
V2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCwgV2ViS2l0QgogICAgIGJyb3dz
ZXJXaW5kb3dVcGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyh3aW5kb3csIGJhY2tGb3J3YWRsaXN0KTsK
IH0KIAorc3RhdGljIHZvaWQgZ2VvbG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2soR3RrRGlh
bG9nICpkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1
ZXN0KQoreworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9Z
RVM6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfZGVueShyZXF1ZXN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CisgICAgZ19vYmplY3RfdW5yZWYocmVx
dWVzdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJW
aWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdU
S19XSURHRVQod2luZG93KSk7CkBAIC0yNzcsNiArMjkyLDI0IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURl
Y2lzaW9uCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVj
aWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QgKnJlcXVlc3QsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAo
IVdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKworICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2Vf
ZGlhbG9nX25ldyhHVEtfV0lORE9XKHdpbmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RS
T1lfV0lUSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdUS19NRVNTQUdFX1FVRVNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1ZXN0Iik7CisK
KyAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdF
X0RJQUxPRyhkaWFsb2cpLCAiQWxsb3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJl
cXVlc3REaWFsb2dDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgZ3RrX3dp
ZGdldF9zaG93KGRpYWxvZyk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQg
d2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRI
aXRUZXN0UmVzdWx0ICpoaXRUZXN0UmVzdWx0LCBndWludCBtb3VzZU1vZGlmaWVycywgQnJvd3Nl
cldpbmRvdyAqd2luZG93KQogewogICAgIGlmICghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpIHsKQEAgLTQzNCw2ICs0NjcsNyBAQCBzdGF0aWMg
dm9pZCBicm93c2VyV2luZG93Q29uc3RydWN0ZWQoR09iamVjdCAqZ09iamVjdCkKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmll
d0NyZWF0ZSksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld0xvYWRGYWlsZWQpLCB3aW5kb3cpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdf
Q0FMTEJBQ0sod2ViVmlld0RlY2lkZVBvbGljeSksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29u
bmVjdCh3aW5kb3ctPndlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNLKHdl
YlZpZXdEZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29u
bmVjdCh3aW5kb3ctPndlYlZpZXcsICJtb3VzZS10YXJnZXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
d2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3ctPndlYlZpZXcsICJub3RpZnk6Onpvb20tbGV2ZWwiLCBHX0NBTExCQUNLKHdlYlZp
ZXdab29tTGV2ZWxDaGFuZ2VkKSwgd2luZG93KTsKIAotLSAKMS43LjEwLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145725</attachid>
            <date>2012-06-05 01:38:51 -0700</date>
            <delta_ts>2012-06-05 01:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83879-20120605103849.patch</filename>
            <type>text/plain</type>
            <size>28226</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjVkYTNlNzM4NWUyYThk
MjBiYjJiZWRjYzM0NmUyNjQ0YjBiMTM0Zi4uOGQ3N2I0YjJhM2M4NmQxNDliNmQ4ZjZlZWFlZGE1
NTFmMTBiYjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDEyLTA2LTA0ICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXVtX
SzJdIEltcGxlbWVudCBBUEkgZm9yIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMgaW4g
dGhlIEdUSyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Mzg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgbmV3IGtpbmQgb2YgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBzdXBwb3J0aW5n
IHRoZQorICAgICAgICBHZW9sb2NhdGlvbiBBUEkgaW4gV2ViS2l0MkdUSysuCisKKyAgICAgICAg
TmV3IFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgY2xhc3MsIGltcGxlbWVudGlu
ZyB0aGUKKyAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgaW50ZXJmYWNlLCB0byBlbmFi
bGluZyBjbGllbnQgYXBwbGljYXRpb25zCisgICAgICAgIHRvIGFsbG93IG9yIGRlbnkgZ2VvbG9j
YXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06IEFkZGVkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1p
c3Npb25fcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgorCisgICAgICAg
IEluY2x1ZGUgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gV2ViS2l0UHJpdmF0
ZS5oLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGl0IGZyb20gdGhlIG5ldyBXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0IGNsYXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGRlZCBuZXcgaW5jbHVkZS4KKworICAgICAgICBJbXBsZW1l
bnQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0cyBpbiB0aGUgVUkgY2xpZW50LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAo
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6IENyZWF0ZSBhIG5l
dworICAgICAgICBpbnN0YW5jZSBvZiB0aGUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCBjbGFzcyBhbmQgY2FsbAorICAgICAgICB0byB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Np
b25SZXF1ZXN0KCkuCisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6IFByb3ZpZGUgYW4g
aW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yCisgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oOiBBZGQgbmV3IGVsZW1lbnQgdG8KKyAgICAgICAgV2ViS2l0UGVybWlzc2lv
blJlcXVlc3RUeXBlIGVudW1lcmF0aW9uIGZvciBnZW9sb2NhdGlvbiByZXF1ZXN0cy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZGVkIGhlYWRlciBmaWxlIGZvcgor
ICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisKKyAgICAgICAgTmV3
IHVuaXQgdGVzdHMgdG8gdGVzdCBhbGxvd2luZyBhbmQgZGVueWluZyBwZXJtaXNzaW9uIHJlcXVl
c3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdHMpOiBOZXcgdGVz
dCB0aGF0IGxvYWRzIGEgc2ltcGxlIEhUTUwKKyAgICAgICAgd2l0aCBKYXZhU2NyaXB0IGNvZGUg
cmVxdWVzdGluZyB0aGUgY3VycmVudCBsb2NhdGlvbi4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFk
ZGVkIG5ldyB0ZXN0LgorCisgICAgICAgIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoK
KworMjAxMi0wNi0wNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CisKICAgICAgICAgW0dUS11bV0syXSBJbXBsZW1lbnQgZ2VvbG9jYXRpb24gcHJvdmlkZXIgZm9y
IHRoZSBHVEsgcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODM4NzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNGNjMDk0MTQ0
NzlmNzM2ZGVlYmEzYzk5ODhhOTVkYTAyNWQyYTJkYy4uZTM0NWQ5MmYyNDhjNThmZTRkNzdkMDE4
NGYyZTk1OTBhZmVjMzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NSw2
ICs5NSw3IEBAIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RXJyb3IuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGaW5kQ29udHJvbGxlci5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE1pbWVJbmZvLmggXApAQCAtNTEzLDYgKzUxNCw3IEBAIHdlYmtpdDJf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xp
Y3lMaXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCBcCkBAIC01ODQs
NiArNTg2LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZ1bGxzY3JlZW5DbGllbnQuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGdWxsc2NyZWVuQ2xpZW50Lmgg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRl
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRH
ZW9sb2NhdGlvblByb3ZpZGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmMTg2ODQyMjA0ZmY1OTkxM2U0NjliOGFiYmE5
ZDU4OTMxNTMwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgi
CisKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisKKy8qKgorICogU0VDVElP
TjogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0
aW9uOiBBIHBlcm1pc3Npb24gcmVxdWVzdCBmb3Igc2hhcmluZyB1c2VyJ3MgbG9jYXRpb24KKyAq
IEBUaXRsZTogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICogQFNlZV9hbHNv
OiAjV2ViS2l0UGVybWlzc2lvblJlcXVlc3QsICNXZWJLaXRXZWJWaWV3CisgKgorICogV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAq
IHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBwcm92aWRlIHRoZSB1
c2VyJ3MKKyAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0ZSB3aGVuIHJlcXVlc3RlZCB0aHJvdWdodCB0
aGUgR2VvbG9jYXRpb24gQVBJLgorICovCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9y
ZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKK0df
REVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qs
IHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVf
UEVSTUlTU0lPTl9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCitz
dHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKKyAgICBX
S1JldGFpblB0cjxXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IHdrUmVxdWVzdDsK
KyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVz
dCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYg
KHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocHJpdi0+d2tSZXF1ZXN0LmdldCgpKTsKKyAgICBwcml2
LT5tYWRlRGVjaXNpb24gPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkt
PnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUuCisgICAgaWYgKHBy
aXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0RGVueShwcml2LT53a1JlcXVlc3QuZ2V0KCkpOworICAgIHByaXYtPm1h
ZGVEZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZhY2Up
Cit7CisgICAgaWZhY2UtPmFsbG93ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEFsbG93OworICAgIGlmYWNlLT5kZW55ID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdERlbnk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9u
X3JlcXVlc3RfaW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIHJlcXVlc3QtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVx
dWVzdCwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk7CisgICAgbmV3IChyZXF1ZXN0LT5w
cml2KSBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUoR09i
amVjdCogb2JqZWN0KQoreworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmpl
Y3QpLT5wcml2OworCisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lvbiBo
YXMgYmVlbiBtYWRlIGlzIGRlbnlpbmcgdGhlIHJlcXVlc3QuCisgICAgaWYgKCFwcml2LT5tYWRl
RGVjaXNpb24pCisgICAgICAgIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnkocHJp
di0+d2tSZXF1ZXN0LmdldCgpKTsKKworICAgIHByaXYtPn5XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9nZW9sb2Nh
dGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
K30KKworc3RhdGljIHZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9j
bGFzc19pbml0KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNz
KTsKKyAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0RmluYWxpemU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBz
aXplb2YoV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUpKTsKK30KKwor
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZShXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgd2tS
ZXF1ZXN0KQoreworICAgIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIGdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9S
RVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1QsIE5VTEwpKTsKKyAgICBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LT5wcml2LT53
a1JlcXVlc3QgPSB3a1JlcXVlc3Q7CisgICAgcmV0dXJuIGdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDMzYjYzZjdlZjU1MzQ2NjY5MjdhZmRkZTEwZDlkMzk2ODFjODI0MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93
ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBX
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZp
bmUgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUICAgICAgICAgICAg
KHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9HRU9MT0NBVElP
Tl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qp
KQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05f
UkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJL
SVRfSVNfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JF
UVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAg
V0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q2xhc3MgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUg
V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisK
KyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9n
ZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZkZTY4
NzUzMTUwOWJhZWU2YmZhN2ZjODJjMzg3NTU0NmU1OTFkYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
aXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXS0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYpOworCisjZW5kaWYgLy8gV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDQ0YmQzNTA2NmVmZWMwZWIwZDZi
NDZjNTkwOTU1ODFhY2RmZTQ0ZDMuLjM5ZmU2NzUxMGE1YWNkN2MzYmQyYTFhZDA4MDcxZmQ4MDk1
NGE0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
cml2YXRlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlv
bnMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tHZW9sb2NhdGlvbk1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9s
b2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0luc3BlY3Rvci5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3JDbGllbnRHdGsuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAyNTQ4ZDdi
NzIzYTE5NGQzY2JlZDBkMmQ3Mzk3NzQxNzUwMGI3YWUyLi43ZDRlZWRmYjZiYWViN2RiM2NmYjIw
NjljNDBlMmU2MmY0YmRkODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0VUlDbGllbnQuaCIKIAogI2luY2x1ZGUgIldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgpAQCAt
MTQ0LDYgKzE0NSwxMiBAQCBzdGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgIHdlYmtpdFdlYlZp
ZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCByZXF1
ZXN0LmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKHJlcXVlc3QpKTsKKyAgICB3ZWJraXRX
ZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwg
V0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmdl
dCgpKSk7Cit9CisKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB3a1VJQ2xpZW50ID0gewpAQCAtMTc4LDcgKzE4
NSw3IEBAIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgMCwgLy8gcGFnZURpZFNjcm9sbAogICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFi
YXNlUXVvdGEKICAgICAgICAgcnVuT3BlblBhbmVsLAotICAgICAgICAwLCAvLyBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIDAsIC8vIGhlYWRlckhlaWdo
dAogICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKICAgICAgICAgMCwgLy8gZHJhd0hlYWRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggOTAwMDVhY2IyYWMyZWMwMTllZGFjYzgxZTNlN2E0MjY4
ZmRjNzNmMC4uYzhjNTJkMWE3YzQxMDc4ZWIwNTg4NmI5ZGUwMTJiMzc5MmQ5N2Y5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sCkBAIC0yMiw2ICsyMiw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdERvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0UG9saWN5RGVjaXNpb24ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi54bWwiLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CmluZGV4IDZkZGUwODY2ZDRmNjdjYjQ5ZjM3MTc2ZjE2M2UyNzMz
MTZlMGM3ZDQuLmM2ZGNhYTM5NjgzZWU2MjMxN2M2OGE2Nzc3NjdmZGI2ZjJmNmQ4MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMzg4LDYgKzM4OCwyNCBAQCB3ZWJraXRfcGVybWlz
c2lvbl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDwvRklMRT4KK1dlYktpdEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1J
U1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VC
S0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJ
T05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVF9H
RVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0
X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0UG9saWN5RGVj
aXNpb248L0ZJTEU+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lv
bl9kb3dubG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZlZGU1MzNkNGE5MDdjZGZl
MDE2NzllNTQzMzM4NTQzZjY2YTYxZWIuLjUxMDA2ZGYyYjEzNmQ5NDI4N2U4NTdkNTNhNzM2Yjdi
NTg2NzM5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTE5LDYgKzE5LDggQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMjc4
LDE1ICsyODAsMzAgQEAgcHVibGljOgogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1f
bWFpbkxvb3ApOwogICAgIH0KIAorICAgIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVz
dGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgVUlD
bGllbnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1J
U1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworCisgICAgICAgIGlmICh0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzKQorICAgICAgICAgICAgd2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
d2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworCisgICAgICAgIHJldHVy
biBUUlVFOworICAgIH0KKwogICAgIFVJQ2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHRE
aWFsb2dUeXBlKFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0
RGlhbG9nQ29uZmlybWVkKHRydWUpCisgICAgICAgICwgbV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0
cyhmYWxzZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7
CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFD
Syh2aWV3Q3JlYXRlKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3
LCAic2NyaXB0LWRpYWxvZyIsIEdfQ0FMTEJBQ0soc2NyaXB0RGlhbG9nKSwgdGhpcyk7CiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBH
X0NBTExCQUNLKG1vdXNlVGFyZ2V0Q2hhbmdlZCksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVybWlz
c2lvblJlcXVlc3RlZCksIHRoaXMpOwogICAgIH0KIAogICAgIH5VSUNsaWVudFRlc3QoKQpAQCAt
MzE0LDYgKzMzMSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJW
aWV3RXZlbnRzOwogICAgIFdlYktpdFNjcmlwdERpYWxvZ1R5cGUgbV9zY3JpcHREaWFsb2dUeXBl
OwogICAgIGJvb2wgbV9zY3JpcHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2FsbG93UGVy
bWlzc2lvblJlcXVlc3RzOwogICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVz
OwogICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAg
ICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3Vs
dDsKQEAgLTQ0OSw2ICs0NjcsNDIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdNb3VzZVRhcmdl
dChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3Qt
Pm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Bl
cm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGdlb2xvY2F0aW9uUmVxdWVzdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAg
ICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVzdCgpIgorICAgICAg
ICAiICB7IgorICAgICAgICAiICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZnVuY3Rpb24ocCkgeyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIiB9LCIKKyAgICAgICAg
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUp
IHsgZG9jdW1lbnQudGl0bGUgPSBlLmNvZGUgfSk7IgorICAgICAgICAiICB9IgorICAgICAgICAi
ICA8L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5IG9ubG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5
PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lv
biByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsK
KyAgICB0ZXN0LT5sb2FkSHRtbChnZW9sb2NhdGlvblJlcXVlc3RIVE1MLCAwKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKKworICAgIC8vIEFjY29yZGluZyB0byB0aGUgR2Vv
bG9jYXRpb24gQVBJIHNwZWNpZmljYXRpb24sICcxJyBpcyB0aGUKKyAgICAvLyBlcnJvciBjb2Rl
IHJldHVybmVkIGZvciB0aGUgUEVSTUlTU0lPTl9ERU5JRUQgZXJyb3IuCisgICAgLy8gaHR0cDov
L2Rldi53My5vcmcvZ2VvL2FwaS9zcGVjLXNvdXJjZS5odG1sI3Bvc2l0aW9uX2Vycm9yX2ludGVy
ZmFjZQorICAgIGNvbnN0IGdjaGFyKiByZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxl
KHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdCwgPT0sICIxIik7
CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3Qt
Pm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSB0cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKGdl
b2xvY2F0aW9uUmVxdWVzdEhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdl
ZCgpOworCisgICAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWQgbm90IGdldCB0aGUgUEVSTUlTU0lPTl9E
RU5JRUQgZXJyb3Igbm93LgorICAgIHJlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUo
dGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0LCAhPSwgIjEiKTsK
K30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdab29tTGV2ZWwoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiB7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X3dlYl92aWV3
X2dldF96b29tX2xldmVsKHRlc3QtPm1fd2ViVmlldyksID09LCAxKTsKQEAgLTczMCw2ICs3ODQs
NyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAiamF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRp
ZXMiLCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQp
OworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBlcm1pc3Npb24tcmVx
dWVzdHMiLCB0ZXN0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ6b29tLWxldmVsIiwgdGVzdFdlYlZpZXdab29tTGV2ZWwp
OwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicnVuLWphdmFzY3JpcHQi
LCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQpOwogICAgIEZpbGVDaG9vc2VyVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdGaWxlQ2hv
b3NlclJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
CmluZGV4IGNjNWMzNDllMmNmOTYyNGMzODgxOTNlMTIwZDUxMWY1YjM3ZTI1NzEuLjYxM2I4MjY0
YWEyOTJjNDk5MjBkMWY2NjE0YzUwMzRhNjMzYzYwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRIaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRNaW1lSW5m
by5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGNlNTgzMThiMDJiYjQ3NzA3ZTM2ODk5YzUxNWZmYzU1YjRmNDFjZjAuLjMxZTFmODlmYWY5NzY0
N2QwYzAwOGM2MjZhMDBmOTE1YThkZGYwMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMi0wNi0wNCAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bV0sy
XSBJbXBsZW1lbnQgQVBJIGZvciBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3RzIGluIHRo
ZSBHVEsgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODM4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIG1pbmlicm93c2VyIGNvbm5lY3QgdG8gdGhlIG5ldyAncGVybWlzc2lvbiByZXF1ZXN0
cycgc2lnbmFsCisgICAgICAgIHRvIGFsbG93IHVzZXJzIGhhbmRsZSB0aGUgR2VvbG9jYXRpb24g
cGVybWlzc2lvbiByZXF1ZXN0cy4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmM6CisgICAgICAgIChnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayk6IENh
bGxiYWNrIGZvciB0aGUgZGlhbG9nIGFza2luZworICAgICAgICB0aGUgdXNlciBmb3IgYWxsb3dp
bmcgb3Igbm90IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdHMuCisgICAgICAgICh3ZWJW
aWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOiBMYXVuY2ggYSBkaWFsb2cgdG8gYXNrIHRoZSB1
c2VyCisgICAgICAgIHdoZXRoZXIgdG8gYWxsb3cgb3IgZGVueSBnZW9sb2NhdGlvbiBwZXJtaXNz
aW9uIHJlcXVlc3RzLgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ29ubmVj
dCB0byAncGVybWlzc2lvbi1yZXF1ZXN0JyBzaWduYWwuCisKKzIwMTItMDYtMDQgIE1hcmlvIFNh
bmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdW1dLMl0g
SW1wbGVtZW50IGdlb2xvY2F0aW9uIHByb3ZpZGVyIGZvciB0aGUgR1RLIHBvcnQKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODc3CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDY4MTAxNjY3ZGQ4OGM5M2Y5ODJmMTIzNTc3
MDBjMDg3NjM0YThlODIuLmNlZjllN2Q0NjY0MTEzZWJmZjBhMzA0OGFhOTQ3YmJhOTc2YzA3YTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjEzLDYgKzIxMywyMSBA
QCBzdGF0aWMgdm9pZCBiYWNrRm9yd2FkbGlzdENoYW5nZWQoV2ViS2l0QmFja0ZvcndhcmRMaXN0
ICpiYWNrRm9yd2FkbGlzdCwgV2ViS2l0QgogICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZpZ2F0
aW9uQWN0aW9ucyh3aW5kb3csIGJhY2tGb3J3YWRsaXN0KTsKIH0KIAorc3RhdGljIHZvaWQgZ2Vv
bG9jYXRpb25SZXF1ZXN0RGlhbG9nQ2FsbGJhY2soR3RrRGlhbG9nICpkaWFsb2csIGdpbnQgcmVz
cG9uc2UsIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIHN3aXRjaCAo
cmVzcG9uc2UpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9ZRVM6CisgICAgICAgIHdlYmtpdF9w
ZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueShyZXF1ZXN0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURH
RVQoZGlhbG9nKSk7CisgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdCk7Cit9CisKIHN0YXRpYyB2
b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3
aW5kb3cpCiB7CiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQod2luZG93KSk7CkBA
IC0yNzcsNiArMjkyLDI0IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdl
YktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uCiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUGVybWlzc2lvblJlcXVlc3Qo
V2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3Qs
IEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAoIVdFQktJVF9JU19HRU9MT0NBVElP
Tl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKwor
ICAgIEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhHVEtfV0lORE9X
KHdpbmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX1FV
RVNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
VEtfQlVUVE9OU19ZRVNfTk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJHZW9sb2NhdGlvbiByZXF1ZXN0Iik7CisKKyAgICBndGtfbWVzc2FnZV9kaWFs
b2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0KEdUS19NRVNTQUdFX0RJQUxPRyhkaWFsb2cpLCAiQWxs
b3cgZ2VvbG9jYXRpb24gcmVxdWVzdD8iKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywg
InJlc3BvbnNlIiwgR19DQUxMQkFDSyhnZW9sb2NhdGlvblJlcXVlc3REaWFsb2dDYWxsYmFjayks
IGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisK
KyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQgd2ViVmlld01vdXNlVGFyZ2V0Q2hh
bmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRUZXN0
UmVzdWx0LCBndWludCBtb3VzZU1vZGlmaWVycywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewog
ICAgIGlmICghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJl
c3VsdCkpIHsKQEAgLTQzNCw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93Q29u
c3RydWN0ZWQoR09iamVjdCAqZ09iamVjdCkKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+
d2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0NyZWF0ZSksIHdpbmRvdyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FM
TEJBQ0sod2ViVmlld0xvYWRGYWlsZWQpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2luZG93LT53ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0sod2ViVmlld0RlY2lk
ZVBvbGljeSksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNLKHdlYlZpZXdEZWNpZGVQZXJtaXNzaW9u
UmVxdWVzdCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJtb3VzZS10YXJnZXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld01vdXNlVGFyZ2V0Q2hh
bmdlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJu
b3RpZnk6Onpvb20tbGV2ZWwiLCBHX0NBTExCQUNLKHdlYlZpZXdab29tTGV2ZWxDaGFuZ2VkKSwg
d2luZG93KTsKIAo=
</data>
<flag name="review"
          id="152898"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>