<?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>125463</bug_id>
          
          <creation_ts>2013-12-09 11:58:06 -0800</creation_ts>
          <short_desc>[GTK] Add API to allow setting the process model in WebKitWebContext</short_desc>
          <delta_ts>2014-01-28 02:18:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>108832</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958030</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-09 11:58:06 -0800</bug_when>
    <thetext>We need a new API to allow setting the process model in the GTK port.

This depends on https://bugs.webkit.org/show_bug.cgi?id=108832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958032</commentid>
    <comment_count>1</comment_count>
      <attachid>218785</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-09 12:01:52 -0800</bug_when>
    <thetext>Created attachment 218785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958033</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 12:03:19 -0800</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>958234</commentid>
    <comment_count>3</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-10 00:52:04 -0800</bug_when>
    <thetext>Unit test is missing, I will be updated the patch soon to add an unit test
for the process model setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958817</commentid>
    <comment_count>4</comment_count>
      <attachid>218982</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-11 11:23:30 -0800</bug_when>
    <thetext>Created attachment 218982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958821</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 11:26:09 -0800</bug_when>
    <thetext>Attachment 218982 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Tools/MiniBrowser/gtk/main.c&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Tools/MiniBrowser/gtk/main.c:245:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h&quot;
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958841</commentid>
    <comment_count>6</comment_count>
      <attachid>218989</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-11 11:48:59 -0800</bug_when>
    <thetext>Created attachment 218989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959113</commentid>
    <comment_count>7</comment_count>
      <attachid>218989</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-12-12 01:48:18 -0800</bug_when>
    <thetext>Comment on attachment 218989
Patch

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

Overall looks good but we need unit tests for new API, check http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API

&gt; Source/WebKit2/ChangeLog:7
&gt; +

Short description needed here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:843
&gt; + * %WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS is suitable for most

s/is/which is/ ?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:852
&gt; + *

In general I think the API description shouldn&apos;t be like this. We should explain the difference of having just one or multiple web processes instead of describing the benefits, Also one process per view is not totally correct, new processes are created for new browsing contexts, we might explain what it means in the docs as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:859
&gt; +void webkit_web_context_set_process_model(WebKitWebContext* context, WebKitProcessModel process_model)

processModel you have to use CamelCase. You should use a different name for the local variable as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:78
&gt; + *

OK so this is the description I was looking for. Then I guess you should link this somehow in the webkit_web_context_set_process_model() docs.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:234
&gt; +                                                     WebKitProcessModel             process_model);

processModel

&gt; Tools/MiniBrowser/gtk/main.c:244
&gt; +    const gchar *minibrowser = g_getenv(&quot;MINIBROWSER_MULTIPROCESS&quot;);

It&apos;d be nice to know if Mac is using something like this and use the same variable name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961335</commentid>
    <comment_count>8</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-19 03:18:13 -0800</bug_when>
    <thetext>Changed dependencies. To make the unit tests with multiple web
processes what it is better is to be able to coordinate setting
up the ui-process &lt;-&gt; web-processes communications. For that, the
patch in bug #125990 is more suitable.

Sergio: I will be addressing the issues you comment and adding
the unit tests, thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970227</commentid>
    <comment_count>9</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-21 06:13:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 218989 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218989&amp;action=review
 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:234
&gt; &gt; +                                                     WebKitProcessModel             process_model);
&gt; 
&gt; processModel

This is a public API header, so it follow the GObject convention of
using “lowercase_with_underscores” for argument names.
 
&gt; &gt; Tools/MiniBrowser/gtk/main.c:244
&gt; &gt; +    const gchar *minibrowser = g_getenv(&quot;MINIBROWSER_MULTIPROCESS&quot;);
&gt; 
&gt; It&apos;d be nice to know if Mac is using something like this and use the same variable name.

It seems that multi-process mode is the default for Mac — there is no
toggle for changing the process mode in the Mac MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970440</commentid>
    <comment_count>10</comment_count>
      <attachid>221792</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-21 14:56:57 -0800</bug_when>
    <thetext>Created attachment 221792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970444</commentid>
    <comment_count>11</comment_count>
      <attachid>221792</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-21 15:13:15 -0800</bug_when>
    <thetext>Comment on attachment 221792
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:910
&gt; + * This method &lt;strong&gt;must be called before any other functions&lt;/string&gt;,

Typo: &lt;/string&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970641</commentid>
    <comment_count>12</comment_count>
      <attachid>221848</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-22 02:58:32 -0800</bug_when>
    <thetext>Created attachment 221848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970644</commentid>
    <comment_count>13</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-22 03:00:23 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 221792 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221792&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:910
&gt; &gt; + * This method &lt;strong&gt;must be called before any other functions&lt;/string&gt;,
&gt; 
&gt; Typo: &lt;/string&gt;.

This is fixed in the new version of the patch I have just uploaded.
Also, this new version uses WTF::getCurrentProcessID() instead of
getpid().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971543</commentid>
    <comment_count>14</comment_count>
      <attachid>221848</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-24 00:45:37 -0800</bug_when>
    <thetext>Comment on attachment 221848
Patch

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

This looks great in general, I have a few comments.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:900
&gt; + * determine how auxiliary processes are handled. The default setting is
&gt; + * %WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS is suitable for most

The default setting is - is

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:902
&gt; + * display documents which is considered safe -- like local files.

is -&gt; are

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:931
&gt; +    switch (processModel) {
&gt; +    case WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS:
&gt; +        newProcessModel = ProcessModelSharedSecondaryProcess;
&gt; +        break;
&gt; +    case WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES:
&gt; +        newProcessModel = ProcessModelMultipleSecondaryProcesses;
&gt; +        break;
&gt; +    default:
&gt; +        g_assert_not_reached();
&gt; +    }

I think we can use the same values and add a compile assert macro to make sure they match. That way we don&apos;t need the switches.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:945
&gt; + * check the documentation of the function
&gt; + * webkit_web_context_set_process_model().

the function will be a link in the doc, so you can simply say 

For more information about this value see webkit_web_context_set_process_model().

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:948
&gt; + */

Since: 2.4

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:80
&gt; + */

Since: 2.4

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:84
&gt; +typedef enum {
&gt; +    WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS,
&gt; +    WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES
&gt; +} WebKitProcessModel;

I have some doubts about the names. This is actually about web processes, so maybe it should be called WebKitWebProcessModel, but it&apos;s true that all other processes are transparent from the API point of view, so it&apos;s probably fine to use WebKitProcessModel. MULTIPLE_SECONDARY_PROCESSES is too generic, I&apos;m thinking of a possible future model of one process per security domain or something like that. So we might call the current one WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW or something like that. What do you think?

&gt; Tools/MiniBrowser/gtk/main.c:244
&gt; +    const gchar *minibrowser = g_getenv(&quot;MINIBROWSER_MULTIPROCESS&quot;);

The name of the variable is a bit confusing, I would use multiprocess instead.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:27
&gt; +class MultiprocessTest;
&gt; +static void loadChanged(WebKitWebView*, WebKitLoadEvent, MultiprocessTest*);

Add the callback as a static method of the class and you don&apos;t need this forward declarations.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:31
&gt; +static guint initializeWebExtensionsSignalCount = 0;
&gt; +static WebKitTestBus* bus = nullptr;

You don&apos;t need to initialize globals to 0. Use unsigned instead of guint.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:35
&gt; +    static const guint NUM_VIEWS = 2;

Use unsigned. The name of the variable should be numViews or viewsCount but in camel case.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:41
&gt; +        : m_mainLoop(g_main_loop_new(0, TRUE))

Use nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:46
&gt; +        for (guint i = 0; i &lt; NUM_VIEWS; i++) {
&gt; +            m_webView[i] = nullptr;
&gt; +            m_webViewId[i] = 0;
&gt; +        }

If you use Vectors, you don&apos;t need this.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:52
&gt; +        for (guint i = 0; i &lt; NUM_VIEWS; i++)
&gt; +            g_object_unref(m_webView[i]);

Nor this either.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:56
&gt; +    void setupWebView(guint index) 

Use unsigned. This is called setupWebView, but loads something and spins a main loop. I would call this loadWebViewAndWaitUntilFinished()

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:58
&gt; +        g_assert(index &lt; NUM_VIEWS);

g_assert_cmpuint(index, &lt;, maxViewsCount);

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:60
&gt; +        m_webView[index] = WEBKIT_WEB_VIEW(g_object_ref_sink(webkit_web_view_new()));

Use assertObjectIsDeletedWhenTestFinishes() to make sure we don&apos;t leak the views. We can use GrefPtr without adoptGRef to sink the floating ref.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:66
&gt; +    guint webProcessPid(guint index)

Use unsigned.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:68
&gt; +        g_assert(index &lt; NUM_VIEWS);

g_assert_cmpuint(index, &lt;, maxViewsCount);

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:72
&gt; +        GOwnPtr&lt;gchar&gt; busName(g_strdup_printf(&quot;org.webkit.gtk.WebExtensionTest%u&quot;, m_webViewId[index]));

The web view id is only used for this, we could save the bus name directly. Vector&lt;GUniquePtr&lt;char&gt;, 2&gt; m_webViewBusNames;

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:81
&gt; +            -1, 0, 0));

Use nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:90
&gt; +    guint m_webViewId[2];

This could be Vector&lt;GUniquePtr&lt;char&gt;, 2&gt; m_webViewBusNames; as I suggested before.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:91
&gt; +    WebKitWebView* m_webView[2];

And this Vector&lt;GRefPtr&lt;WebKitWebView&gt;, 2&gt; m_webViews;

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:101
&gt; +static void loadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent, MultiprocessTest* test)
&gt; +{
&gt; +    if (loadEvent != WEBKIT_LOAD_FINISHED)
&gt; +        return;
&gt; +    g_signal_handlers_disconnect_by_func(webView, reinterpret_cast&lt;void*&gt;(loadChanged), test);
&gt; +    g_main_loop_quit(test-&gt;m_mainLoop);
&gt; +}

Move this to the class

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:113
&gt; +    test-&gt;setupWebView(0);
&gt; +    test-&gt;setupWebView(1);

Move the asserts you are doing in webProcessPid here.

test-&gt;loadWebViewAndWaitUntilFinished(0);
g_assert(WEBKIT_IS_WEB_VIEW(test-&gt;m_webViews[0].get()));
g_assert(test-&gt;m_webViewBusNames[0]);

test-&gt;loadWebViewAndWaitUntilFinished(1);
g_assert(WEBKIT_IS_WEB_VIEW(test-&gt;m_webViews[1].get()));
g_assert(test-&gt;m_webViewBusNames[1]);

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:115
&gt; +    g_assert_cmpuint(initializeWebExtensionsSignalCount, ==, 2);

We can make NUM_VIEWS constant global and use it here too.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:272
&gt; +static gchar* makeBusName(GVariant* userData)

GUniquePtr&lt;char&gt;

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:291
&gt; +    GOwnPtr&lt;gchar&gt; busName(makeBusName(userData));

GUniquePtr&lt;char&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972192</commentid>
    <comment_count>15</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-26 08:25:03 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt;
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:931
&gt; &gt; +    switch (processModel) {
&gt; &gt; +    case WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS:
&gt; &gt; +        newProcessModel = ProcessModelSharedSecondaryProcess;
&gt; &gt; +        break;
&gt; &gt; +    case WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES:
&gt; &gt; +        newProcessModel = ProcessModelMultipleSecondaryProcesses;
&gt; &gt; +        break;
&gt; &gt; +    default:
&gt; &gt; +        g_assert_not_reached();
&gt; &gt; +    }
&gt; 
&gt; I think we can use the same values and add a compile assert macro to make sure they match. That way we don&apos;t need the switches.

I would rather keep the switches, read on below…

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:84
&gt; &gt; +typedef enum {
&gt; &gt; +    WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS,
&gt; &gt; +    WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES
&gt; &gt; +} WebKitProcessModel;
&gt; 
&gt; I have some doubts about the names. This is actually about web processes, so maybe it should be called WebKitWebProcessModel, but it&apos;s true that all other processes are transparent from the API point of view, so it&apos;s probably fine to use WebKitProcessModel. MULTIPLE_SECONDARY_PROCESSES is too generic, I&apos;m thinking of a possible future model of one process per security domain or something like that. So we might call the current one WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW or something like that. What do you think?

Right, …_SECONDARY_PROCESS_PER_WEB_VIEW better describes what the
mode implies, so I also think it is a good idea to go with that name.
Provided that the names of process models exposed in the API are not
going to match the names used internally, and that the mapping is not
exactly 1:1 (example: SECONDARY_PROCESS_PER_WEB_VIEW also enables the
network process), I think that keeping the switches better represents
that — even when at the moment the mapping quite direct right now.

Apart that for the moment I am keeping the switches, the rest of the
issues should be solved in the new version of the patch I am uploading
in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972193</commentid>
    <comment_count>16</comment_count>
      <attachid>222273</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-26 08:26:02 -0800</bug_when>
    <thetext>Created attachment 222273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972195</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-26 08:33:59 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt;
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:931
&gt; &gt; &gt; +    switch (processModel) {
&gt; &gt; &gt; +    case WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS:
&gt; &gt; &gt; +        newProcessModel = ProcessModelSharedSecondaryProcess;
&gt; &gt; &gt; +        break;
&gt; &gt; &gt; +    case WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES:
&gt; &gt; &gt; +        newProcessModel = ProcessModelMultipleSecondaryProcesses;
&gt; &gt; &gt; +        break;
&gt; &gt; &gt; +    default:
&gt; &gt; &gt; +        g_assert_not_reached();
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; I think we can use the same values and add a compile assert macro to make sure they match. That way we don&apos;t need the switches.
&gt; 
&gt; I would rather keep the switches, read on below…
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:84
&gt; &gt; &gt; +typedef enum {
&gt; &gt; &gt; +    WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS,
&gt; &gt; &gt; +    WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES
&gt; &gt; &gt; +} WebKitProcessModel;
&gt; &gt; 
&gt; &gt; I have some doubts about the names. This is actually about web processes, so maybe it should be called WebKitWebProcessModel, but it&apos;s true that all other processes are transparent from the API point of view, so it&apos;s probably fine to use WebKitProcessModel. MULTIPLE_SECONDARY_PROCESSES is too generic, I&apos;m thinking of a possible future model of one process per security domain or something like that. So we might call the current one WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW or something like that. What do you think?
&gt; 
&gt; Right, …_SECONDARY_PROCESS_PER_WEB_VIEW better describes what the
&gt; mode implies, so I also think it is a good idea to go with that name.
&gt; Provided that the names of process models exposed in the API are not
&gt; going to match the names used internally, and that the mapping is not
&gt; exactly 1:1 (example: SECONDARY_PROCESS_PER_WEB_VIEW also enables the
&gt; network process), I think that keeping the switches better represents
&gt; that — even when at the moment the mapping quite direct right now.

That&apos;s why I suggested to add a compile assert, I don&apos;t think it&apos;s that important that the name matches exactly as long as it&apos;s obvious it&apos;s the same thing. The mapping is indeed 1:1, the network process is not a process model. WebKit internally expects the network process to be enabled when multiple web process model is set, there are several asserts to ensure that, see WebContext::networkingProcessConnection() for example.

&gt; Apart that for the moment I am keeping the switches, the rest of the
&gt; issues should be solved in the new version of the patch I am uploading
&gt; in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972202</commentid>
    <comment_count>18</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-26 09:19:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt;
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:931
&gt; &gt; &gt; &gt; +    switch (processModel) {
&gt; &gt; &gt; &gt; +    case WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS:
&gt; &gt; &gt; &gt; +        newProcessModel = ProcessModelSharedSecondaryProcess;
&gt; &gt; &gt; &gt; +        break;
&gt; &gt; &gt; &gt; +    case WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES:
&gt; &gt; &gt; &gt; +        newProcessModel = ProcessModelMultipleSecondaryProcesses;
&gt; &gt; &gt; &gt; +        break;
&gt; &gt; &gt; &gt; +    default:
&gt; &gt; &gt; &gt; +        g_assert_not_reached();
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we can use the same values and add a compile assert macro to make sure they match. That way we don&apos;t need the switches.
&gt; &gt; 
&gt; &gt; I would rather keep the switches, read on below…
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:84
&gt; &gt; &gt; &gt; +typedef enum {
&gt; &gt; &gt; &gt; +    WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS,
&gt; &gt; &gt; &gt; +    WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES
&gt; &gt; &gt; &gt; +} WebKitProcessModel;
&gt; &gt; &gt; 
&gt; &gt; &gt; I have some doubts about the names. This is actually about web processes, so maybe it should be called WebKitWebProcessModel, but it&apos;s true that all other processes are transparent from the API point of view, so it&apos;s probably fine to use WebKitProcessModel. MULTIPLE_SECONDARY_PROCESSES is too generic, I&apos;m thinking of a possible future model of one process per security domain or something like that. So we might call the current one WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW or something like that. What do you think?
&gt; &gt; 
&gt; &gt; Right, …_SECONDARY_PROCESS_PER_WEB_VIEW better describes what the
&gt; &gt; mode implies, so I also think it is a good idea to go with that name.
&gt; &gt; Provided that the names of process models exposed in the API are not
&gt; &gt; going to match the names used internally, and that the mapping is not
&gt; &gt; exactly 1:1 (example: SECONDARY_PROCESS_PER_WEB_VIEW also enables the
&gt; &gt; network process), I think that keeping the switches better represents
&gt; &gt; that — even when at the moment the mapping quite direct right now.
&gt; 
&gt; That&apos;s why I suggested to add a compile assert, I don&apos;t think it&apos;s that important that the name matches exactly as long as it&apos;s obvious it&apos;s the same thing. The mapping is indeed 1:1, the network process is not a process model. WebKit internally expects the network process to be enabled when multiple web process model is set, there are several asserts to ensure that, see WebContext::networkingProcessConnection() for example.

Well, it&apos;s not like I have a strong preference for the switches, so I am
removing them. If they would be needed in the future, they would be added
later on, I presume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972203</commentid>
    <comment_count>19</comment_count>
      <attachid>222275</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-26 09:20:55 -0800</bug_when>
    <thetext>Created attachment 222275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972356</commentid>
    <comment_count>20</comment_count>
      <attachid>222275</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-27 00:45:51 -0800</bug_when>
    <thetext>Comment on attachment 222275
Patch

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

This looks great to me. We need the approval from another WebKitGTK+ reviewer, since this introduces new public API.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        used. Setting WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES

WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:895
&gt; +static_assert(WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS == ProcessModelSharedSecondaryProcess,
&gt; +    &quot;ProcessModel and WebKitProcessModel enum values do not have the same integral value&quot;);
&gt; +static_assert(WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW == ProcessModelMultipleSecondaryProcesses,
&gt; +    &quot;ProcessModel and WebKitProcessModel enum values do not have the same integral value&quot;);

We have macros for this, see COMPILE_ASSERT_MATCHING_ENUM in WebKitPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:910
&gt; + * %WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES to use one auxiliary

WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:925
&gt; +        context-&gt;priv-&gt;context-&gt;setUsesNetworkProcess(processModel == ProcessModelMultipleSecondaryProcesses);

We should probably remove the WEBKIT_USE_NETWORK_PROCESS env var.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:70
&gt; + *   #WebKitWebView instances created by the application. If the secondary
&gt; + *   This is the default process model, and it should suffice for most cases.

If the secondary This is the default?

&gt; Tools/MiniBrowser/gtk/main.c:244
&gt; +    const gchar *multiprocess= g_getenv(&quot;MINIBROWSER_MULTIPROCESS&quot;);

multiprocess= -&gt; multiprocess =

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:27
&gt; +class MultiprocessTest;

Why do you need this?

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:35
&gt; +

Remove tis empty line.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:105
&gt; +    test-&gt;loadWebViewAndWaitUntilLoaded(0);
&gt; +    g_assert(WEBKIT_IS_WEB_VIEW(test-&gt;m_webViews[0].get()));
&gt; +    g_assert(test-&gt;m_webViewBusNames[0]);
&gt; +
&gt; +    test-&gt;loadWebViewAndWaitUntilLoaded(1);
&gt; +    g_assert(WEBKIT_IS_WEB_VIEW(test-&gt;m_webViews[1].get()));
&gt; +    g_assert(test-&gt;m_webViewBusNames[1]);

Now that I see this, I guess we can use a for loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972387</commentid>
    <comment_count>21</comment_count>
      <attachid>222275</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-27 04:45:02 -0800</bug_when>
    <thetext>Comment on attachment 222275
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:910
&gt;&gt; + * %WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES to use one auxiliary
&gt; 
&gt; WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW

API looks good to me, but can we add ONE before SECONDARY? Sounds a bit weird for me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972395</commentid>
    <comment_count>22</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-27 05:24:19 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 222275 [details])
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:895
&gt; &gt; +static_assert(WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS == ProcessModelSharedSecondaryProcess,
&gt; &gt; +    &quot;ProcessModel and WebKitProcessModel enum values do not have the same integral value&quot;);
&gt; &gt; +static_assert(WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW == ProcessModelMultipleSecondaryProcesses,
&gt; &gt; +    &quot;ProcessModel and WebKitProcessModel enum values do not have the same integral value&quot;);
&gt; 
&gt; We have macros for this, see COMPILE_ASSERT_MATCHING_ENUM in WebKitPrivate.h

Certainly, I have changed the asserts to use the macro. Also, for
the sake of consistency with other files using those, I have moved
the asserts to the top of the “WebKitWebContext.cpp”.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:925
&gt; &gt; +        context-&gt;priv-&gt;context-&gt;setUsesNetworkProcess(processModel == ProcessModelMultipleSecondaryProcesses);
&gt; 
&gt; We should probably remove the WEBKIT_USE_NETWORK_PROCESS env var.

Indeed. Now that this is in place we can get rid of it. The next update
to the patch will have the environment variable check removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972396</commentid>
    <comment_count>23</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-27 05:25:43 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 222275 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222275&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:910
&gt; &gt;&gt; + * %WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES to use one auxiliary
&gt; &gt; 
&gt; &gt; WEBKIT_PROCESS_MODEL_SECONDARY_PROCESS_PER_WEB_VIEW
&gt; 
&gt; API looks good to me, but can we add ONE before SECONDARY? Sounds a bit weird for me otherwise.

Sure, no objection from me. Being it …ONE_SECONDARY_PROCESS_PER_WEB_VIEW
makes the meaning a bit more concrete, which is never a bad thing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972406</commentid>
    <comment_count>24</comment_count>
      <attachid>222323</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-27 06:28:37 -0800</bug_when>
    <thetext>Created attachment 222323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972841</commentid>
    <comment_count>25</comment_count>
      <attachid>222421</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-01-28 01:37:47 -0800</bug_when>
    <thetext>Created attachment 222421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972853</commentid>
    <comment_count>26</comment_count>
      <attachid>222421</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-28 02:18:12 -0800</bug_when>
    <thetext>Comment on attachment 222421
Patch

Clearing flags on attachment: 222421

Committed r162928: &lt;http://trac.webkit.org/changeset/162928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972854</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-28 02:18:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218785</attachid>
            <date>2013-12-09 12:01:52 -0800</date>
            <delta_ts>2013-12-11 11:23:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20131209210255.patch</filename>
            <type>text/plain</type>
            <size>8001</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWU4YmEyNGViZTJjMjY0
ODliNzE4MWM2Mzg2Yjg1OGQ2MGVhYjI2OC4uYzM4NWI3NjkzYTE4YmMxOTA4M2QwMzBhN2JkZTdk
N2RkM2FhNGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTA5ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwpOgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2dldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dDoKKwogMjAxMy0xMi0wOCAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1dLMl0gR3VhcmQgTWFjIHNwZWNpZmljIG5ldHdvcmsg
cHJvY2VzcyBjb2RlIHdpdGggUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBiZTEwYjhlOTQz
MmM1MWM2ZjZmNmMyNjAxNzE0YWNlMjIyYjlkNjkyLi5hZWE3NmI5ODViZDAxYzBmZTcyNGJiY2M1
M2Q2ZjllMDYyNjBmZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjEsOCArNjEsOSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogICogVGhlICNXZWJLaXRXZWJDb250ZXh0IG1hbmFnZXMgYWxsIGFzcGVj
dHMgY29tbW9uIHRvIGFsbAogICogI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMuCiAgKgotICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIHdpdGgKLSAqIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfY2FjaGVfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgorICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIGFuZCAjV2ViS2l0UHJvY2Vzc01vZGVs
IHdpdGgKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSBhbmQKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5l
ZWRzIG9mCiAgKiB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFjY2VzcyB0aGUgI1dlYktpdENv
b2tpZU1hbmFnZXIgb3IgdGhlCiAgKiAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIHRvIHNwZWNpZnkg
dGhlIGJlaGF2aW91ciBvZiB5b3VyIGFwcGxpY2F0aW9uCiAgKiByZWdhcmRpbmcgY29va2llcyBh
bmQgc2VjdXJpdHksIHVzaW5nCkBAIC04MjksNiArODMwLDc2IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRG
OChob3N0KSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21v
ZGVsOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9k
ZWw6IGEgI1dlYktpdFByb2Nlc3NNb2RlbAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9k
ZWwgZm9yIFdlYlZpZXdzLCB3aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBo
b3cgYXV4aWxpYXJ5IHByb2Nlc3NlcyBhcmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZyBp
cworICogJVdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyBpcyBz
dWl0YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEgc21hbGwgYW1v
dW50IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1bWVudHMgd2hp
Y2ggaXMgY29uc2lkZXJlZCBzYWZlIC0tIGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGlj
YXRpb25zIHdoaWNoIG1heSBwb3RlbnRpYWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmll
d3MgLS1mb3IKKyAqIGV4YW1wbGUgYSBtdWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2Fu
dCB0byB1c2UKKyAqICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJP
Q0VTU0VTIHRvIHVzZSBvbmUgYXV4aWxpYXJ5CisgKiBwcm9jZXNzIHBlciB2aWV3LiBVc2luZyB0
aGlzIG1vZGVsLCB3aGVuIGEgV2ViVmlldyBpbiBhIHRhYiBoYW5ncyBvcgorICogY3Jhc2hlcywg
dGhlIHJlc3Qgb2YgdGhlIHRhYnMgaW4gdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCB3b3JrIG5vcm1h
bGx5LgorICoKKyAqIFRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBsb2FkaW5nIGFu
eXRoaW5nIGluIHRoaXMgY29udGV4dCwKKyAqIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZCBhbmQg
dGhlIHByb2Nlc3MgbW9kZWwgd2lsbCA8ZW0+bm90PC9lbT4gYmUKKyAqIHNldC4KKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFByb2Nlc3NNb2RlbCBwcm9jZXNzX21v
ZGVsKQoreworICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWw7CisKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBzd2l0Y2ggKHBy
b2Nlc3NfbW9kZWwpIHsKKyAgICBjYXNlIFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNP
TkRBUllfUFJPQ0VTUzoKKyAgICAgICAgcHJvY2Vzc01vZGVsID0gUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VT
U19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTOgorICAgICAgICBwcm9jZXNzTW9k
ZWwgPSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9
CisKKyAgICBpZiAocHJvY2Vzc01vZGVsICE9IGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnByb2Nl
c3NNb2RlbCgpKQorICAgICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5zZXRQcm9jZXNzTW9k
ZWwocHJvY2Vzc01vZGVsKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3By
b2Nlc3NfbW9kZWw6CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBwcm9jZXNzIG1vZGVsLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGlzIHZhbHVlCisgKiBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rp
b24KKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLgorICoKKyAqIFJl
dHVybnM6IHRoZSBjdXJyZW50ICNXZWJLaXRQcm9jZXNzTW9kZWwKKyAqLworV2ViS2l0UHJvY2Vz
c01vZGVsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9Q
Uk9DRVNTKTsKKworICAgIHN3aXRjaCAoY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cHJvY2Vzc01v
ZGVsKCkpIHsKKyAgICBjYXNlIFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6Cisg
ICAgICAgIHJldHVybiBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NF
U1M7CisgICAgY2FzZSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKKyAg
ICAgICAgcmV0dXJuIFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9D
RVNTRVM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9Q
Uk9DRVNTOworfQorCiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKIHsKICAgICBHUmVmUHRyPFdl
YktpdERvd25sb2FkPiBkb3dubG9hZCA9IGRvd25sb2Fkc01hcCgpLmdldChkb3dubG9hZFByb3h5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaAppbmRleCA5ZTdiYzE0NDc2ZGIwMjIzYTc4YmNkZjczOGMyZjYwYjkwNjUzZDdlLi45
NzEyZDUzOTEzZDk0MzhlZGNiMGE5MGQ4NWIxMWNiOTc5MTRlNjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC02Myw2
ICs2MywyNyBAQCB0eXBlZGVmIGVudW0gewogfSBXZWJLaXRDYWNoZU1vZGVsOwogCiAvKioKKyAq
IFdlYktpdFByb2Nlc3NNb2RlbDoKKyAqIEBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VD
T05EQVJZX1BST0NFU1M6IFVzZSBhIHNpbmdsZSBwcm9jZXNzIHRvCisgKiAgIHBlcmZvcm0gY29u
dGVudCByZW5kZXJpbmcuIFRoZSBwcm9jZXNzIGlzIHNoYXJlZCBhbW9uZyBhbGwgdGhlCisgKiAg
ICNXZWJLaXRXZWJWaWV3IGluc3RhbmNlcyBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gSWYg
dGhlIHNlY29uZGFyeQorICogICBUaGlzIGlzIHRoZSBkZWZhdWx0IHByb2Nlc3MgbW9kZWwsIGFu
ZCBpdCBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqIEBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTOiBVc2Ugb25lIHByb2Nlc3MgZm9yCisg
KiAgIGVhY2ggI1dlYktpdFdlYlZpZXcuIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGlzIHByb2Nl
c3MgbW9kZWwgaXMgdGhhdAorICogICB0aGUgcmVuZGVyaW5nIHByb2Nlc3MgZm9yIGEgd2ViIHZp
ZXcgY2FuIGNyYXNoIHdoaWxlIHRoZSByZXN0IG9mIHRoZQorICogICB2aWV3cyBrZWVwIHdvcmtp
bmcgbm9ybWFsbHkuIFRoaXMgcHJvY2VzcyBtb2RlbCBpcyBpbmRpY2F0ZWQgZm9yCisgKiAgIGFw
cGxpY2F0aW9ucyB3aGljaCBtYXkgdXNlIGEgbnVtYmVyIG9mIHdlYiB2aWV3cyBhbmQgdGhlIGNv
bnRlbnQgb2YKKyAqICAgaW4gZWFjaCBtdXN0IG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgcmVzdCAt
LSBmb3IgZXhhbXBsZSBhIGZ1bGwtZmxlZGdlZAorICogICB3ZWIgYnJvd3NlciB3aXRoIHN1cHBv
cnQgZm9yIG11bHRpcGxlIHRhYnMuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCBmb3IgZGV0ZXJt
aW5pbmcgdGhlICNXZWJLaXRXZWJDb250ZXh0IHByb2Nlc3MgbW9kZWwuCisgKi8KK3R5cGVkZWYg
ZW51bSB7CisgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNT
LAorICAgIFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMK
K30gV2ViS2l0UHJvY2Vzc01vZGVsOworCisvKioKICAqIFdlYktpdFRMU0Vycm9yc1BvbGljeToK
ICAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFOiBJZ25vcmUgVExTIGVycm9ycy4K
ICAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDogVExTIGVycm9ycyB3aWxsIGVtaXQK
QEAgLTIwOCw2ICsyMjksMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZp
Y2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAg
ICAgICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqaG9zdCk7CiAKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJvY2Vzc01v
ZGVsICAgICAgICAgICAgIHByb2Nlc3NfbW9kZWwpOworCitXRUJLSVRfQVBJIFdlYktpdFByb2Nl
c3NNb2RlbAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZThjMGU1ZjMwNmYx
MjM0MWEzNzRiZjE2YTdmMTY4YzI0OGIzZWE5Ny4uYTE4YTExMWU3YTAyNzJjOWRjZGRiZTlmM2M5
NTAzMjMwM2ZiMTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0yNCw2ICsyNCw3
IEBAIFdFQktJVF9PQlNPTEVURV9BUEkKIDxUSVRMRT5XZWJLaXRXZWJDb250ZXh0PC9USVRMRT4K
IFdlYktpdFdlYkNvbnRleHQKIFdlYktpdENhY2hlTW9kZWwKK1dlYktpdFByb2Nlc3NNb2RlbAog
V2ViS2l0VExTRXJyb3JzUG9saWN5CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQKIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKQEAgLTQ5LDYgKzUwLDggQEAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29u
dGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QK
K3dlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAord2Via2l0X3dlYl9jb250ZXh0
X3NldF9wcm9jZXNzX21vZGVsCiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0Q2FsbGJhY2sK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218982</attachid>
            <date>2013-12-11 11:23:30 -0800</date>
            <delta_ts>2013-12-11 11:48:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20131211202433.patch</filename>
            <type>text/plain</type>
            <size>8946</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkzYmY5ZmNhOTczNTcw
MjQ0OTI2NDZkNmNiZjIwODEyNjc5OTZhMi4uNzE4MDEyODRiYjZjYmQyMGE1OTkyM2ZhMWIzMWU4
YzI3MWFjNmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTA5ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwpOgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2dldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dDoKKwogMjAxMy0xMi0wOCAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1dLMl0gR3VhcmQgTWFjIHNwZWNpZmljIG5ldHdvcmsg
cHJvY2VzcyBjb2RlIHdpdGggUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAwNjk0MTI5OTcx
MTBiMmY4MGYxOWQxNjBhMjFkZjI0OTc0NGU0MDQ3Li4xMTk3ZWM0OTI4MDVkOGU3YzFlNDg4NzQ2
ODk0MDdiMWJlN2IxYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjEsOCArNjEsOSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogICogVGhlICNXZWJLaXRXZWJDb250ZXh0IG1hbmFnZXMgYWxsIGFzcGVj
dHMgY29tbW9uIHRvIGFsbAogICogI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMuCiAgKgotICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIHdpdGgKLSAqIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfY2FjaGVfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgorICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIGFuZCAjV2ViS2l0UHJvY2Vzc01vZGVs
IHdpdGgKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSBhbmQKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5l
ZWRzIG9mCiAgKiB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFjY2VzcyB0aGUgI1dlYktpdENv
b2tpZU1hbmFnZXIgb3IgdGhlCiAgKiAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIHRvIHNwZWNpZnkg
dGhlIGJlaGF2aW91ciBvZiB5b3VyIGFwcGxpY2F0aW9uCiAgKiByZWdhcmRpbmcgY29va2llcyBh
bmQgc2VjdXJpdHksIHVzaW5nCkBAIC04MzIsNiArODMzLDc4IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRG
OChob3N0KSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21v
ZGVsOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9k
ZWw6IGEgI1dlYktpdFByb2Nlc3NNb2RlbAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9k
ZWwgZm9yIFdlYlZpZXdzLCB3aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBo
b3cgYXV4aWxpYXJ5IHByb2Nlc3NlcyBhcmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZyBp
cworICogJVdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyBpcyBz
dWl0YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEgc21hbGwgYW1v
dW50IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1bWVudHMgd2hp
Y2ggaXMgY29uc2lkZXJlZCBzYWZlIC0tIGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGlj
YXRpb25zIHdoaWNoIG1heSBwb3RlbnRpYWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmll
d3MgLS1mb3IKKyAqIGV4YW1wbGUgYSBtdWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2Fu
dCB0byB1c2UKKyAqICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJP
Q0VTU0VTIHRvIHVzZSBvbmUgYXV4aWxpYXJ5CisgKiBwcm9jZXNzIHBlciB2aWV3LiBVc2luZyB0
aGlzIG1vZGVsLCB3aGVuIGEgV2ViVmlldyBpbiBhIHRhYiBoYW5ncyBvcgorICogY3Jhc2hlcywg
dGhlIHJlc3Qgb2YgdGhlIHRhYnMgaW4gdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCB3b3JrIG5vcm1h
bGx5LgorICoKKyAqIFRoaXMgbWV0aG9kIDxzdHJvbmc+bXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFu
eSBvdGhlciBmdW5jdGlvbnM8L3N0cmluZz4sCisgKiBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB5
b3VyIGFwcGxpY2F0aW9uLiBDYWxsaW5nIGl0IGxhdGVyIHdpbGwgbWFrZQorICogeW91ciBhcHBs
aWNhdGlvbiBjcmFzaC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9wcm9jZXNzX21vZGVsKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dFByb2Nlc3NNb2RlbCBwcm9jZXNzX21vZGVsKQoreworICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWw7CisKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250
ZXh0KSk7CisKKyAgICBzd2l0Y2ggKHByb2Nlc3NfbW9kZWwpIHsKKyAgICBjYXNlIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzoKKyAgICAgICAgcHJvY2Vzc01v
ZGVsID0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VT
U0VTOgorICAgICAgICBwcm9jZXNzTW9kZWwgPSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFy
eVByb2Nlc3NlczsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3Nl
cnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAgICBpZiAocHJvY2Vzc01vZGVsICE9IGNvbnRl
eHQtPnByaXYtPmNvbnRleHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgICAgIGNvbnRleHQtPnBy
aXYtPmNvbnRleHQtPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyhwcm9jZXNzTW9kZWwgPT0gUHJvY2Vz
c01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworICAgICAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5zZXRQcm9jZXNzTW9kZWwocHJvY2Vzc01vZGVsKTsKKyAgICB9Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsOgorICogQGNvbnRleHQ6
IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgcHJvY2Vz
cyBtb2RlbC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyB2YWx1ZQorICogY2hlY2sg
dGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9uCisgKiB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3Byb2Nlc3NfbW9kZWwoKS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCAjV2ViS2l0
UHJvY2Vzc01vZGVsCisgKi8KK1dlYktpdFByb2Nlc3NNb2RlbCB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3Byb2Nlc3NfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyk7CisKKyAgICBzd2l0Y2ggKGNv
bnRleHQtPnByaXYtPmNvbnRleHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgY2FzZSBQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgorICAgICAgICByZXR1cm4gV0VCS0lUX1BST0NF
U1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTOworICAgIGNhc2UgUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6CisgICAgICAgIHJldHVybiBXRUJLSVRfUFJPQ0VT
U19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzsKK30KKwogV2ViS2l0RG93bmxv
YWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHkpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBk
b3dubG9hZHNNYXAoKS5nZXQoZG93bmxvYWRQcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggOWU3YmMxNDQ3NmRi
MDIyM2E3OGJjZGY3MzhjMmY2MGI5MDY1M2Q3ZS4uOTcxMmQ1MzkxM2Q5NDM4ZWRjYjBhOTBkODVi
MTFjYjk3OTE0ZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtNjMsNiArNjMsMjcgQEAgdHlwZWRlZiBlbnVtIHsK
IH0gV2ViS2l0Q2FjaGVNb2RlbDsKIAogLyoqCisgKiBXZWJLaXRQcm9jZXNzTW9kZWw6CisgKiBA
V0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTOiBVc2UgYSBzaW5n
bGUgcHJvY2VzcyB0bworICogICBwZXJmb3JtIGNvbnRlbnQgcmVuZGVyaW5nLiBUaGUgcHJvY2Vz
cyBpcyBzaGFyZWQgYW1vbmcgYWxsIHRoZQorICogICAjV2ViS2l0V2ViVmlldyBpbnN0YW5jZXMg
Y3JlYXRlZCBieSB0aGUgYXBwbGljYXRpb24uIElmIHRoZSBzZWNvbmRhcnkKKyAqICAgVGhpcyBp
cyB0aGUgZGVmYXVsdCBwcm9jZXNzIG1vZGVsLCBhbmQgaXQgc2hvdWxkIHN1ZmZpY2UgZm9yIG1v
c3QgY2FzZXMuCisgKiBAV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BS
T0NFU1NFUzogVXNlIG9uZSBwcm9jZXNzIGZvcgorICogICBlYWNoICNXZWJLaXRXZWJWaWV3LiBU
aGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBwcm9jZXNzIG1vZGVsIGlzIHRoYXQKKyAqICAgdGhl
IHJlbmRlcmluZyBwcm9jZXNzIGZvciBhIHdlYiB2aWV3IGNhbiBjcmFzaCB3aGlsZSB0aGUgcmVz
dCBvZiB0aGUKKyAqICAgdmlld3Mga2VlcCB3b3JraW5nIG5vcm1hbGx5LiBUaGlzIHByb2Nlc3Mg
bW9kZWwgaXMgaW5kaWNhdGVkIGZvcgorICogICBhcHBsaWNhdGlvbnMgd2hpY2ggbWF5IHVzZSBh
IG51bWJlciBvZiB3ZWIgdmlld3MgYW5kIHRoZSBjb250ZW50IG9mCisgKiAgIGluIGVhY2ggbXVz
dCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHJlc3QgLS0gZm9yIGV4YW1wbGUgYSBmdWxsLWZsZWRn
ZWQKKyAqICAgd2ViIGJyb3dzZXIgd2l0aCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJzLgorICoK
KyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSAjV2ViS2l0V2ViQ29udGV4
dCBwcm9jZXNzIG1vZGVsLgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUywKKyAgICBXRUJLSVRfUFJPQ0VTU19NT0RF
TF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTCit9IFdlYktpdFByb2Nlc3NNb2RlbDsKKwor
LyoqCiAgKiBXZWJLaXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRTogSWdub3JlIFRMUyBlcnJvcnMuCiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUw6IFRMUyBlcnJvcnMgd2lsbCBlbWl0CkBAIC0yMDgsNiArMjI5LDEzIEBAIHdlYmtp
dF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QgICAoV2ViS2l0V2Vi
Q29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gICAgICAgICAqaW5mbywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICAgKmhvc3QpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4
dF9zZXRfcHJvY2Vzc19tb2RlbCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAg
ICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFByb2Nlc3NNb2RlbCAgICAgICAgICAgICBwcm9jZXNzX21v
ZGVsKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQcm9jZXNzTW9kZWwKK3dlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAg
ICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IGU4YzBlNWYzMDZmMTIzNDFhMzc0YmYxNmE3ZjE2OGMyNDhiM2Vh
OTcuLmExOGExMTFlN2EwMjcyYzlkY2RkYmU5ZjNjOTUwMzIzMDNmYjEyZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dApAQCAtMjQsNiArMjQsNyBAQCBXRUJLSVRfT0JTT0xFVEVfQVBJCiA8
VElUTEU+V2ViS2l0V2ViQ29udGV4dDwvVElUTEU+CiBXZWJLaXRXZWJDb250ZXh0CiBXZWJLaXRD
YWNoZU1vZGVsCitXZWJLaXRQcm9jZXNzTW9kZWwKIFdlYktpdFRMU0Vycm9yc1BvbGljeQogd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hl
X21vZGVsCkBAIC00OSw2ICs1MCw4IEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVu
c2lvbnNfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zCiB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRf
YWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3By
b2Nlc3NfbW9kZWwKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbAogCiA8U1VC
U0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYwppbmRleCA1MDQ5Y2YyMWYwZTVkNzVjNWJkOWFmNDU3MmI5MTA5ZTg0ZGQ0ZTQw
Li4xNjdhYmI3MDFkYmQxOTUyNDgxYzY1YmM4ZjU3NjgxYmVkZTU3ODg0IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMKQEAgLTI0MSw2ICsyNDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIHsKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCisgICAgY29uc3QgZ2NoYXIgKm1p
bmlicm93c2VyID0gZ19nZXRlbnYoIk1JTklCUk9XU0VSX01VTFRJUFJPQ0VTUyIpOworICAgIGlm
IChtaW5pYnJvd3NlciAhPSBOVUxMICYmICptaW5pYnJvd3NlcikgeworICAgICAgICB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZh
dWx0KCksCisgICAgICAgICAgICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRB
UllfUFJPQ0VTU0VTKTsKKyAgICB9CisKICAgICBHT3B0aW9uQ29udGV4dCAqY29udGV4dCA9IGdf
b3B0aW9uX2NvbnRleHRfbmV3KE5VTEwpOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5f
ZW50cmllcyhjb250ZXh0LCBjb21tYW5kTGluZU9wdGlvbnMsIDApOwogICAgIGdfb3B0aW9uX2Nv
bnRleHRfYWRkX2dyb3VwKGNvbnRleHQsIGd0a19nZXRfb3B0aW9uX2dyb3VwKFRSVUUpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218989</attachid>
            <date>2013-12-11 11:48:59 -0800</date>
            <delta_ts>2014-01-21 14:56:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20131211205003.patch</filename>
            <type>text/plain</type>
            <size>8938</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkzYmY5ZmNhOTczNTcw
MjQ0OTI2NDZkNmNiZjIwODEyNjc5OTZhMi4uNzE4MDEyODRiYjZjYmQyMGE1OTkyM2ZhMWIzMWU4
YzI3MWFjNmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTA5ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwpOgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2dldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dDoKKwogMjAxMy0xMi0wOCAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1dLMl0gR3VhcmQgTWFjIHNwZWNpZmljIG5ldHdvcmsg
cHJvY2VzcyBjb2RlIHdpdGggUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAwNjk0MTI5OTcx
MTBiMmY4MGYxOWQxNjBhMjFkZjI0OTc0NGU0MDQ3Li4xMTk3ZWM0OTI4MDVkOGU3YzFlNDg4NzQ2
ODk0MDdiMWJlN2IxYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjEsOCArNjEsOSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogICogVGhlICNXZWJLaXRXZWJDb250ZXh0IG1hbmFnZXMgYWxsIGFzcGVj
dHMgY29tbW9uIHRvIGFsbAogICogI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMuCiAgKgotICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIHdpdGgKLSAqIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfY2FjaGVfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgorICogWW91
IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIGFuZCAjV2ViS2l0UHJvY2Vzc01vZGVs
IHdpdGgKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSBhbmQKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5l
ZWRzIG9mCiAgKiB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFjY2VzcyB0aGUgI1dlYktpdENv
b2tpZU1hbmFnZXIgb3IgdGhlCiAgKiAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIHRvIHNwZWNpZnkg
dGhlIGJlaGF2aW91ciBvZiB5b3VyIGFwcGxpY2F0aW9uCiAgKiByZWdhcmRpbmcgY29va2llcyBh
bmQgc2VjdXJpdHksIHVzaW5nCkBAIC04MzIsNiArODMzLDc4IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRG
OChob3N0KSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21v
ZGVsOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9k
ZWw6IGEgI1dlYktpdFByb2Nlc3NNb2RlbAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9k
ZWwgZm9yIFdlYlZpZXdzLCB3aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBo
b3cgYXV4aWxpYXJ5IHByb2Nlc3NlcyBhcmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZyBp
cworICogJVdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyBpcyBz
dWl0YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEgc21hbGwgYW1v
dW50IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1bWVudHMgd2hp
Y2ggaXMgY29uc2lkZXJlZCBzYWZlIC0tIGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGlj
YXRpb25zIHdoaWNoIG1heSBwb3RlbnRpYWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmll
d3MgLS1mb3IKKyAqIGV4YW1wbGUgYSBtdWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2Fu
dCB0byB1c2UKKyAqICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJP
Q0VTU0VTIHRvIHVzZSBvbmUgYXV4aWxpYXJ5CisgKiBwcm9jZXNzIHBlciB2aWV3LiBVc2luZyB0
aGlzIG1vZGVsLCB3aGVuIGEgV2ViVmlldyBpbiBhIHRhYiBoYW5ncyBvcgorICogY3Jhc2hlcywg
dGhlIHJlc3Qgb2YgdGhlIHRhYnMgaW4gdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCB3b3JrIG5vcm1h
bGx5LgorICoKKyAqIFRoaXMgbWV0aG9kIDxzdHJvbmc+bXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFu
eSBvdGhlciBmdW5jdGlvbnM8L3N0cmluZz4sCisgKiBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB5
b3VyIGFwcGxpY2F0aW9uLiBDYWxsaW5nIGl0IGxhdGVyIHdpbGwgbWFrZQorICogeW91ciBhcHBs
aWNhdGlvbiBjcmFzaC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9wcm9jZXNzX21vZGVsKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dFByb2Nlc3NNb2RlbCBwcm9jZXNzX21vZGVsKQoreworICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNz
TW9kZWw7CisKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250
ZXh0KSk7CisKKyAgICBzd2l0Y2ggKHByb2Nlc3NfbW9kZWwpIHsKKyAgICBjYXNlIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzoKKyAgICAgICAgcHJvY2Vzc01v
ZGVsID0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VT
U0VTOgorICAgICAgICBwcm9jZXNzTW9kZWwgPSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFy
eVByb2Nlc3NlczsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3Nl
cnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAgICBpZiAocHJvY2Vzc01vZGVsICE9IGNvbnRl
eHQtPnByaXYtPmNvbnRleHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgICAgIGNvbnRleHQtPnBy
aXYtPmNvbnRleHQtPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyhwcm9jZXNzTW9kZWwgPT0gUHJvY2Vz
c01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworICAgICAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5zZXRQcm9jZXNzTW9kZWwocHJvY2Vzc01vZGVsKTsKKyAgICB9Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsOgorICogQGNvbnRleHQ6
IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgcHJvY2Vz
cyBtb2RlbC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyB2YWx1ZQorICogY2hlY2sg
dGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9uCisgKiB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3Byb2Nlc3NfbW9kZWwoKS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCAjV2ViS2l0
UHJvY2Vzc01vZGVsCisgKi8KK1dlYktpdFByb2Nlc3NNb2RlbCB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3Byb2Nlc3NfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyk7CisKKyAgICBzd2l0Y2ggKGNv
bnRleHQtPnByaXYtPmNvbnRleHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgY2FzZSBQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgorICAgICAgICByZXR1cm4gV0VCS0lUX1BST0NF
U1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTOworICAgIGNhc2UgUHJvY2Vzc01vZGVs
TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6CisgICAgICAgIHJldHVybiBXRUJLSVRfUFJPQ0VT
U19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzsKK30KKwogV2ViS2l0RG93bmxv
YWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHkpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBk
b3dubG9hZHNNYXAoKS5nZXQoZG93bmxvYWRQcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggOWU3YmMxNDQ3NmRi
MDIyM2E3OGJjZGY3MzhjMmY2MGI5MDY1M2Q3ZS4uOTcxMmQ1MzkxM2Q5NDM4ZWRjYjBhOTBkODVi
MTFjYjk3OTE0ZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtNjMsNiArNjMsMjcgQEAgdHlwZWRlZiBlbnVtIHsK
IH0gV2ViS2l0Q2FjaGVNb2RlbDsKIAogLyoqCisgKiBXZWJLaXRQcm9jZXNzTW9kZWw6CisgKiBA
V0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTOiBVc2UgYSBzaW5n
bGUgcHJvY2VzcyB0bworICogICBwZXJmb3JtIGNvbnRlbnQgcmVuZGVyaW5nLiBUaGUgcHJvY2Vz
cyBpcyBzaGFyZWQgYW1vbmcgYWxsIHRoZQorICogICAjV2ViS2l0V2ViVmlldyBpbnN0YW5jZXMg
Y3JlYXRlZCBieSB0aGUgYXBwbGljYXRpb24uIElmIHRoZSBzZWNvbmRhcnkKKyAqICAgVGhpcyBp
cyB0aGUgZGVmYXVsdCBwcm9jZXNzIG1vZGVsLCBhbmQgaXQgc2hvdWxkIHN1ZmZpY2UgZm9yIG1v
c3QgY2FzZXMuCisgKiBAV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BS
T0NFU1NFUzogVXNlIG9uZSBwcm9jZXNzIGZvcgorICogICBlYWNoICNXZWJLaXRXZWJWaWV3LiBU
aGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBwcm9jZXNzIG1vZGVsIGlzIHRoYXQKKyAqICAgdGhl
IHJlbmRlcmluZyBwcm9jZXNzIGZvciBhIHdlYiB2aWV3IGNhbiBjcmFzaCB3aGlsZSB0aGUgcmVz
dCBvZiB0aGUKKyAqICAgdmlld3Mga2VlcCB3b3JraW5nIG5vcm1hbGx5LiBUaGlzIHByb2Nlc3Mg
bW9kZWwgaXMgaW5kaWNhdGVkIGZvcgorICogICBhcHBsaWNhdGlvbnMgd2hpY2ggbWF5IHVzZSBh
IG51bWJlciBvZiB3ZWIgdmlld3MgYW5kIHRoZSBjb250ZW50IG9mCisgKiAgIGluIGVhY2ggbXVz
dCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHJlc3QgLS0gZm9yIGV4YW1wbGUgYSBmdWxsLWZsZWRn
ZWQKKyAqICAgd2ViIGJyb3dzZXIgd2l0aCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJzLgorICoK
KyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSAjV2ViS2l0V2ViQ29udGV4
dCBwcm9jZXNzIG1vZGVsLgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9QUk9DRVNT
X01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUywKKyAgICBXRUJLSVRfUFJPQ0VTU19NT0RF
TF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTCit9IFdlYktpdFByb2Nlc3NNb2RlbDsKKwor
LyoqCiAgKiBXZWJLaXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRTogSWdub3JlIFRMUyBlcnJvcnMuCiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUw6IFRMUyBlcnJvcnMgd2lsbCBlbWl0CkBAIC0yMDgsNiArMjI5LDEzIEBAIHdlYmtp
dF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QgICAoV2ViS2l0V2Vi
Q29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gICAgICAgICAqaW5mbywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICAgKmhvc3QpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4
dF9zZXRfcHJvY2Vzc19tb2RlbCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAg
ICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFByb2Nlc3NNb2RlbCAgICAgICAgICAgICBwcm9jZXNzX21v
ZGVsKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQcm9jZXNzTW9kZWwKK3dlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAg
ICAgICAgICAgKmNvbnRleHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IGU4YzBlNWYzMDZmMTIzNDFhMzc0YmYxNmE3ZjE2OGMyNDhiM2Vh
OTcuLmExOGExMTFlN2EwMjcyYzlkY2RkYmU5ZjNjOTUwMzIzMDNmYjEyZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dApAQCAtMjQsNiArMjQsNyBAQCBXRUJLSVRfT0JTT0xFVEVfQVBJCiA8
VElUTEU+V2ViS2l0V2ViQ29udGV4dDwvVElUTEU+CiBXZWJLaXRXZWJDb250ZXh0CiBXZWJLaXRD
YWNoZU1vZGVsCitXZWJLaXRQcm9jZXNzTW9kZWwKIFdlYktpdFRMU0Vycm9yc1BvbGljeQogd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hl
X21vZGVsCkBAIC00OSw2ICs1MCw4IEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVu
c2lvbnNfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zCiB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRf
YWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3By
b2Nlc3NfbW9kZWwKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbAogCiA8U1VC
U0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYwppbmRleCA1MDQ5Y2YyMWYwZTVkNzVjNWJkOWFmNDU3MmI5MTA5ZTg0ZGQ0ZTQw
Li5lMDkxMjJlZGJkZTc4ZDZjMWMxY2EzZDVlMWM5Y2UxMGExYWE1MTg3IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMKQEAgLTI0MSw2ICsyNDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKIHsKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCisgICAgY29uc3QgZ2NoYXIgKm1p
bmlicm93c2VyID0gZ19nZXRlbnYoIk1JTklCUk9XU0VSX01VTFRJUFJPQ0VTUyIpOworICAgIGlm
IChtaW5pYnJvd3NlciAmJiAqbWluaWJyb3dzZXIpIHsKKyAgICAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9wcm9jZXNzX21vZGVsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAor
ICAgICAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NF
U1NFUyk7CisgICAgfQorCiAgICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlvbl9j
b250ZXh0X25ldyhOVUxMKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMo
Y29udGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCAwKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2Fk
ZF9ncm91cChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cChUUlVFKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221792</attachid>
            <date>2014-01-21 14:56:57 -0800</date>
            <delta_ts>2014-01-22 02:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140122005727.patch</filename>
            <type>text/plain</type>
            <size>22130</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTcwYmRlYzU3MGRhYTM2
Njg4NjgyMGQzYThiZWQ2NjgzZjk3NmMyNC4uNDM1MjVhZjIxNmFkZTY3NGVkYjdkNjQwYzQ2NTRk
Yzc2ODViN2IxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE0LTAxLTIxICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBTZXR0aW5nIFdFQktJVF9QUk9DRVNT
X01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMKKyAgICAgICAgYXMgdGhlIHByb2Nl
c3MgbW9kZWwgd2lsbCBtYWtlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2VzcyBhbmQKKyAgICAgICAg
bXVsdGlwbGUgd2ViIHByb2Nlc3Nlcy4gU2V0dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBtdXN0IGJl
IGRvbmUKKyAgICAgICAgYXMgZWFybHkgYXMgcG9zc2libGUsIGJlZm9yZSB0aGUgdmVyeSBmaXJz
dCB3ZWIgcHJvY2VzcyBpcworICAgICAgICBzcGF3bmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgaW4g
dGhlIEFQSSB0byBnZXQvc2V0IHRoZSBwcm9jZXNzIG1vZGVsLgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oOgorICAgICAgICBEZWZpbmUgdGhlIFdlYktpdFByb2Nlc3NNb2RlbCBlbnVt
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisgICAgICAgIEFkZCBuZXcgcHVibGljIEFQSSBiaXRzIHRvIHRoZSBkb2N1bWVudGF0aW9u
LgorCisyMDE0LTAxLTIxICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CisKICAgICAgICAgW0dUS10gQWxsb3cgcGFzc2luZyBleHRyYSBkYXRhIHRvIHdlYiBleHRl
bnNpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjU5OTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcAppbmRleCBkNTZmNWU1NDNlMjM0M2NkMTU0ZjkzYTEwOGU5NDhhYWZm
ODJhOTBlLi44MzVjOWQ1YmUwZTI5NmQzY2MzZGE0ZGM5MTc1NWJkYzE2ZWZiNjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtNjQsOCArNjQsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICogVGhlICNX
ZWJLaXRXZWJDb250ZXh0IG1hbmFnZXMgYWxsIGFzcGVjdHMgY29tbW9uIHRvIGFsbAogICogI1dl
YktpdFdlYlZpZXc8IS0tIC0tPnMuCiAgKgotICogWW91IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRD
YWNoZU1vZGVsIHdpdGgKLSAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSwg
ZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgorICogWW91IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRD
YWNoZU1vZGVsIGFuZCAjV2ViS2l0UHJvY2Vzc01vZGVsIHdpdGgKKyAqIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfY2FjaGVfbW9kZWwoKSBhbmQKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJv
Y2Vzc19tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzIG9mCiAgKiB5b3VyIGFwcGxpY2F0
aW9uLiBZb3UgY2FuIGFjY2VzcyB0aGUgI1dlYktpdENvb2tpZU1hbmFnZXIgb3IgdGhlCiAgKiAj
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyIHRvIHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB5b3VyIGFw
cGxpY2F0aW9uCiAgKiByZWdhcmRpbmcgY29va2llcyBhbmQgc2VjdXJpdHksIHVzaW5nCkBAIC04
ODksNiArODkwLDc4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZp
Y2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgY29udGV4dC0+cHJp
di0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRp
ZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKKy8qKgorICog
d2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsOgorICogQGNvbnRleHQ6IHRoZSAj
V2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9kZWw6IGEgI1dlYktpdFByb2Nlc3NNb2Rl
bAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9kZWwgZm9yIFdlYlZpZXdzLCB3aGljaCBX
ZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBob3cgYXV4aWxpYXJ5IHByb2Nlc3NlcyBh
cmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcworICogJVdFQktJVF9QUk9DRVNTX01P
REVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyBpcyBzdWl0YWJsZSBmb3IgbW9zdAorICogYXBw
bGljYXRpb25zIHdoaWNoIGVtYmVkIGEgc21hbGwgYW1vdW50IG9mIFdlYlZpZXdzLCBvciBhcmUg
dXNlZCB0bworICogZGlzcGxheSBkb2N1bWVudHMgd2hpY2ggaXMgY29uc2lkZXJlZCBzYWZlIC0t
IGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGljYXRpb25zIHdoaWNoIG1heSBwb3RlbnRp
YWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmlld3MgLS1mb3IKKyAqIGV4YW1wbGUgYSBt
dWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2FudCB0byB1c2UKKyAqICVXRUJLSVRfUFJP
Q0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTIHRvIHVzZSBvbmUgYXV4aWxp
YXJ5CisgKiBwcm9jZXNzIHBlciB2aWV3LiBVc2luZyB0aGlzIG1vZGVsLCB3aGVuIGEgV2ViVmll
dyBpbiBhIHRhYiBoYW5ncyBvcgorICogY3Jhc2hlcywgdGhlIHJlc3Qgb2YgdGhlIHRhYnMgaW4g
dGhlIGJyb3dzZXIgd2lsbCBzdGlsbCB3b3JrIG5vcm1hbGx5LgorICoKKyAqIFRoaXMgbWV0aG9k
IDxzdHJvbmc+bXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBmdW5jdGlvbnM8L3N0cmlu
Zz4sCisgKiBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB5b3VyIGFwcGxpY2F0aW9uLiBDYWxsaW5n
IGl0IGxhdGVyIHdpbGwgbWFrZQorICogeW91ciBhcHBsaWNhdGlvbiBjcmFzaC4KKyAqCisgKiBT
aW5jZTogMi40CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9k
ZWwpCit7CisgICAgUHJvY2Vzc01vZGVsIG5ld1Byb2Nlc3NNb2RlbDsKKworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKworICAgIHN3aXRjaCAo
cHJvY2Vzc01vZGVsKSB7CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VD
T05EQVJZX1BST0NFU1M6CisgICAgICAgIG5ld1Byb2Nlc3NNb2RlbCA9IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3M7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX1BS
T0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUzoKKyAgICAgICAgbmV3UHJv
Y2Vzc01vZGVsID0gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7
CisgICAgfQorCisgICAgaWYgKG5ld1Byb2Nlc3NNb2RlbCAhPSBjb250ZXh0LT5wcml2LT5jb250
ZXh0LT5wcm9jZXNzTW9kZWwoKSkgeworICAgICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5z
ZXRVc2VzTmV0d29ya1Byb2Nlc3MobmV3UHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKKyAgICAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+
c2V0UHJvY2Vzc01vZGVsKG5ld1Byb2Nlc3NNb2RlbCk7CisgICAgfQorfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbDoKKyAqIEBjb250ZXh0OiB0aGUgI1dl
YktpdFdlYkNvbnRleHQKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHByb2Nlc3MgbW9kZWwu
IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdmFsdWUKKyAqIGNoZWNrIHRoZSBkb2N1
bWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9j
ZXNzX21vZGVsKCkuCisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQgI1dlYktpdFByb2Nlc3NN
b2RlbAorICovCitXZWJLaXRQcm9jZXNzTW9kZWwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9j
ZXNzX21vZGVsKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MpOworCisgICAgc3dpdGNoIChjb250ZXh0LT5w
cml2LT5jb250ZXh0LT5wcm9jZXNzTW9kZWwoKSkgeworICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzczoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9QUk9DRVNTX01PREVM
X1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzsKKyAgICBjYXNlIFByb2Nlc3NNb2RlbE11bHRpcGxl
U2Vjb25kYXJ5UHJvY2Vzc2VzOgorICAgICAgICByZXR1cm4gV0VCS0lUX1BST0NFU1NfTU9ERUxf
TVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUzsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fz
c2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKworICAgIHJldHVybiBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJr
aXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRz
TWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDFlM2I5YjU4OGQ2NWE4NTQ5OWE4
NmJiNzE2Y2I2N2JlMjNkOTIyYWEuLjg1MmRlM2E0MWVjMWI2MTA1ZjZlYWVmZTI3MDhmMjA1OGZl
NDk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmgKQEAgLTYzLDYgKzYzLDI3IEBAIHR5cGVkZWYgZW51bSB7CiB9IFdlYktp
dENhY2hlTW9kZWw7CiAKIC8qKgorICogV2ViS2l0UHJvY2Vzc01vZGVsOgorICogQFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzogVXNlIGEgc2luZ2xlIHByb2Nl
c3MgdG8KKyAqICAgcGVyZm9ybSBjb250ZW50IHJlbmRlcmluZy4gVGhlIHByb2Nlc3MgaXMgc2hh
cmVkIGFtb25nIGFsbCB0aGUKKyAqICAgI1dlYktpdFdlYlZpZXcgaW5zdGFuY2VzIGNyZWF0ZWQg
YnkgdGhlIGFwcGxpY2F0aW9uLiBJZiB0aGUgc2Vjb25kYXJ5CisgKiAgIFRoaXMgaXMgdGhlIGRl
ZmF1bHQgcHJvY2VzcyBtb2RlbCwgYW5kIGl0IHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2Vz
LgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVM6
IFVzZSBvbmUgcHJvY2VzcyBmb3IKKyAqICAgZWFjaCAjV2ViS2l0V2ViVmlldy4gVGhlIG1haW4g
YWR2YW50YWdlIG9mIHRoaXMgcHJvY2VzcyBtb2RlbCBpcyB0aGF0CisgKiAgIHRoZSByZW5kZXJp
bmcgcHJvY2VzcyBmb3IgYSB3ZWIgdmlldyBjYW4gY3Jhc2ggd2hpbGUgdGhlIHJlc3Qgb2YgdGhl
CisgKiAgIHZpZXdzIGtlZXAgd29ya2luZyBub3JtYWxseS4gVGhpcyBwcm9jZXNzIG1vZGVsIGlz
IGluZGljYXRlZCBmb3IKKyAqICAgYXBwbGljYXRpb25zIHdoaWNoIG1heSB1c2UgYSBudW1iZXIg
b2Ygd2ViIHZpZXdzIGFuZCB0aGUgY29udGVudCBvZgorICogICBpbiBlYWNoIG11c3Qgbm90IGlu
dGVyZmVyZSB3aXRoIHRoZSByZXN0IC0tIGZvciBleGFtcGxlIGEgZnVsbC1mbGVkZ2VkCisgKiAg
IHdlYiBicm93c2VyIHdpdGggc3VwcG9ydCBmb3IgbXVsdGlwbGUgdGFicy4KKyAqCisgKiBFbnVt
IHZhbHVlcyB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgI1dlYktpdFdlYkNvbnRleHQgcHJvY2Vz
cyBtb2RlbC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9T
SEFSRURfU0VDT05EQVJZX1BST0NFU1MsCisgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQ
TEVfU0VDT05EQVJZX1BST0NFU1NFUworfSBXZWJLaXRQcm9jZXNzTW9kZWw7CisKKy8qKgogICog
V2ViS2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05P
UkU6IElnbm9yZSBUTFMgZXJyb3JzLgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlM
OiBUTFMgZXJyb3JzIHdpbGwgZW1pdApAQCAtMjEzLDYgKzIzNCwxMyBAQCB3ZWJraXRfd2ViX2Nv
bnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0ICAgKFdlYktpdFdlYkNvbnRleHQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAg
ICAgICpob3N0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAg
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQcm9jZXNzTW9kZWwgICAgICAgICAgICAgcHJvY2Vzc19tb2RlbCk7CisK
K1dFQktJVF9BUEkgV2ViS2l0UHJvY2Vzc01vZGVsCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3By
b2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAg
ICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAppbmRleCAxYzEzYzZjMDczYTc1ZDE5N2Q3MDU2MmMwMjk3OTIxZjdiNjM4MmY0Li45NDIx
NDk2NmQ1YzI2NTZmZjk2YzYzOGI4NDk4YjA1NGNkMmU3Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKQEAgLTI0LDYgKzI0LDcgQEAgV0VCS0lUX09CU09MRVRFX0FQSQogPFRJVExFPldl
YktpdFdlYkNvbnRleHQ8L1RJVExFPgogV2ViS2l0V2ViQ29udGV4dAogV2ViS2l0Q2FjaGVNb2Rl
bAorV2ViS2l0UHJvY2Vzc01vZGVsCiBXZWJLaXRUTFNFcnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZGVmYXVsdAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbApA
QCAtNTAsNiArNTEsOCBAQCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2lu
aXRpYWxpemF0aW9uX3VzZXJfZGF0YQogd2Via2l0X3dlYl9jb250ZXh0X3ByZWZldGNoX2Rucwog
d2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAord2Via2l0X3dlYl9jb250ZXh0
X2dldF9wcm9jZXNzX21vZGVsCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwK
IAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFj
awpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkx
M2U3NGZkYjBjM2RlYmNiMGUwOTkyODI2MTg3NDE5OGZiZTczNmQuLjFhOGFmODhiODkzZTI1ZTcw
YTI3MzA1ZGUxOTcwMzY1N2UzZjgwMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNC0wMS0yMSAgQWRyaWFuIFBl
cmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBB
UEkgdG8gYWxsb3cgc2V0dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBpbiBXZWJLaXRXZWJDb250ZXh0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU0NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRzIGFjY2Vzc29ycyBpbiBXZWJLaXRXZWJDb250ZXh0IGZvciB0aGUgcHJvY2VzcyBtb2RlbC4K
KyAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLCBhbmQgYSBzaW5nbGUg
d2ViIHByb2Nlc3MgaXMKKyAgICAgICAgdXNlZC4gU2V0dGluZyBXRUJLSVRfUFJPQ0VTU19NT0RF
TF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTCisgICAgICAgIGFzIHRoZSBwcm9jZXNzIG1v
ZGVsIHdpbGwgbWFrZSB1c2Ugb2YgYSBuZXR3b3JrIHByb2Nlc3MgYW5kCisgICAgICAgIG11bHRp
cGxlIHdlYiBwcm9jZXNzZXMuIFNldHRpbmcgdGhlIHByb2Nlc3MgbW9kZWwgbXVzdCBiZSBkb25l
CisgICAgICAgIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBiZWZvcmUgdGhlIHZlcnkgZmlyc3Qgd2Vi
IHByb2Nlc3MgaXMKKyAgICAgICAgc3Bhd25lZC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0
ay9tYWluLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgRW5hYmxlIG11bHRpcGxlIHByb2Nl
c3MgbW9kZSBpZiB0aGUgTUlOSUJST1dTRVJfTVVMVElQUk9DRVNTCisgICAgICAgIGVudmlyb25t
ZW50IHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIG5vdCBlbXB0eS4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGQgbmV3IFRlc3RNdWx0aXByb2Nlc3Mg
dGVzdCBjYXNlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBUZXN0TXVsdGlwcm9jZXNzIHRlc3QgY2FzZS4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vz
cy5jcHA6IEFkZGVkLgorICAgICAgICAobG9hZENoYW5nZWQpOgorICAgICAgICAodGVzdE11bHRp
cGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKToKKyAgICAgICAgKGluaXRpYWxpemVXZWJFeHRlbnNpb25z
KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAg
ICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKyAgICAgICAgSW1wbGVtZW50IHRoZSBHZXRQcm9j
ZXNzSWRlbnRpZmllciBELUJ1cyBtZXRob2QuCisgICAgICAgIChtYWtlQnVzTmFtZSk6CisgICAg
ICAgIENob29zZSBhIGRpZmZlcmVudCBidXMgbmFtZSB3aGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlz
IHVzZWQKKyAgICAgICAgZnJvbSBUZXN0TXVsdGlwcm9jZXNzLgorICAgICAgICAod2Via2l0X3dl
Yl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0YSk6CisgICAgICAgIFVzZSBtYWtl
QnVzTmFtZSgpIHRvIGNob29zZSB0aGUgYnVzIG5hbWUuCisKIDIwMTQtMDEtMjEgIFBldGVyIE1v
bG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBy
dW4tanNjLXN0cmVzcy10ZXN0cyBzaG91bGQgYWNjZXB0IC0tY2hpbGQtcHJvY2Vzc2VzIG9wdGlv
biBhbmQgV0VCS0lUX1RFU1RfQ0hJTERfUFJPQ0VTU0VTIGVudi52YXIKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
CmluZGV4IDUwNDljZjIxZjBlNWQ3NWM1YmQ5YWY0NTcyYjkxMDllODRkZDRlNDAuLmUwOTEyMmVk
YmRlNzhkNmMxYzFjYTNkNWUxYzljZTEwYTFhYTUxODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAt
MjQxLDYgKzI0MSwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogICAg
IGd0a19pbml0KCZhcmdjLCAmYXJndik7CiAKKyAgICBjb25zdCBnY2hhciAqbWluaWJyb3dzZXIg
PSBnX2dldGVudigiTUlOSUJST1dTRVJfTVVMVElQUk9DRVNTIik7CisgICAgaWYgKG1pbmlicm93
c2VyICYmICptaW5pYnJvd3NlcikgeworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3By
b2Nlc3NfbW9kZWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCisgICAgICAgICAg
ICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTKTsKKyAg
ICB9CisKICAgICBHT3B0aW9uQ29udGV4dCAqY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3
KE5VTEwpOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyhjb250ZXh0LCBj
b21tYW5kTGluZU9wdGlvbnMsIDApOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwKGNv
bnRleHQsIGd0a19nZXRfb3B0aW9uX2dyb3VwKFRSVUUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDRmYmQzOTEyNjlhZThkODA0NjY3MjJmMjk5MzRmNmFmYzQxZWFjN2MuLjYw
MDBkMjU2MmFhMjJhODM5OTc4OTc2MDI2N2I0NmFkNmM2Y2NhY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAJ
UHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3IgXAogCVByb2dy
YW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyIFwKIAlQcm9n
cmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdExvYWRlckNsaWVudCBcCisJUHJvZ3Jh
bXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MgXAogCVByb2dyYW1z
L1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcgXAogCVByb2dyYW1zL1Rlc3RX
ZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0
QVBJL1dlYktpdDJHdGsvVGVzdFNTTCBcCkBAIC03NjYsNiArNzY3LDEyIEBAIFByb2dyYW1zX1Rl
c3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0NQUEZMQUdTID0gJCh3ZWJr
aXQyZ3RrX3Rlc3RzCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRl
ckNsaWVudF9MREFERCA9ICQod2Via2l0Mmd0a190ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0xERkxBR1MgPSAkKHdlYmtpdDJn
dGtfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rl
c3RNdWx0aXByb2Nlc3NfU09VUkNFUyA9IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2Vi
S2l0Mkd0a19UZXN0TXVsdGlwcm9jZXNzX0NQUEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2Nw
cGZsYWdzKQorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nl
c3NfTERBREQgPSAkKHdlYmtpdDJndGtfdGVzdHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0
QVBJX1dlYktpdDJHdGtfVGVzdE11bHRpcHJvY2Vzc19MREZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rl
c3RzX2xkZmxhZ3MpCisKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0V2Vi
S2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNwcAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJL
aXQyR3RrX1Rlc3RXZWJLaXRTZXR0aW5nc19DUFBGTEFHUyA9ICQod2Via2l0Mmd0a190ZXN0c19j
cHBmbGFncykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9D
TWFrZUxpc3RzLnR4dAppbmRleCBiODgzY2YxZTZkNDkyZTJkM2Q4M2U1NGE5OWU5ZTJiNzFmZWEw
YzFhLi45NDBlZDczM2FjNDQ5Mzc1NDcxYTA0YmFjMjQ3ZjcwNDFiODRmN2RmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBA
IC05Miw2ICs5Miw3IEBAIEFERF9XSzJfVEVTVChUZXN0RnJhbWUgVGVzdEZyYW1lLmNwcCkKIEFE
RF9XSzJfVEVTVChUZXN0SW5zcGVjdG9yIFRlc3RJbnNwZWN0b3IuY3BwKQogQUREX1dLMl9URVNU
KFRlc3RJbnNwZWN0b3JTZXJ2ZXIgVGVzdEluc3BlY3RvclNlcnZlci5jcHApCiBBRERfV0syX1RF
U1QoVGVzdExvYWRlckNsaWVudCBUZXN0TG9hZGVyQ2xpZW50LmNwcCkKK0FERF9XSzJfVEVTVChU
ZXN0TXVsdGlwcm9jZXNzIFRlc3RNdWx0aXByb2Nlc3MuY3BwKQogQUREX1dLMl9URVNUKFRlc3RQ
cmludGluZyBUZXN0UHJpbnRpbmcuY3BwKQogQUREX1dLMl9URVNUKFRlc3RTU0wgVGVzdFNTTC5j
cHApCiBBRERfV0syX1RFU1QoVGVzdFdlYkV4dGVuc2lvbnMgVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RN
dWx0aXByb2Nlc3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RNdWx0aXByb2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxZDFhODJlYjQ2NDI3OGUzYTFkYmI5ZGUw
YjJmNjA1MzIzODQ1MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTAsMCArMSwxNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgorI2lu
Y2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitjbGFzcyBNdWx0aXByb2Nlc3NUZXN0Oworc3Rh
dGljIHZvaWQgbG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgTXVs
dGlwcm9jZXNzVGVzdCopOworCitzdGF0aWMgZ3VpbnQzMiBuZXh0SW5pdGlhbGl6YXRpb25JZCA9
IDE7CitzdGF0aWMgZ3VpbnQgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCA9IDA7
CitzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzID0gbnVsbHB0cjsKKworY2xhc3MgTXVsdGlwcm9j
ZXNzVGVzdDogcHVibGljIFRlc3QgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgZ3VpbnQg
TlVNX1ZJRVdTID0gMjsKKworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoTXVs
dGlwcm9jZXNzVGVzdCk7CisKKyAgICBNdWx0aXByb2Nlc3NUZXN0KCkKKyAgICAgICAgOiBtX21h
aW5Mb29wKGdfbWFpbl9sb29wX25ldygwLCBUUlVFKSkKKyAgICB7CisgICAgICAgIGZvciAoZ3Vp
bnQgaSA9IDA7IGkgPCBOVU1fVklFV1M7IGkrKykgeworICAgICAgICAgICAgbV93ZWJWaWV3W2ld
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fd2ViVmlld0lkW2ldID0gMDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIH5NdWx0aXByb2Nlc3NUZXN0KCkKKyAgICB7CisgICAgICAgIGZvciAoZ3Vp
bnQgaSA9IDA7IGkgPCBOVU1fVklFV1M7IGkrKykKKyAgICAgICAgICAgIGdfb2JqZWN0X3VucmVm
KG1fd2ViVmlld1tpXSk7CisgICAgICAgIGdfbWFpbl9sb29wX3VucmVmKG1fbWFpbkxvb3ApOwor
ICAgIH0KKworICAgIHZvaWQgc2V0dXBXZWJWaWV3KGd1aW50IGluZGV4KSAKKyAgICB7CisgICAg
ICAgIGdfYXNzZXJ0KGluZGV4IDwgTlVNX1ZJRVdTKTsKKyAgICAgICAgbV93ZWJWaWV3SWRbaW5k
ZXhdID0gbmV4dEluaXRpYWxpemF0aW9uSWQ7CisgICAgICAgIG1fd2ViVmlld1tpbmRleF0gPSBX
RUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2Via2l0X3dlYl92aWV3X25ldygpKSk7
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwobV93ZWJWaWV3W2luZGV4XSwgIjxo
dG1sPjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZp
ZXdbaW5kZXhdLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhsb2FkQ2hhbmdlZCksIHRoaXMp
OworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgZ3Vp
bnQgd2ViUHJvY2Vzc1BpZChndWludCBpbmRleCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KGlu
ZGV4IDwgTlVNX1ZJRVdTKTsKKyAgICAgICAgZ19hc3NlcnQobV93ZWJWaWV3SWRbaW5kZXhdKTsK
KyAgICAgICAgZ19hc3NlcnQobV93ZWJWaWV3W2luZGV4XSk7CisKKyAgICAgICAgR093blB0cjxn
Y2hhcj4gYnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lv
blRlc3QldSIsIG1fd2ViVmlld0lkW2luZGV4XSkpOworICAgICAgICBHUmVmUHRyPEdEQnVzUHJv
eHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkoYnVzTmFtZS5nZXQoKSwKKyAg
ICAgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0
Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgbV9tYWluTG9vcCkpOworCisgICAgICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKAorICAg
ICAgICAgICAgcHJveHkuZ2V0KCksCisgICAgICAgICAgICAiR2V0UHJvY2Vzc0lkZW50aWZpZXIi
LAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05P
TkUsCisgICAgICAgICAgICAtMSwgMCwgMCkpOworICAgICAgICBnX2Fzc2VydChyZXN1bHQpOwor
CisgICAgICAgIGd1aW50MzIgaWRlbnRpZmllciA9IDA7CisgICAgICAgIGdfdmFyaWFudF9nZXQo
cmVzdWx0LmdldCgpLCAiKHUpIiwgJmlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gaWRlbnRp
ZmllcjsKKyAgICB9CisKKyAgICBHTWFpbkxvb3AqIG1fbWFpbkxvb3A7CisgICAgZ3VpbnQgbV93
ZWJWaWV3SWRbMl07CisgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3WzJdOworfTsKKworCitz
dGF0aWMgdm9pZCBsb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2Fk
RXZlbnQgbG9hZEV2ZW50LCBNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0KQoreworICAgIGlmIChsb2Fk
RXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKyAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obG9hZENoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3Qt
Pm1fbWFpbkxvb3ApOworfQorCisKK3N0YXRpYyB2b2lkIHRlc3RNdWx0aXBsZVNlY29uZGFyeVBy
b2Nlc3NlcyhNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8v
IENyZWF0ZSB0d28gd2ViIHZpZXdzLiBBcyB3ZSBhcmUgaW4gbXVsdGlwcm9jZXNzIG1vZGUsIHRo
ZXJlIG11c3QgYmUKKyAgICAvLyB0d28gd2ViIHByb2Nlc3NlcywgcnVubmluZyBhbiBpbnN0YW5j
ZSBvZiB0aGUgd2ViIGV4dGVuc2lvbiBlYWNoLgorICAgIC8vIFRoZSBpbml0aWFsaXplLXdlYi1l
eHRlbnNpb25zIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCB0d2ljZSwgYW5kIHRoZQorICAgIC8vIGlk
ZW50aWZpZXJzIGdlbmVyYXRlZCBmb3IgdGhlbSBtdXN0IGJlIGRpZmZlcmVudCAoYW5kIHRoZWly
IHJlcG9ydGVkCisgICAgLy8gcHJvY2VzcyBpZGVudGlmaWVycykuCisKKyAgICB0ZXN0LT5zZXR1
cFdlYlZpZXcoMCk7CisgICAgdGVzdC0+c2V0dXBXZWJWaWV3KDEpOworCisgICAgZ19hc3NlcnRf
Y21wdWludChpbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50LCA9PSwgMik7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3dlYlZpZXdJZFswXSwgIT0sIHRlc3QtPm1fd2ViVmll
d0lkWzFdKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPndlYlByb2Nlc3NQaWQoMCksICE9
LCB0ZXN0LT53ZWJQcm9jZXNzUGlkKDEpKTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVdl
YkV4dGVuc2lvbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgZ3BvaW50ZXIpCit7CisgICAg
aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCsrOworICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5KGNvbnRleHQsIFdFQktJVF9URVNUX1dF
Ql9FWFRFTlNJT05TX0RJUik7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5z
aW9uc19pbml0aWFsaXphdGlvbl91c2VyX2RhdGEoY29udGV4dCwKKyAgICAgICAgZ192YXJpYW50
X25ld191aW50MzIobmV4dEluaXRpYWxpemF0aW9uSWQrKykpOworfQorCit2b2lkIGJlZm9yZUFs
bCgpCit7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1
bHQoKSwKKyAgICAgICAgImluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMiLCBHX0NBTExCQUNLKGlu
aXRpYWxpemVXZWJFeHRlbnNpb25zKSwgbnVsbHB0cik7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3Byb2Nlc3NfbW9kZWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCisg
ICAgICAgIFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMp
OworCisgICAgYnVzID0gbmV3IFdlYktpdFRlc3RCdXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIE11bHRpcHJvY2Vzc1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJtdWx0aXBsZS1zZWNvbmRhcnktcHJvY2Vzc2VzIiwgdGVzdE11bHRpcGxlU2Vj
b25kYXJ5UHJvY2Vzc2VzKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAgZGVsZXRlIGJ1
czsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2Via2l0X3dlYl9j
b250ZXh0X2dldF9kZWZhdWx0KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlu
aXRpYWxpemVXZWJFeHRlbnNpb25zKSwgbnVsbHB0cik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5k
ZXggZThhMmI5ZjY1MzRhYzdlMzFmZDY5MzFkNzVlODMzYmZmOGYzNGJlOS4uNDBlMjk2OTBkMDk0
NWFlMjY3NGIwZTUwNjYyZjRlZDc5YzhhN2RiYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtNDgs
NiArNDgsOSBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIg
IDxtZXRob2QgbmFtZT0nR2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSc+IgogICAgICIgICA8YXJn
IHR5cGU9J3MnIG5hbWU9J3VzZXJEYXRhJyBkaXJlY3Rpb249J291dCcvPiIKICAgICAiICA8L21l
dGhvZD4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRQcm9jZXNzSWRlbnRpZmllcic+IgorICAg
ICIgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2lkZW50aWZpZXInIGRpcmVjdGlvbj0nb3V0Jy8+Igor
ICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+
IgogICAgICIgIDxzaWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+IgogICAgICIgICA8YXJnIHR5cGU9
J3MnIG5hbWU9J3VyaScgZGlyZWN0aW9uPSdvdXQnLz4iCkBAIC0yMjMsNiArMjI2LDkgQEAgc3Rh
dGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwg
Y29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlw
ZShpbml0aWFsaXphdGlvblVzZXJEYXRhLmdldCgpLCBHX1ZBUklBTlRfVFlQRV9TVFJJTkcpKTsK
ICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9u
LCBnX3ZhcmlhbnRfbmV3KCIocykiLAogICAgICAgICAgICAgZ192YXJpYW50X2dldF9zdHJpbmco
aW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICB9IGVsc2UgaWYg
KCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJZGVudGlmaWVyIikpIHsKKyAgICAg
ICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLAorICAg
ICAgICAgICAgZ192YXJpYW50X25ldygiKHUpIiwgc3RhdGljX2Nhc3Q8Z3VpbnQzMj4oZ2V0cGlk
KCkpKSk7CiAgICAgfQogfQogCkBAIC0yNjIsNiArMjY4LDE4IEBAIHN0YXRpYyB2b2lkIGJ1c0Fj
cXVpcmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBu
YW1lLCBnCiAgICAgfQogfQogCitzdGF0aWMgZ2NoYXIqIG1ha2VCdXNOYW1lKEdWYXJpYW50KiB1
c2VyRGF0YSkKK3sKKyAgICAvLyBXaGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQgYnkgVGVz
dE11bHRpcHJvY2VzcywgYW4gdWludDMyCisgICAgLy8gaWRlbnRpZmllciBpcyBwYXNzZWQgYXMg
dXNlciBkYXRhLiBJdCB1bmlxdWVseSBpZGVudGlmaWVzCisgICAgLy8gdGhlIHdlYiBwcm9jZXNz
LCBhbmQgdGhlIFVJIHNpZGUgZXhwZWN0cyBpdCBhZGRlZCBhcyBzdWZmaXggdG8KKyAgICAvLyB0
aGUgYnVzIG5hbWUuCisgICAgaWYgKHVzZXJEYXRhICYmIGdfdmFyaWFudF9pc19vZl90eXBlKHVz
ZXJEYXRhLCBHX1ZBUklBTlRfVFlQRV9VSU5UMzIpKQorICAgICAgICByZXR1cm4gZ19zdHJkdXBf
cHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBnX3ZhcmlhbnRfZ2V0
X3VpbnQzMih1c2VyRGF0YSkpOworCisgICAgcmV0dXJuIGdfc3RyZHVwKCJvcmcud2Via2l0Lmd0
ay5XZWJFeHRlbnNpb25UZXN0Iik7Cit9CisKIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uLCBHVmFyaWFudCogdXNlckRhdGEpCiB7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSA9IHVzZXJEYXRhOwpAQCAtMjY5LDkgKzI4NywxMCBAQCBleHRlcm4gIkMiIHZvaWQgd2Via2l0
X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0YShXZWJLaXRXZWJFeHRlbnNp
bwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZXh0ZW5zaW9uLCAicGFnZS1jcmVhdGVkIiwgR19DQUxM
QkFDSyhwYWdlQ3JlYXRlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1bHQoKSwgIndpbmRvdy1vYmplY3QtY2xl
YXJlZCIsIEdfQ0FMTEJBQ0sod2luZG93T2JqZWN0Q2xlYXJlZCksIDApOwogCisgICAgR093blB0
cjxnY2hhcj4gYnVzTmFtZShtYWtlQnVzTmFtZSh1c2VyRGF0YSkpOwogICAgIGdfYnVzX293bl9u
YW1lKAogICAgICAgICBHX0JVU19UWVBFX1NFU1NJT04sCi0gICAgICAgICJvcmcud2Via2l0Lmd0
ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgYnVzTmFtZS5nZXQoKSwKICAgICAgICAgR19C
VVNfTkFNRV9PV05FUl9GTEFHU19OT05FLAogICAgICAgICBidXNBY3F1aXJlZENhbGxiYWNrLAog
ICAgICAgICAwLCAwLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221848</attachid>
            <date>2014-01-22 02:58:32 -0800</date>
            <delta_ts>2014-01-26 08:25:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140122125902.patch</filename>
            <type>text/plain</type>
            <size>22259</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmJkYjE4ZWU2ZmI1ZGFk
NDRiZDg2ODA5NzE0YjU5MTBjYjU2ZDRkNC4uYzRkZjVkMTJiYjgxYmMwNTg1Yzg4ZTUzOWUzOWFk
M2RjYjRkNzliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAxLTIyICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBTZXR0aW5nIFdFQktJVF9QUk9DRVNT
X01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMKKyAgICAgICAgYXMgdGhlIHByb2Nl
c3MgbW9kZWwgd2lsbCBtYWtlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2VzcyBhbmQKKyAgICAgICAg
bXVsdGlwbGUgd2ViIHByb2Nlc3Nlcy4gU2V0dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBtdXN0IGJl
IGRvbmUKKyAgICAgICAgYXMgZWFybHkgYXMgcG9zc2libGUsIGJlZm9yZSB0aGUgdmVyeSBmaXJz
dCB3ZWIgcHJvY2VzcyBpcworICAgICAgICBzcGF3bmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgaW4g
dGhlIEFQSSB0byBnZXQvc2V0IHRoZSBwcm9jZXNzIG1vZGVsLgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oOgorICAgICAgICBEZWZpbmUgdGhlIFdlYktpdFByb2Nlc3NNb2RlbCBlbnVt
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisgICAgICAgIEFkZCBuZXcgcHVibGljIEFQSSBiaXRzIHRvIHRoZSBkb2N1bWVudGF0aW9u
LgorCiAyMDE0LTAxLTIyICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXVtXSzJdIFVzZSBzdGQ6OmZ1bmN0aW9uIGluIHRoZSByZXN0IG9mIEVG
TCdzIFdvcmtRdWV1ZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBkNTZmNWU1NDNlMjM0
M2NkMTU0ZjkzYTEwOGU5NDhhYWZmODJhOTBlLi4xNDJhOTRmZDk5ODdjOTdkNGZlNTY3OTI0Yzdl
MjE2NjQ3N2Q3YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjQsOCArNjQsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogICogVGhlICNXZWJLaXRXZWJDb250ZXh0IG1hbmFnZXMgYWxsIGFzcGVjdHMg
Y29tbW9uIHRvIGFsbAogICogI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMuCiAgKgotICogWW91IGNh
biBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIHdpdGgKLSAqIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfY2FjaGVfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgorICogWW91IGNh
biBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIGFuZCAjV2ViS2l0UHJvY2Vzc01vZGVsIHdp
dGgKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSBhbmQKKyAqIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRz
IG9mCiAgKiB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFjY2VzcyB0aGUgI1dlYktpdENvb2tp
ZU1hbmFnZXIgb3IgdGhlCiAgKiAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIHRvIHNwZWNpZnkgdGhl
IGJlaGF2aW91ciBvZiB5b3VyIGFwcGxpY2F0aW9uCiAgKiByZWdhcmRpbmcgY29va2llcyBhbmQg
c2VjdXJpdHksIHVzaW5nCkBAIC04ODksNiArODkwLDc4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0CiAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOCho
b3N0KSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
OgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9kZWw6
IGEgI1dlYktpdFByb2Nlc3NNb2RlbAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9kZWwg
Zm9yIFdlYlZpZXdzLCB3aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBob3cg
YXV4aWxpYXJ5IHByb2Nlc3NlcyBhcmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcwor
ICogJVdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyBpcyBzdWl0
YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEgc21hbGwgYW1vdW50
IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1bWVudHMgd2hpY2gg
aXMgY29uc2lkZXJlZCBzYWZlIC0tIGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGljYXRp
b25zIHdoaWNoIG1heSBwb3RlbnRpYWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmlld3Mg
LS1mb3IKKyAqIGV4YW1wbGUgYSBtdWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2FudCB0
byB1c2UKKyAqICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VT
U0VTIHRvIHVzZSBvbmUgYXV4aWxpYXJ5CisgKiBwcm9jZXNzIHBlciB2aWV3LiBVc2luZyB0aGlz
IG1vZGVsLCB3aGVuIGEgV2ViVmlldyBpbiBhIHRhYiBoYW5ncyBvcgorICogY3Jhc2hlcywgdGhl
IHJlc3Qgb2YgdGhlIHRhYnMgaW4gdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCB3b3JrIG5vcm1hbGx5
LgorICoKKyAqIFRoaXMgbWV0aG9kIDxzdHJvbmc+bXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBv
dGhlciBmdW5jdGlvbnM8L3N0cm9uZz4sCisgKiBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbiB5b3Vy
IGFwcGxpY2F0aW9uLiBDYWxsaW5nIGl0IGxhdGVyIHdpbGwgbWFrZQorICogeW91ciBhcHBsaWNh
dGlvbiBjcmFzaC4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9wcm9jZXNzX21vZGVsKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFBy
b2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCit7CisgICAgUHJvY2Vzc01vZGVsIG5ld1Byb2Nlc3NN
b2RlbDsKKworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRl
eHQpKTsKKworICAgIHN3aXRjaCAocHJvY2Vzc01vZGVsKSB7CisgICAgY2FzZSBXRUJLSVRfUFJP
Q0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M6CisgICAgICAgIG5ld1Byb2Nlc3NN
b2RlbCA9IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NF
U1NFUzoKKyAgICAgICAgbmV3UHJvY2Vzc01vZGVsID0gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNv
bmRhcnlQcm9jZXNzZXM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorCisgICAgaWYgKG5ld1Byb2Nlc3NNb2RlbCAh
PSBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wcm9jZXNzTW9kZWwoKSkgeworICAgICAgICBjb250
ZXh0LT5wcml2LT5jb250ZXh0LT5zZXRVc2VzTmV0d29ya1Byb2Nlc3MobmV3UHJvY2Vzc01vZGVs
ID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKKyAgICAgICAgY29u
dGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0UHJvY2Vzc01vZGVsKG5ld1Byb2Nlc3NNb2RlbCk7Cisg
ICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbDoK
KyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBSZXR1cm5zIHRoZSBj
dXJyZW50IHByb2Nlc3MgbW9kZWwuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdmFs
dWUKKyAqIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbgorICogd2Via2l0
X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKCkuCisgKgorICogUmV0dXJuczogdGhlIGN1
cnJlbnQgI1dlYktpdFByb2Nlc3NNb2RlbAorICovCitXZWJLaXRQcm9jZXNzTW9kZWwgd2Via2l0
X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRl
eHQpLCBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MpOworCisg
ICAgc3dpdGNoIChjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wcm9jZXNzTW9kZWwoKSkgeworICAg
IGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzsKKyAgICBjYXNl
IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOgorICAgICAgICByZXR1cm4g
V0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUzsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKworICAgIHJl
dHVybiBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M7Cit9CisK
IFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3du
bG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4
IDFlM2I5YjU4OGQ2NWE4NTQ5OWE4NmJiNzE2Y2I2N2JlMjNkOTIyYWEuLjg1MmRlM2E0MWVjMWI2
MTA1ZjZlYWVmZTI3MDhmMjA1OGZlNDk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTYzLDYgKzYzLDI3IEBAIHR5
cGVkZWYgZW51bSB7CiB9IFdlYktpdENhY2hlTW9kZWw7CiAKIC8qKgorICogV2ViS2l0UHJvY2Vz
c01vZGVsOgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VT
UzogVXNlIGEgc2luZ2xlIHByb2Nlc3MgdG8KKyAqICAgcGVyZm9ybSBjb250ZW50IHJlbmRlcmlu
Zy4gVGhlIHByb2Nlc3MgaXMgc2hhcmVkIGFtb25nIGFsbCB0aGUKKyAqICAgI1dlYktpdFdlYlZp
ZXcgaW5zdGFuY2VzIGNyZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBJZiB0aGUgc2Vjb25kYXJ5
CisgKiAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgcHJvY2VzcyBtb2RlbCwgYW5kIGl0IHNob3VsZCBz
dWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExF
X1NFQ09OREFSWV9QUk9DRVNTRVM6IFVzZSBvbmUgcHJvY2VzcyBmb3IKKyAqICAgZWFjaCAjV2Vi
S2l0V2ViVmlldy4gVGhlIG1haW4gYWR2YW50YWdlIG9mIHRoaXMgcHJvY2VzcyBtb2RlbCBpcyB0
aGF0CisgKiAgIHRoZSByZW5kZXJpbmcgcHJvY2VzcyBmb3IgYSB3ZWIgdmlldyBjYW4gY3Jhc2gg
d2hpbGUgdGhlIHJlc3Qgb2YgdGhlCisgKiAgIHZpZXdzIGtlZXAgd29ya2luZyBub3JtYWxseS4g
VGhpcyBwcm9jZXNzIG1vZGVsIGlzIGluZGljYXRlZCBmb3IKKyAqICAgYXBwbGljYXRpb25zIHdo
aWNoIG1heSB1c2UgYSBudW1iZXIgb2Ygd2ViIHZpZXdzIGFuZCB0aGUgY29udGVudCBvZgorICog
ICBpbiBlYWNoIG11c3Qgbm90IGludGVyZmVyZSB3aXRoIHRoZSByZXN0IC0tIGZvciBleGFtcGxl
IGEgZnVsbC1mbGVkZ2VkCisgKiAgIHdlYiBicm93c2VyIHdpdGggc3VwcG9ydCBmb3IgbXVsdGlw
bGUgdGFicy4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgI1dl
YktpdFdlYkNvbnRleHQgcHJvY2VzcyBtb2RlbC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MsCisgICAgV0VCS0lU
X1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUworfSBXZWJLaXRQcm9j
ZXNzTW9kZWw7CisKKy8qKgogICogV2ViS2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJVF9U
TFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJyb3JzLgogICogQFdFQktJVF9U
TFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIHdpbGwgZW1pdApAQCAtMjEzLDYgKzIz
NCwxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
ICAgKFdlYktpdFdlYkNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcm9jZXNzTW9kZWwgICAgICAgICAg
ICAgcHJvY2Vzc19tb2RlbCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UHJvY2Vzc01vZGVsCit3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAxYzEzYzZjMDczYTc1ZDE5N2Q3MDU2MmMw
Mjk3OTIxZjdiNjM4MmY0Li45NDIxNDk2NmQ1YzI2NTZmZjk2YzYzOGI4NDk4YjA1NGNkMmU3Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTI0LDYgKzI0LDcgQEAgV0VCS0lUX09C
U09MRVRFX0FQSQogPFRJVExFPldlYktpdFdlYkNvbnRleHQ8L1RJVExFPgogV2ViS2l0V2ViQ29u
dGV4dAogV2ViS2l0Q2FjaGVNb2RlbAorV2ViS2l0UHJvY2Vzc01vZGVsCiBXZWJLaXRUTFNFcnJv
cnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdAogd2Via2l0X3dlYl9jb250
ZXh0X2dldF9jYWNoZV9tb2RlbApAQCAtNTAsNiArNTEsOCBAQCB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YQogd2Via2l0X3dlYl9j
b250ZXh0X3ByZWZldGNoX2Rucwogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2Rp
cmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCit3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3Byb2Nlc3NfbW9kZWwKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDIyYmFhM2NmMDRjYTA5MDkxMjQ3Yjg1ZTJmOTVjZTk3OWNiNTJj
MTEuLjdiYzE5NTlhMjE4NjNlODAxNjlhMWY3M2Y2ZTdiMWJjOWJlZWVmZTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAxNC0wMS0yMiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgc2V0dGluZyB0aGUgcHJvY2VzcyBtb2Rl
bCBpbiBXZWJLaXRXZWJDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjU0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIGFjY2Vzc29ycyBpbiBXZWJLaXRXZWJDb250ZXh0IGZv
ciB0aGUgcHJvY2VzcyBtb2RlbC4KKyAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdW5j
aGFuZ2VkLCBhbmQgYSBzaW5nbGUgd2ViIHByb2Nlc3MgaXMKKyAgICAgICAgdXNlZC4gU2V0dGlu
ZyBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTCisgICAg
ICAgIGFzIHRoZSBwcm9jZXNzIG1vZGVsIHdpbGwgbWFrZSB1c2Ugb2YgYSBuZXR3b3JrIHByb2Nl
c3MgYW5kCisgICAgICAgIG11bHRpcGxlIHdlYiBwcm9jZXNzZXMuIFNldHRpbmcgdGhlIHByb2Nl
c3MgbW9kZWwgbXVzdCBiZSBkb25lCisgICAgICAgIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBiZWZv
cmUgdGhlIHZlcnkgZmlyc3Qgd2ViIHByb2Nlc3MgaXMKKyAgICAgICAgc3Bhd25lZC4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
RW5hYmxlIG11bHRpcGxlIHByb2Nlc3MgbW9kZSBpZiB0aGUgTUlOSUJST1dTRVJfTVVMVElQUk9D
RVNTCisgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIG5vdCBlbXB0
eS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGQg
bmV3IFRlc3RNdWx0aXByb2Nlc3MgdGVzdCBjYXNlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBUZXN0TXVs
dGlwcm9jZXNzIHRlc3QgY2FzZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAobG9hZENoYW5nZWQp
OgorICAgICAgICAodGVzdE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKToKKyAgICAgICAgKGlu
aXRpYWxpemVXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChh
ZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4
dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKyAgICAgICAg
SW1wbGVtZW50IHRoZSBHZXRQcm9jZXNzSWRlbnRpZmllciBELUJ1cyBtZXRob2QuCisgICAgICAg
IChtYWtlQnVzTmFtZSk6CisgICAgICAgIENob29zZSBhIGRpZmZlcmVudCBidXMgbmFtZSB3aGVu
IHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQKKyAgICAgICAgZnJvbSBUZXN0TXVsdGlwcm9jZXNz
LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0
YSk6CisgICAgICAgIFVzZSBtYWtlQnVzTmFtZSgpIHRvIGNob29zZSB0aGUgYnVzIG5hbWUuCisK
IDIwMTQtMDEtMjEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFkZCBJYW4gYW5kIFJpY2t5IHRvIHRoZSBjb250cmlidXRvciBsaXN0CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwppbmRleCA1MDQ5Y2YyMWYwZTVkNzVjNWJkOWFmNDU3MmI5MTA5ZTg0ZGQ0ZTQwLi5l
MDkxMjJlZGJkZTc4ZDZjMWMxY2EzZDVlMWM5Y2UxMGExYWE1MTg3IDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMKQEAgLTI0MSw2ICsyNDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
IHsKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCisgICAgY29uc3QgZ2NoYXIgKm1pbmli
cm93c2VyID0gZ19nZXRlbnYoIk1JTklCUk9XU0VSX01VTFRJUFJPQ0VTUyIpOworICAgIGlmICht
aW5pYnJvd3NlciAmJiAqbWluaWJyb3dzZXIpIHsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9wcm9jZXNzX21vZGVsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAg
ICAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NF
Uyk7CisgICAgfQorCiAgICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlvbl9jb250
ZXh0X25ldyhOVUxMKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMoY29u
dGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCAwKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9n
cm91cChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cChUUlVFKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQppbmRleCA0ZmJkMzkxMjY5YWU4ZDgwNDY2NzIyZjI5OTM0ZjZhZmM0MWVh
YzdjLi42MDAwZDI1NjJhYTIyYTgzOTk3ODk3NjAyNjdiNDZhZDZjNmNjYWNiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTE2MSw2ICsxNjEsNyBAQCBub2luc3RfUFJPR1JBTVMg
Kz0gXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yIFwK
IAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZlciBc
CiAJUHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RMb2FkZXJDbGllbnQgXAor
CVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNzIFwKIAlQ
cm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdFByaW50aW5nIFwKIAlQcm9ncmFt
cy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcyBcCiAJUHJvZ3JhbXMvVGVz
dFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RTU0wgXApAQCAtNzY2LDYgKzc2NywxMiBAQCBQcm9n
cmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9DUFBGTEFHUyA9
ICQod2Via2l0Mmd0a190ZXN0cwogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rl
c3RMb2FkZXJDbGllbnRfTERBREQgPSAkKHdlYmtpdDJndGtfdGVzdHNfbGRhZGQpCiBQcm9ncmFt
c19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9MREZMQUdTID0gJCh3
ZWJraXQyZ3RrX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0
Mkd0a19UZXN0TXVsdGlwcm9jZXNzX1NPVVJDRVMgPSBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCitQcm9ncmFtc19UZXN0V2ViS2l0
QVBJX1dlYktpdDJHdGtfVGVzdE11bHRpcHJvY2Vzc19DUFBGTEFHUyA9ICQod2Via2l0Mmd0a190
ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TXVs
dGlwcm9jZXNzX0xEQUREID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfVGVz
dFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nlc3NfTERGTEFHUyA9ICQod2Via2l0
Mmd0a190ZXN0c19sZGZsYWdzKQorCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtf
VGVzdFdlYktpdFNldHRpbmdzX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfV2ViS2l0Mkd0a19UZXN0V2ViS2l0U2V0dGluZ3NfQ1BQRkxBR1MgPSAkKHdlYmtpdDJndGtf
dGVzdHNfY3BwZmxhZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggYjg4M2NmMWU2ZDQ5MmUyZDNkODNlNTRhOTllOWUy
YjcxZmVhMGMxYS4uOTQwZWQ3MzNhYzQ0OTM3NTQ3MWEwNGJhYzI0N2Y3MDQxYjg0ZjdkZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3Rz
LnR4dApAQCAtOTIsNiArOTIsNyBAQCBBRERfV0syX1RFU1QoVGVzdEZyYW1lIFRlc3RGcmFtZS5j
cHApCiBBRERfV0syX1RFU1QoVGVzdEluc3BlY3RvciBUZXN0SW5zcGVjdG9yLmNwcCkKIEFERF9X
SzJfVEVTVChUZXN0SW5zcGVjdG9yU2VydmVyIFRlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwKQogQURE
X1dLMl9URVNUKFRlc3RMb2FkZXJDbGllbnQgVGVzdExvYWRlckNsaWVudC5jcHApCitBRERfV0sy
X1RFU1QoVGVzdE11bHRpcHJvY2VzcyBUZXN0TXVsdGlwcm9jZXNzLmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0UHJpbnRpbmcgVGVzdFByaW50aW5nLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0U1NMIFRl
c3RTU0wuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJFeHRlbnNpb25zIFRlc3RXZWJFeHRlbnNp
b25zLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0TXVsdGlwcm9jZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWQxYTgyZWI0NjQyNzhlM2Ex
ZGJiOWRlMGIyZjYwNTMyMzg0NTE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCkBAIC0wLDAgKzEsMTQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0TWFpbi5oIgorI2luY2x1ZGUgIldlYktpdFRlc3RCdXMu
aCIKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworY2xhc3MgTXVsdGlwcm9jZXNzVGVz
dDsKK3N0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZl
bnQsIE11bHRpcHJvY2Vzc1Rlc3QqKTsKKworc3RhdGljIGd1aW50MzIgbmV4dEluaXRpYWxpemF0
aW9uSWQgPSAxOworc3RhdGljIGd1aW50IGluaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291
bnQgPSAwOworc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1cyA9IG51bGxwdHI7CisKK2NsYXNzIE11
bHRpcHJvY2Vzc1Rlc3Q6IHB1YmxpYyBUZXN0IHsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0
IGd1aW50IE5VTV9WSUVXUyA9IDI7CisKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhU
VVJFKE11bHRpcHJvY2Vzc1Rlc3QpOworCisgICAgTXVsdGlwcm9jZXNzVGVzdCgpCisgICAgICAg
IDogbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCisgICAgeworICAgICAgICBm
b3IgKGd1aW50IGkgPSAwOyBpIDwgTlVNX1ZJRVdTOyBpKyspIHsKKyAgICAgICAgICAgIG1fd2Vi
Vmlld1tpXSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3dlYlZpZXdJZFtpXSA9IDA7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB+TXVsdGlwcm9jZXNzVGVzdCgpCisgICAgeworICAgICAgICBm
b3IgKGd1aW50IGkgPSAwOyBpIDwgTlVNX1ZJRVdTOyBpKyspCisgICAgICAgICAgICBnX29iamVj
dF91bnJlZihtX3dlYlZpZXdbaV0pOworICAgICAgICBnX21haW5fbG9vcF91bnJlZihtX21haW5M
b29wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldHVwV2ViVmlldyhndWludCBpbmRleCkgCisgICAg
eworICAgICAgICBnX2Fzc2VydChpbmRleCA8IE5VTV9WSUVXUyk7CisgICAgICAgIG1fd2ViVmll
d0lkW2luZGV4XSA9IG5leHRJbml0aWFsaXphdGlvbklkOworICAgICAgICBtX3dlYlZpZXdbaW5k
ZXhdID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSkpOworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKG1fd2ViVmlld1tpbmRl
eF0sICI8aHRtbD48L2h0bWw+IiwgbnVsbHB0cik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3W2luZGV4XSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobG9hZENoYW5nZWQp
LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKwor
ICAgIGd1aW50IHdlYlByb2Nlc3NQaWQoZ3VpbnQgaW5kZXgpCisgICAgeworICAgICAgICBnX2Fz
c2VydChpbmRleCA8IE5VTV9WSUVXUyk7CisgICAgICAgIGdfYXNzZXJ0KG1fd2ViVmlld0lkW2lu
ZGV4XSk7CisgICAgICAgIGdfYXNzZXJ0KG1fd2ViVmlld1tpbmRleF0pOworCisgICAgICAgIEdP
d25QdHI8Z2NoYXI+IGJ1c05hbWUoZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJF
eHRlbnNpb25UZXN0JXUiLCBtX3dlYlZpZXdJZFtpbmRleF0pKTsKKyAgICAgICAgR1JlZlB0cjxH
REJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KGJ1c05hbWUuZ2V0
KCksCisgICAgICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3Jn
LndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsIG1fbWFpbkxvb3ApKTsKKworICAgICAgICBH
UmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3lu
YygKKyAgICAgICAgICAgIHByb3h5LmdldCgpLAorICAgICAgICAgICAgIkdldFByb2Nlc3NJZGVu
dGlmaWVyIiwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBHX0RCVVNfQ0FMTF9G
TEFHU19OT05FLAorICAgICAgICAgICAgLTEsIDAsIDApKTsKKyAgICAgICAgZ19hc3NlcnQocmVz
dWx0KTsKKworICAgICAgICBndWludDMyIGlkZW50aWZpZXIgPSAwOworICAgICAgICBnX3Zhcmlh
bnRfZ2V0KHJlc3VsdC5nZXQoKSwgIih1KSIsICZpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJu
IGlkZW50aWZpZXI7CisgICAgfQorCisgICAgR01haW5Mb29wKiBtX21haW5Mb29wOworICAgIGd1
aW50IG1fd2ViVmlld0lkWzJdOworICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlld1syXTsKK307
CisKKworc3RhdGljIHZvaWQgbG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgTXVsdGlwcm9jZXNzVGVzdCogdGVzdCkKK3sKKyAgICBp
ZiAobG9hZEV2ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47Cisg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXcsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGxvYWRDaGFuZ2VkKSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3BfcXVp
dCh0ZXN0LT5tX21haW5Mb29wKTsKK30KKworCitzdGF0aWMgdm9pZCB0ZXN0TXVsdGlwbGVTZWNv
bmRhcnlQcm9jZXNzZXMoTXVsdGlwcm9jZXNzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICAvLyBDcmVhdGUgdHdvIHdlYiB2aWV3cy4gQXMgd2UgYXJlIGluIG11bHRpcHJvY2VzcyBt
b2RlLCB0aGVyZSBtdXN0IGJlCisgICAgLy8gdHdvIHdlYiBwcm9jZXNzZXMsIHJ1bm5pbmcgYW4g
aW5zdGFuY2Ugb2YgdGhlIHdlYiBleHRlbnNpb24gZWFjaC4KKyAgICAvLyBUaGUgaW5pdGlhbGl6
ZS13ZWItZXh0ZW5zaW9ucyBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgdHdpY2UsIGFuZCB0aGUKKyAg
ICAvLyBpZGVudGlmaWVycyBnZW5lcmF0ZWQgZm9yIHRoZW0gbXVzdCBiZSBkaWZmZXJlbnQgKGFu
ZCB0aGVpciByZXBvcnRlZAorICAgIC8vIHByb2Nlc3MgaWRlbnRpZmllcnMpLgorCisgICAgdGVz
dC0+c2V0dXBXZWJWaWV3KDApOworICAgIHRlc3QtPnNldHVwV2ViVmlldygxKTsKKworICAgIGdf
YXNzZXJ0X2NtcHVpbnQoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIDIp
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV93ZWJWaWV3SWRbMF0sICE9LCB0ZXN0LT5t
X3dlYlZpZXdJZFsxXSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT53ZWJQcm9jZXNzUGlk
KDApLCAhPSwgdGVzdC0+d2ViUHJvY2Vzc1BpZCgxKSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRp
YWxpemVXZWJFeHRlbnNpb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGdwb2ludGVyKQor
eworICAgIGluaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQrKzsKKyAgICB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeShjb250ZXh0LCBXRUJLSVRf
VEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2Vi
X2V4dGVuc2lvbnNfaW5pdGlhbGl6YXRpb25fdXNlcl9kYXRhKGNvbnRleHQsCisgICAgICAgIGdf
dmFyaWFudF9uZXdfdWludDMyKG5leHRJbml0aWFsaXphdGlvbklkKyspKTsKK30KKwordm9pZCBi
ZWZvcmVBbGwoKQoreworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl9jb250ZXh0X2dl
dF9kZWZhdWx0KCksCisgICAgICAgICJpbml0aWFsaXplLXdlYi1leHRlbnNpb25zIiwgR19DQUxM
QkFDSyhpbml0aWFsaXplV2ViRXh0ZW5zaW9ucyksIG51bGxwdHIpOworCisgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpLAorICAgICAgICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJP
Q0VTU0VTKTsKKworICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVzKCk7CisgICAgaWYgKCFidXMt
PnJ1bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBNdWx0aXByb2Nlc3NUZXN0OjphZGQoIldl
YktpdFdlYkNvbnRleHQiLCAibXVsdGlwbGUtc2Vjb25kYXJ5LXByb2Nlc3NlcyIsIHRlc3RNdWx0
aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworICAgIGRl
bGV0ZSBidXM7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqPihpbml0aWFsaXplV2ViRXh0ZW5zaW9ucyksIG51bGxwdHIpOworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3Qu
Y3BwCmluZGV4IGU4YTJiOWY2NTM0YWM3ZTMxZmQ2OTMxZDc1ZTgzM2JmZjhmMzRiZTkuLmMyMjQ1
YTgzODE4ZTJlNDdkYWMyY2YyMTU1ODhjMGUzYTVjOGRlZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUHJv
Y2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00
OCw2ICs0OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAg
IiAgPG1ldGhvZCBuYW1lPSdHZXRJbml0aWFsaXphdGlvblVzZXJEYXRhJz4iCiAgICAgIiAgIDxh
cmcgdHlwZT0ncycgbmFtZT0ndXNlckRhdGEnIGRpcmVjdGlvbj0nb3V0Jy8+IgogICAgICIgIDwv
bWV0aG9kPiIKKyAgICAiICA8bWV0aG9kIG5hbWU9J0dldFByb2Nlc3NJZGVudGlmaWVyJz4iCisg
ICAgIiAgIDxhcmcgdHlwZT0ndScgbmFtZT0naWRlbnRpZmllcicgZGlyZWN0aW9uPSdvdXQnLz4i
CisgICAgIiAgPC9tZXRob2Q+IgogICAgICIgIDxzaWduYWwgbmFtZT0nRG9jdW1lbnRMb2FkZWQn
Lz4iCiAgICAgIiAgPHNpZ25hbCBuYW1lPSdVUklDaGFuZ2VkJz4iCiAgICAgIiAgIDxhcmcgdHlw
ZT0ncycgbmFtZT0ndXJpJyBkaXJlY3Rpb249J291dCcvPiIKQEAgLTIyMyw2ICsyMjcsOSBAQCBz
dGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9pc19vZl90
eXBlKGluaXRpYWxpemF0aW9uVXNlckRhdGEuZ2V0KCksIEdfVkFSSUFOVF9UWVBFX1NUUklORykp
OwogICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRp
b24sIGdfdmFyaWFudF9uZXcoIihzKSIsCiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0X3N0cmlu
Zyhpbml0aWFsaXphdGlvblVzZXJEYXRhLmdldCgpLCBudWxscHRyKSkpOworICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0UHJvY2Vzc0lkZW50aWZpZXIiKSkgeworICAg
ICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sCisg
ICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIodSkiLCBzdGF0aWNfY2FzdDxndWludDMyPihnZXRD
dXJyZW50UHJvY2Vzc0lEKCkpKSk7CiAgICAgfQogfQogCkBAIC0yNjIsNiArMjY5LDE4IEBAIHN0
YXRpYyB2b2lkIGJ1c0FjcXVpcmVkQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBjb25zdCBjaGFyKiBuYW1lLCBnCiAgICAgfQogfQogCitzdGF0aWMgZ2NoYXIqIG1ha2VCdXNO
YW1lKEdWYXJpYW50KiB1c2VyRGF0YSkKK3sKKyAgICAvLyBXaGVuIHRoZSB3ZWIgZXh0ZW5zaW9u
IGlzIHVzZWQgYnkgVGVzdE11bHRpcHJvY2VzcywgYW4gdWludDMyCisgICAgLy8gaWRlbnRpZmll
ciBpcyBwYXNzZWQgYXMgdXNlciBkYXRhLiBJdCB1bmlxdWVseSBpZGVudGlmaWVzCisgICAgLy8g
dGhlIHdlYiBwcm9jZXNzLCBhbmQgdGhlIFVJIHNpZGUgZXhwZWN0cyBpdCBhZGRlZCBhcyBzdWZm
aXggdG8KKyAgICAvLyB0aGUgYnVzIG5hbWUuCisgICAgaWYgKHVzZXJEYXRhICYmIGdfdmFyaWFu
dF9pc19vZl90eXBlKHVzZXJEYXRhLCBHX1ZBUklBTlRfVFlQRV9VSU5UMzIpKQorICAgICAgICBy
ZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUi
LCBnX3ZhcmlhbnRfZ2V0X3VpbnQzMih1c2VyRGF0YSkpOworCisgICAgcmV0dXJuIGdfc3RyZHVw
KCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0Iik7Cit9CisKIGV4dGVybiAiQyIgdm9p
ZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogdXNlckRhdGEpCiB7CiAgICAgaW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSA9IHVzZXJEYXRhOwpAQCAtMjY5LDkgKzI4OCwxMCBAQCBleHRlcm4g
IkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0YShX
ZWJLaXRXZWJFeHRlbnNpbwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZXh0ZW5zaW9uLCAicGFnZS1j
cmVhdGVkIiwgR19DQUxMQkFDSyhwYWdlQ3JlYXRlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1bHQoKSwgIndp
bmRvdy1vYmplY3QtY2xlYXJlZCIsIEdfQ0FMTEJBQ0sod2luZG93T2JqZWN0Q2xlYXJlZCksIDAp
OwogCisgICAgR093blB0cjxnY2hhcj4gYnVzTmFtZShtYWtlQnVzTmFtZSh1c2VyRGF0YSkpOwog
ICAgIGdfYnVzX293bl9uYW1lKAogICAgICAgICBHX0JVU19UWVBFX1NFU1NJT04sCi0gICAgICAg
ICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgYnVzTmFtZS5nZXQo
KSwKICAgICAgICAgR19CVVNfTkFNRV9PV05FUl9GTEFHU19OT05FLAogICAgICAgICBidXNBY3F1
aXJlZENhbGxiYWNrLAogICAgICAgICAwLCAwLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222273</attachid>
            <date>2014-01-26 08:26:02 -0800</date>
            <delta_ts>2014-01-26 09:20:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140126182635.patch</filename>
            <type>text/plain</type>
            <size>22371</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWZkMzRhNzBiNGM1YmIy
MDVhMzE1Y2E0ZTAwMmE1YWIwYTgzODNjZi4uYWZjMGYxYjBjNmZiMzJmODM1MGYxODJmMTUyNTFm
OTAyMzI2MjdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAxLTI2ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBTZXR0aW5nIFdFQktJVF9QUk9DRVNT
X01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMKKyAgICAgICAgYXMgdGhlIHByb2Nl
c3MgbW9kZWwgd2lsbCBtYWtlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2VzcyBhbmQKKyAgICAgICAg
bXVsdGlwbGUgd2ViIHByb2Nlc3Nlcy4gU2V0dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBtdXN0IGJl
IGRvbmUKKyAgICAgICAgYXMgZWFybHkgYXMgcG9zc2libGUsIGJlZm9yZSB0aGUgdmVyeSBmaXJz
dCB3ZWIgcHJvY2VzcyBpcworICAgICAgICBzcGF3bmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgaW4g
dGhlIEFQSSB0byBnZXQvc2V0IHRoZSBwcm9jZXNzIG1vZGVsLgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oOgorICAgICAgICBEZWZpbmUgdGhlIFdlYktpdFByb2Nlc3NNb2RlbCBlbnVt
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisgICAgICAgIEFkZCBuZXcgcHVibGljIEFQSSBiaXRzIHRvIHRoZSBkb2N1bWVudGF0aW9u
LgorCiAyMDE0LTAxLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBzdXBwb3J0IGZvciBEUkFHR0FCTEVfUkVHSU9OCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDBhN2FhZDZhZjJhZGQ5ZDY1N2U1Y2JiMTk0YTcwMDgwMGRiYWU0NmEuLmFiNjNkYzczMGFmYTJh
NjM1OWU4MDdlZGZhOTI3ZDQ1ZWYxMGY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC02NCw4ICs2NCw5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKiBUaGUgI1dlYktpdFdlYkNvbnRleHQgbWFuYWdl
cyBhbGwgYXNwZWN0cyBjb21tb24gdG8gYWxsCiAgKiAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cy4K
ICAqCi0gKiBZb3UgY2FuIGRlZmluZSB0aGUgI1dlYktpdENhY2hlTW9kZWwgd2l0aAotICogd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRz
IG9mCisgKiBZb3UgY2FuIGRlZmluZSB0aGUgI1dlYktpdENhY2hlTW9kZWwgYW5kICNXZWJLaXRQ
cm9jZXNzTW9kZWwgd2l0aAorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCgp
IGFuZAorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKCksIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMgb2YKICAqIHlvdXIgYXBwbGljYXRpb24uIFlvdSBjYW4gYWNjZXNzIHRo
ZSAjV2ViS2l0Q29va2llTWFuYWdlciBvciB0aGUKICAqICNXZWJLaXRTZWN1cml0eU1hbmFnZXIg
dG8gc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHlvdXIgYXBwbGljYXRpb24KICAqIHJlZ2FyZGlu
ZyBjb29raWVzIGFuZCBzZWN1cml0eSwgdXNpbmcKQEAgLTg4OCw2ICs4ODksNzkgQEAgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5hbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJp
bmc6OmZyb21VVEY4KGhvc3QpKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3Byb2Nlc3NfbW9kZWw6CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKiBA
cHJvY2Vzc19tb2RlbDogYSAjV2ViS2l0UHJvY2Vzc01vZGVsCisgKgorICogU3BlY2lmaWVzIGEg
cHJvY2VzcyBtb2RlbCBmb3IgV2ViVmlld3MsIHdoaWNoIFdlYktpdCB3aWxsIHVzZSB0bworICog
ZGV0ZXJtaW5lIGhvdyBhdXhpbGlhcnkgcHJvY2Vzc2VzIGFyZSBoYW5kbGVkLiBUaGUgZGVmYXVs
dCBzZXR0aW5nCisgKiAoJVdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJP
Q0VTUykgaXMgc3VpdGFibGUgZm9yIG1vc3QKKyAqIGFwcGxpY2F0aW9ucyB3aGljaCBlbWJlZCBh
IHNtYWxsIGFtb3VudCBvZiBXZWJWaWV3cywgb3IgYXJlIHVzZWQgdG8KKyAqIGRpc3BsYXkgZG9j
dW1lbnRzIHdoaWNoIGFyZSBjb25zaWRlcmVkIHNhZmUgLS0gbGlrZSBsb2NhbCBmaWxlcy4KKyAq
CisgKiBBcHBsaWNhdGlvbnMgd2hpY2ggbWF5IHBvdGVudGlhbGx5IHVzZSBhIGxhcmdlIGFtb3Vu
dCBvZiBXZWJWaWV3cyAtLWZvcgorICogZXhhbXBsZSBhIG11bHRpLXRhYmJlZCB3ZWIgYnJvd3Nl
ci0tIG1heSB3YW50IHRvIHVzZQorICogJVdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NF
Q09OREFSWV9QUk9DRVNTRVMgdG8gdXNlIG9uZSBhdXhpbGlhcnkKKyAqIHByb2Nlc3MgcGVyIHZp
ZXcuIFVzaW5nIHRoaXMgbW9kZWwsIHdoZW4gYSBXZWJWaWV3IGluIGEgdGFiIGhhbmdzIG9yCisg
KiBjcmFzaGVzLCB0aGUgcmVzdCBvZiB0aGUgdGFicyBpbiB0aGUgYnJvd3NlciB3aWxsIHN0aWxs
IHdvcmsgbm9ybWFsbHkuCisgKgorICogVGhpcyBtZXRob2QgPHN0cm9uZz5tdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgYW55IG90aGVyIGZ1bmN0aW9uczwvc3Ryb25nPiwKKyAqIGFzIGVhcmx5IGFzIHBv
c3NpYmxlIGluIHlvdXIgYXBwbGljYXRpb24uIENhbGxpbmcgaXQgbGF0ZXIgd2lsbCBtYWtlCisg
KiB5b3VyIGFwcGxpY2F0aW9uIGNyYXNoLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKK3sKKyAgICBQcm9jZXNzTW9k
ZWwgbmV3UHJvY2Vzc01vZGVsOworCisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X0NPTlRFWFQoY29udGV4dCkpOworCisgICAgc3dpdGNoIChwcm9jZXNzTW9kZWwpIHsKKyAgICBj
YXNlIFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzoKKyAgICAg
ICAgbmV3UHJvY2Vzc01vZGVsID0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TRUNPTkRBUllf
UFJPQ0VTU19QRVJfV0VCX1ZJRVc6CisgICAgICAgIG5ld1Byb2Nlc3NNb2RlbCA9IFByb2Nlc3NN
b2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKworICAgIGlmIChu
ZXdQcm9jZXNzTW9kZWwgIT0gY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkp
IHsKKyAgICAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0VXNlc05ldHdvcmtQcm9jZXNz
KG5ld1Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
cyk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnNldFByb2Nlc3NNb2RlbChuZXdQ
cm9jZXNzTW9kZWwpOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3Byb2Nlc3NfbW9kZWw6CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKgor
ICogUmV0dXJucyB0aGUgY3VycmVudCBwcm9jZXNzIG1vZGVsLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biBhYm91dCB0aGlzIHZhbHVlCisgKiBzZWUgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNz
X21vZGVsKCkuCisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQgI1dlYktpdFByb2Nlc3NNb2Rl
bAorICoKKyAqIFNpbmNlOiAyLjQKKyAqLworV2ViS2l0UHJvY2Vzc01vZGVsIHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwg
V0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTKTsKKworICAgIHN3
aXRjaCAoY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkpIHsKKyAgICBjYXNl
IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M6CisgICAgICAgIHJldHVybiBXRUJL
SVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M7CisgICAgY2FzZSBQcm9j
ZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKKyAgICAgICAgcmV0dXJuIFdFQktJ
VF9QUk9DRVNTX01PREVMX1NFQ09OREFSWV9QUk9DRVNTX1BFUl9XRUJfVklFVzsKKyAgICBkZWZh
dWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKworICAgIHJldHVy
biBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M7Cit9CisKIFdl
YktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9h
ZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDFl
M2I5YjU4OGQ2NWE4NTQ5OWE4NmJiNzE2Y2I2N2JlMjNkOTIyYWEuLmJlMWI5MTg5ZDczODhiODI0
OWNlZjdjNTkwYmVmOGQ2N2VlYmMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTYzLDYgKzYzLDI5IEBAIHR5cGVk
ZWYgZW51bSB7CiB9IFdlYktpdENhY2hlTW9kZWw7CiAKIC8qKgorICogV2ViS2l0UHJvY2Vzc01v
ZGVsOgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzog
VXNlIGEgc2luZ2xlIHByb2Nlc3MgdG8KKyAqICAgcGVyZm9ybSBjb250ZW50IHJlbmRlcmluZy4g
VGhlIHByb2Nlc3MgaXMgc2hhcmVkIGFtb25nIGFsbCB0aGUKKyAqICAgI1dlYktpdFdlYlZpZXcg
aW5zdGFuY2VzIGNyZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBJZiB0aGUgc2Vjb25kYXJ5Cisg
KiAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgcHJvY2VzcyBtb2RlbCwgYW5kIGl0IHNob3VsZCBzdWZm
aWNlIGZvciBtb3N0IGNhc2VzLgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX1NFQ09OREFSWV9Q
Uk9DRVNTX1BFUl9XRUJfVklFVzogVXNlIG9uZSBwcm9jZXNzIGZvcgorICogICBlYWNoICNXZWJL
aXRXZWJWaWV3LiBUaGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBwcm9jZXNzIG1vZGVsIGlzIHRo
YXQKKyAqICAgdGhlIHJlbmRlcmluZyBwcm9jZXNzIGZvciBhIHdlYiB2aWV3IGNhbiBjcmFzaCB3
aGlsZSB0aGUgcmVzdCBvZiB0aGUKKyAqICAgdmlld3Mga2VlcCB3b3JraW5nIG5vcm1hbGx5LiBU
aGlzIHByb2Nlc3MgbW9kZWwgaXMgaW5kaWNhdGVkIGZvcgorICogICBhcHBsaWNhdGlvbnMgd2hp
Y2ggbWF5IHVzZSBhIG51bWJlciBvZiB3ZWIgdmlld3MgYW5kIHRoZSBjb250ZW50IG9mCisgKiAg
IGluIGVhY2ggbXVzdCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHJlc3QgLS0gZm9yIGV4YW1wbGUg
YSBmdWxsLWZsZWRnZWQKKyAqICAgd2ViIGJyb3dzZXIgd2l0aCBzdXBwb3J0IGZvciBtdWx0aXBs
ZSB0YWJzLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSAjV2Vi
S2l0V2ViQ29udGV4dCBwcm9jZXNzIG1vZGVsLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordHlw
ZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BS
T0NFU1MsCisgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dF
Ql9WSUVXLAorfSBXZWJLaXRQcm9jZXNzTW9kZWw7CisKKy8qKgogICogV2ViS2l0VExTRXJyb3Jz
UG9saWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMg
ZXJyb3JzLgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIHdp
bGwgZW1pdApAQCAtMjEzLDYgKzIzNiwxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxz
X2NlcnRpZmljYXRlX2Zvcl9ob3N0ICAgKFdlYktpdFdlYkNvbnRleHQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvICAgICAgICAgKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKIAor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
cm9jZXNzTW9kZWwgICAgICAgICAgICAgcHJvY2Vzc19tb2RlbCk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0UHJvY2Vzc01vZGVsCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAxYzEz
YzZjMDczYTc1ZDE5N2Q3MDU2MmMwMjk3OTIxZjdiNjM4MmY0Li45NDIxNDk2NmQ1YzI2NTZmZjk2
YzYzOGI4NDk4YjA1NGNkMmU3Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTI0
LDYgKzI0LDcgQEAgV0VCS0lUX09CU09MRVRFX0FQSQogPFRJVExFPldlYktpdFdlYkNvbnRleHQ8
L1RJVExFPgogV2ViS2l0V2ViQ29udGV4dAogV2ViS2l0Q2FjaGVNb2RlbAorV2ViS2l0UHJvY2Vz
c01vZGVsCiBXZWJLaXRUTFNFcnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVm
YXVsdAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbApAQCAtNTAsNiArNTEsOCBA
QCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3Vz
ZXJfZGF0YQogd2Via2l0X3dlYl9jb250ZXh0X3ByZWZldGNoX2Rucwogd2Via2l0X3dlYl9jb250
ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rs
c19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21v
ZGVsCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwKIAogPFNVQlNFQ1RJT04g
VVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY1NzUxYzY3OTkyOGNkYzM2
MGJjNmNlNWE0NjE0MWUzNzU2NjIyNDIuLmU2ZmVlZmU3N2E4YzcwNTc3MzFiOTM2ZTMxMDdhMmNj
ZDMzMDFjYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNC0wMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAg
PGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgc2V0
dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBpbiBXZWJLaXRXZWJDb250ZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU0NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFjY2Vzc29ycyBp
biBXZWJLaXRXZWJDb250ZXh0IGZvciB0aGUgcHJvY2VzcyBtb2RlbC4KKyAgICAgICAgVGhlIGRl
ZmF1bHQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLCBhbmQgYSBzaW5nbGUgd2ViIHByb2Nlc3MgaXMK
KyAgICAgICAgdXNlZC4gU2V0dGluZyBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNP
TkRBUllfUFJPQ0VTU0VTCisgICAgICAgIGFzIHRoZSBwcm9jZXNzIG1vZGVsIHdpbGwgbWFrZSB1
c2Ugb2YgYSBuZXR3b3JrIHByb2Nlc3MgYW5kCisgICAgICAgIG11bHRpcGxlIHdlYiBwcm9jZXNz
ZXMuIFNldHRpbmcgdGhlIHByb2Nlc3MgbW9kZWwgbXVzdCBiZSBkb25lCisgICAgICAgIGFzIGVh
cmx5IGFzIHBvc3NpYmxlLCBiZWZvcmUgdGhlIHZlcnkgZmlyc3Qgd2ViIHByb2Nlc3MgaXMKKyAg
ICAgICAgc3Bhd25lZC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgRW5hYmxlIG11bHRpcGxlIHByb2Nlc3MgbW9kZSBpZiB0aGUg
TUlOSUJST1dTRVJfTVVMVElQUk9DRVNTCisgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlz
IGRlZmluZWQgYW5kIG5vdCBlbXB0eS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2Vm
aWxlLmFtOgorICAgICAgICBBZGQgbmV3IFRlc3RNdWx0aXByb2Nlc3MgdGVzdCBjYXNlLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgQWRkIG5ldyBUZXN0TXVsdGlwcm9jZXNzIHRlc3QgY2FzZS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHA6IEFkZGVkLgor
ICAgICAgICAobG9hZENoYW5nZWQpOgorICAgICAgICAodGVzdE11bHRpcGxlU2Vjb25kYXJ5UHJv
Y2Vzc2VzKToKKyAgICAgICAgKGluaXRpYWxpemVXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAobWV0aG9kQ2Fs
bENhbGxiYWNrKToKKyAgICAgICAgSW1wbGVtZW50IHRoZSBHZXRQcm9jZXNzSWRlbnRpZmllciBE
LUJ1cyBtZXRob2QuCisgICAgICAgIChtYWtlQnVzTmFtZSk6CisgICAgICAgIENob29zZSBhIGRp
ZmZlcmVudCBidXMgbmFtZSB3aGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQKKyAgICAgICAg
ZnJvbSBUZXN0TXVsdGlwcm9jZXNzLgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5p
dGlhbGl6ZV93aXRoX3VzZXJfZGF0YSk6CisgICAgICAgIFVzZSBtYWtlQnVzTmFtZSgpIHRvIGNo
b29zZSB0aGUgYnVzIG5hbWUuCisKIDIwMTQtMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIENhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgaW5zdGVhZCBvZiBj
aGFyYWN0ZXJzIGF0IG1vcmUgY2FsbCBzaXRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggNTA0OWNm
MjFmMGU1ZDc1YzViZDlhZjQ1NzJiOTEwOWU4NGRkNGU0MC4uMGYzNjczN2NiNzgwODdlNDVjYjI0
NTFjOTc0NDZhZDczNmI5NmZmZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC0yNDEsNiArMjQxLDEy
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgZ3RrX2luaXQoJmFy
Z2MsICZhcmd2KTsKIAorICAgIGNvbnN0IGdjaGFyICptdWx0aXByb2Nlc3M9IGdfZ2V0ZW52KCJN
SU5JQlJPV1NFUl9NVUxUSVBST0NFU1MiKTsKKyAgICBpZiAobXVsdGlwcm9jZXNzICYmICptdWx0
aXByb2Nlc3MpIHsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAgICAgICAgICAgV0VCS0lUX1BS
T0NFU1NfTU9ERUxfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKyAgICB9CisKICAg
ICBHT3B0aW9uQ29udGV4dCAqY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3KE5VTEwpOwog
ICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyhjb250ZXh0LCBjb21tYW5kTGlu
ZU9wdGlvbnMsIDApOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwKGNvbnRleHQsIGd0
a19nZXRfb3B0aW9uX2dyb3VwKFRSVUUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDNkMzBjMmE4NmQ4NTA5YmVhOTFlNDI2NTliOWI4ZjZlZDVkNzQ0OTQuLjViZjAzMGQxMzIz
NDdkMmZlNWMxY2YxZWEzMWQ5MzdiNDA5ZDM0MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmls
ZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMv
VGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3IgXAogCVByb2dyYW1zL1Rlc3RX
ZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyIFwKIAlQcm9ncmFtcy9UZXN0
V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdExvYWRlckNsaWVudCBcCisJUHJvZ3JhbXMvVGVzdFdl
YktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MgXAogCVByb2dyYW1zL1Rlc3RXZWJL
aXRBUEkvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcgXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkv
V2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktp
dDJHdGsvVGVzdFNTTCBcCkBAIC03NjcsNiArNzY4LDEyIEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfV2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0NQUEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rl
c3RzCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9M
REFERCA9ICQod2Via2l0Mmd0a190ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElf
V2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0xERkxBR1MgPSAkKHdlYmtpdDJndGtfdGVzdHNf
bGRmbGFncykKIAorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXBy
b2Nlc3NfU09VUkNFUyA9IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdE11bHRpcHJvY2Vzcy5jcHAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19U
ZXN0TXVsdGlwcm9jZXNzX0NQUEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2NwcGZsYWdzKQor
UHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nlc3NfTERBREQg
PSAkKHdlYmtpdDJndGtfdGVzdHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktp
dDJHdGtfVGVzdE11bHRpcHJvY2Vzc19MREZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2xkZmxh
Z3MpCisKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0V2ViS2l0U2V0dGlu
Z3NfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdFNldHRpbmdzLmNwcAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rl
c3RXZWJLaXRTZXR0aW5nc19DUFBGTEFHUyA9ICQod2Via2l0Mmd0a190ZXN0c19jcHBmbGFncykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxp
c3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3Rz
LnR4dAppbmRleCBiODgzY2YxZTZkNDkyZTJkM2Q4M2U1NGE5OWU5ZTJiNzFmZWEwYzFhLi45NDBl
ZDczM2FjNDQ5Mzc1NDcxYTA0YmFjMjQ3ZjcwNDFiODRmN2RmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC05Miw2ICs5
Miw3IEBAIEFERF9XSzJfVEVTVChUZXN0RnJhbWUgVGVzdEZyYW1lLmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0SW5zcGVjdG9yIFRlc3RJbnNwZWN0b3IuY3BwKQogQUREX1dLMl9URVNUKFRlc3RJbnNw
ZWN0b3JTZXJ2ZXIgVGVzdEluc3BlY3RvclNlcnZlci5jcHApCiBBRERfV0syX1RFU1QoVGVzdExv
YWRlckNsaWVudCBUZXN0TG9hZGVyQ2xpZW50LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0TXVsdGlw
cm9jZXNzIFRlc3RNdWx0aXByb2Nlc3MuY3BwKQogQUREX1dLMl9URVNUKFRlc3RQcmludGluZyBU
ZXN0UHJpbnRpbmcuY3BwKQogQUREX1dLMl9URVNUKFRlc3RTU0wgVGVzdFNTTC5jcHApCiBBRERf
V0syX1RFU1QoVGVzdFdlYkV4dGVuc2lvbnMgVGVzdFdlYkV4dGVuc2lvbnMuY3BwKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nl
c3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXBy
b2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZTg0OThhOTIwNTU3NDgzMTk3NmUwMjdiODcyYTZlYTQx
YmVhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgorI2luY2x1ZGUgPHdl
YmtpdDIvd2Via2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgTXVsdGlw
cm9jZXNzVGVzdDsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0gMjsKK3N0YXRp
YyBndWludDMyIG5leHRJbml0aWFsaXphdGlvbklkID0gMTsKK3N0YXRpYyB1bnNpZ25lZCBpbml0
aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50Oworc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1
czsKKworY2xhc3MgTXVsdGlwcm9jZXNzVGVzdDogcHVibGljIFRlc3QgeworCitwdWJsaWM6Cisg
ICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShNdWx0aXByb2Nlc3NUZXN0KTsKKworICAgIE11bHRp
cHJvY2Vzc1Rlc3QoKQorICAgICAgICA6IG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KG51bGxw
dHIsIFRSVUUpKQorICAgICAgICAsIG1fd2ViVmlld0J1c05hbWVzKG51bVZpZXdzKQorICAgICAg
ICAsIG1fd2ViVmlld3MobnVtVmlld3MpIHsgfQorCisgICAgc3RhdGljIHZvaWQgbG9hZENoYW5n
ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgTXVs
dGlwcm9jZXNzVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGlmIChsb2FkRXZlbnQgIT0gV0VC
S0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdfc2lnbmFs
X2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZv
aWQqPihsb2FkQ2hhbmdlZCksIHRlc3QpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3Qt
Pm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgbG9hZFdlYlZpZXdBbmRXYWl0VW50aWxM
b2FkZWQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGlu
ZGV4LCA8LCBudW1WaWV3cyk7CisKKyAgICAgICAgbV93ZWJWaWV3QnVzTmFtZXNbaW5kZXhdID0g
R1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVu
c2lvblRlc3QldSIsIG5leHRJbml0aWFsaXphdGlvbklkKSk7CisKKyAgICAgICAgbV93ZWJWaWV3
c1tpbmRleF0gPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYlZp
ZXdzW2luZGV4XS5nZXQoKSkpOworCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwo
bV93ZWJWaWV3c1tpbmRleF0uZ2V0KCksICI8aHRtbD48L2h0bWw+IiwgbnVsbHB0cik7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3c1tpbmRleF0uZ2V0KCksICJsb2FkLWNoYW5n
ZWQiLCBHX0NBTExCQUNLKGxvYWRDaGFuZ2VkKSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29w
X3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB3ZWJQcm9jZXNzUGlkKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChpbmRleCwgPCwg
bnVtVmlld3MpOworCisgICAgICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdS
ZWYoYnVzLT5jcmVhdGVQcm94eShtX3dlYlZpZXdCdXNOYW1lc1tpbmRleF0uZ2V0KCksCisgICAg
ICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5n
dGsuV2ViRXh0ZW5zaW9uVGVzdCIsIG1fbWFpbkxvb3ApKTsKKworICAgICAgICBHUmVmUHRyPEdW
YXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYygKKyAgICAg
ICAgICAgIHByb3h5LmdldCgpLAorICAgICAgICAgICAgIkdldFByb2Nlc3NJZGVudGlmaWVyIiwK
KyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05F
LAorICAgICAgICAgICAgLTEsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgZ19hc3NlcnQo
cmVzdWx0KTsKKworICAgICAgICBndWludDMyIGlkZW50aWZpZXIgPSAwOworICAgICAgICBnX3Zh
cmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIih1KSIsICZpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0
dXJuIGlkZW50aWZpZXI7CisgICAgfQorCisgICAgR01haW5Mb29wKiBtX21haW5Mb29wOworICAg
IFZlY3RvcjxHVW5pcXVlUHRyPGNoYXI+LCBudW1WaWV3cz4gbV93ZWJWaWV3QnVzTmFtZXM7Cisg
ICAgVmVjdG9yPEdSZWZQdHI8V2ViS2l0V2ViVmlldz4sIG51bVZpZXdzPiBtX3dlYlZpZXdzOwor
fTsKKworc3RhdGljIHZvaWQgdGVzdFByb2Nlc3NQZXJXZWJWaWV3KE11bHRpcHJvY2Vzc1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gQ3JlYXRlIHR3byB3ZWIgdmlld3MuIEFz
IHdlIGFyZSBpbiBtdWx0aXByb2Nlc3MgbW9kZSwgdGhlcmUgbXVzdCBiZQorICAgIC8vIHR3byB3
ZWIgcHJvY2Vzc2VzLCBydW5uaW5nIGFuIGluc3RhbmNlIG9mIHRoZSB3ZWIgZXh0ZW5zaW9uIGVh
Y2guCisgICAgLy8gVGhlIGluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMgbXVzdCBoYXZlIGJlZW4g
Y2FsbGVkIHR3aWNlLCBhbmQgdGhlCisgICAgLy8gaWRlbnRpZmllcnMgZ2VuZXJhdGVkIGZvciB0
aGVtIG11c3QgYmUgZGlmZmVyZW50IChhbmQgdGhlaXIgcmVwb3J0ZWQKKyAgICAvLyBwcm9jZXNz
IGlkZW50aWZpZXJzKS4KKworICAgIHRlc3QtPmxvYWRXZWJWaWV3QW5kV2FpdFVudGlsTG9hZGVk
KDApOworICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dlYlZpZXdzWzBd
LmdldCgpKSk7CisgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3QnVzTmFtZXNbMF0pOworCisg
ICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0VW50aWxMb2FkZWQoMSk7CisgICAgZ19hc3NlcnQo
V0VCS0lUX0lTX1dFQl9WSUVXKHRlc3QtPm1fd2ViVmlld3NbMV0uZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydCh0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1sxXSk7CisKKyAgICBnX2Fzc2VydF9jbXB1aW50
KGluaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQsID09LCBudW1WaWV3cyk7CisgICAg
Z19hc3NlcnRfY21wc3RyKHRlc3QtPm1fd2ViVmlld0J1c05hbWVzWzBdLmdldCgpLCAhPSwgdGVz
dC0+bV93ZWJWaWV3QnVzTmFtZXNbMV0uZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+d2ViUHJvY2Vzc1BpZCgwKSwgIT0sIHRlc3QtPndlYlByb2Nlc3NQaWQoMSkpOworfQorCitz
dGF0aWMgdm9pZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0LCBncG9pbnRlcikKK3sKKyAgICBpbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50
Kys7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnko
Y29udGV4dCwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKKyAgICB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YShjb250
ZXh0LAorICAgICAgICBnX3ZhcmlhbnRfbmV3X3VpbnQzMihuZXh0SW5pdGlhbGl6YXRpb25JZCsr
KSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAgICAgICAiaW5pdGlhbGl6ZS13ZWItZXh0
ZW5zaW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsK
KworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSwKKyAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0VDT05E
QVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKworICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVz
KCk7CisgICAgaWYgKCFidXMtPnJ1bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBNdWx0aXBy
b2Nlc3NUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJvY2Vzcy1wZXItd2ViLXZpZXci
LCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBk
ZWxldGUgYnVzOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0
LmNwcAppbmRleCAyZTgwMzRmNzY0ZmE0MDVmMWI2M2Y3YTM3NjdjY2E2MDcxY2VjYmJhLi43ODk0
MzBmNTYwOGQyODc1YTI2NzNhMzZmOTFkYmRmNzg1ZTUwZDQxIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgpAQCAtNDksNiArNTAsOSBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10g
PQogICAgICIgIDxtZXRob2QgbmFtZT0nR2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSc+IgogICAg
ICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3VzZXJEYXRhJyBkaXJlY3Rpb249J291dCcvPiIKICAg
ICAiICA8L21ldGhvZD4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRQcm9jZXNzSWRlbnRpZmll
cic+IgorICAgICIgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2lkZW50aWZpZXInIGRpcmVjdGlvbj0n
b3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50
TG9hZGVkJy8+IgogICAgICIgIDxzaWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+IgogICAgICIgICA8
YXJnIHR5cGU9J3MnIG5hbWU9J3VyaScgZGlyZWN0aW9uPSdvdXQnLz4iCkBAIC0yMjQsNiArMjI4
LDkgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRf
aXNfb2ZfdHlwZShpbml0aWFsaXphdGlvblVzZXJEYXRhLmdldCgpLCBHX1ZBUklBTlRfVFlQRV9T
VFJJTkcpKTsKICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShp
bnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIocykiLAogICAgICAgICAgICAgZ192YXJpYW50X2dl
dF9zdHJpbmcoaW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICB9
IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJZGVudGlmaWVyIikp
IHsKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLAorICAgICAgICAgICAgZ192YXJpYW50X25ldygiKHUpIiwgc3RhdGljX2Nhc3Q8Z3VpbnQz
Mj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSkpOwogICAgIH0KIH0KIApAQCAtMjYzLDYgKzI3MCwx
OCBAQCBzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZwogICAgIH0KIH0KIAorc3RhdGljIEdVbmlxdWVQ
dHI8Y2hhcj4gbWFrZUJ1c05hbWUoR1ZhcmlhbnQqIHVzZXJEYXRhKQoreworICAgIC8vIFdoZW4g
dGhlIHdlYiBleHRlbnNpb24gaXMgdXNlZCBieSBUZXN0TXVsdGlwcm9jZXNzLCBhbiB1aW50MzIK
KyAgICAvLyBpZGVudGlmaWVyIGlzIHBhc3NlZCBhcyB1c2VyIGRhdGEuIEl0IHVuaXF1ZWx5IGlk
ZW50aWZpZXMKKyAgICAvLyB0aGUgd2ViIHByb2Nlc3MsIGFuZCB0aGUgVUkgc2lkZSBleHBlY3Rz
IGl0IGFkZGVkIGFzIHN1ZmZpeCB0bworICAgIC8vIHRoZSBidXMgbmFtZS4KKyAgICBpZiAodXNl
ckRhdGEgJiYgZ192YXJpYW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFSSUFOVF9UWVBFX1VJ
TlQzMikpCisgICAgICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwX3ByaW50Zigi
b3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgZ192YXJpYW50X2dldF91aW50MzIo
dXNlckRhdGEpKSk7CisKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cCgib3Jn
LndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIpKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEoV2ViS2l0V2ViRXh0
ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJpYW50KiB1c2VyRGF0YSkKIHsKICAgICBpbml0aWFsaXph
dGlvblVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0yNzAsOSArMjg5LDEwIEBAIGV4dGVybiAiQyIg
dm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktp
dFdlYkV4dGVuc2lvCiAgICAgZ19zaWduYWxfY29ubmVjdChleHRlbnNpb24sICJwYWdlLWNyZWF0
ZWQiLCBHX0NBTExCQUNLKHBhZ2VDcmVhdGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAid2luZG93
LW9iamVjdC1jbGVhcmVkIiwgR19DQUxMQkFDSyh3aW5kb3dPYmplY3RDbGVhcmVkKSwgMCk7CiAK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1c05hbWUobWFrZUJ1c05hbWUodXNlckRhdGEpKTsKICAg
ICBnX2J1c19vd25fbmFtZSgKICAgICAgICAgR19CVVNfVFlQRV9TRVNTSU9OLAotICAgICAgICAi
b3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIGJ1c05hbWUuZ2V0KCks
CiAgICAgICAgIEdfQlVTX05BTUVfT1dORVJfRkxBR1NfTk9ORSwKICAgICAgICAgYnVzQWNxdWly
ZWRDYWxsYmFjaywKICAgICAgICAgMCwgMCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222275</attachid>
            <date>2014-01-26 09:20:55 -0800</date>
            <delta_ts>2014-01-27 06:27:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140126192128.patch</filename>
            <type>text/plain</type>
            <size>22068</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWZkMzRhNzBiNGM1YmIy
MDVhMzE1Y2E0ZTAwMmE1YWIwYTgzODNjZi4uYWZjMGYxYjBjNmZiMzJmODM1MGYxODJmMTUyNTFm
OTAyMzI2MjdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAxLTI2ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBTZXR0aW5nIFdFQktJVF9QUk9DRVNT
X01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMKKyAgICAgICAgYXMgdGhlIHByb2Nl
c3MgbW9kZWwgd2lsbCBtYWtlIHVzZSBvZiBhIG5ldHdvcmsgcHJvY2VzcyBhbmQKKyAgICAgICAg
bXVsdGlwbGUgd2ViIHByb2Nlc3Nlcy4gU2V0dGluZyB0aGUgcHJvY2VzcyBtb2RlbCBtdXN0IGJl
IGRvbmUKKyAgICAgICAgYXMgZWFybHkgYXMgcG9zc2libGUsIGJlZm9yZSB0aGUgdmVyeSBmaXJz
dCB3ZWIgcHJvY2VzcyBpcworICAgICAgICBzcGF3bmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIEFkZCBhY2Nlc3NvcnMgaW4g
dGhlIEFQSSB0byBnZXQvc2V0IHRoZSBwcm9jZXNzIG1vZGVsLgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfcHJvY2Vzc19tb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oOgorICAgICAgICBEZWZpbmUgdGhlIFdlYktpdFByb2Nlc3NNb2RlbCBlbnVt
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisgICAgICAgIEFkZCBuZXcgcHVibGljIEFQSSBiaXRzIHRvIHRoZSBkb2N1bWVudGF0aW9u
LgorCiAyMDE0LTAxLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBzdXBwb3J0IGZvciBEUkFHR0FCTEVfUkVHSU9OCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDBhN2FhZDZhZjJhZGQ5ZDY1N2U1Y2JiMTk0YTcwMDgwMGRiYWU0NmEuLjBlYThhMjRiZGI3YjJl
OWQyMDVlYmRkMDE0ZDQyMzQzZjExNThkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC02NCw4ICs2NCw5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKiBUaGUgI1dlYktpdFdlYkNvbnRleHQgbWFuYWdl
cyBhbGwgYXNwZWN0cyBjb21tb24gdG8gYWxsCiAgKiAjV2ViS2l0V2ViVmlldzwhLS0gLS0+cy4K
ICAqCi0gKiBZb3UgY2FuIGRlZmluZSB0aGUgI1dlYktpdENhY2hlTW9kZWwgd2l0aAotICogd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCgpLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRz
IG9mCisgKiBZb3UgY2FuIGRlZmluZSB0aGUgI1dlYktpdENhY2hlTW9kZWwgYW5kICNXZWJLaXRQ
cm9jZXNzTW9kZWwgd2l0aAorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCgp
IGFuZAorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKCksIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMgb2YKICAqIHlvdXIgYXBwbGljYXRpb24uIFlvdSBjYW4gYWNjZXNzIHRo
ZSAjV2ViS2l0Q29va2llTWFuYWdlciBvciB0aGUKICAqICNXZWJLaXRTZWN1cml0eU1hbmFnZXIg
dG8gc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHlvdXIgYXBwbGljYXRpb24KICAqIHJlZ2FyZGlu
ZyBjb29raWVzIGFuZCBzZWN1cml0eSwgdXNpbmcKQEAgLTg4OCw2ICs4ODksNjEgQEAgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5hbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJp
bmc6OmZyb21VVEY4KGhvc3QpKTsKIH0KIAorc3RhdGljX2Fzc2VydChXRUJLSVRfUFJPQ0VTU19N
T0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcywKKyAgICAiUHJvY2Vzc01vZGVsIGFuZCBXZWJLaXRQcm9jZXNzTW9kZWwgZW51
bSB2YWx1ZXMgZG8gbm90IGhhdmUgdGhlIHNhbWUgaW50ZWdyYWwgdmFsdWUiKTsKK3N0YXRpY19h
c3NlcnQoV0VCS0lUX1BST0NFU1NfTU9ERUxfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVX
ID09IFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzLAorICAgICJQcm9jZXNz
TW9kZWwgYW5kIFdlYktpdFByb2Nlc3NNb2RlbCBlbnVtIHZhbHVlcyBkbyBub3QgaGF2ZSB0aGUg
c2FtZSBpbnRlZ3JhbCB2YWx1ZSIpOworCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
cHJvY2Vzc19tb2RlbDoKKyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQKKyAqIEBw
cm9jZXNzX21vZGVsOiBhICNXZWJLaXRQcm9jZXNzTW9kZWwKKyAqCisgKiBTcGVjaWZpZXMgYSBw
cm9jZXNzIG1vZGVsIGZvciBXZWJWaWV3cywgd2hpY2ggV2ViS2l0IHdpbGwgdXNlIHRvCisgKiBk
ZXRlcm1pbmUgaG93IGF1eGlsaWFyeSBwcm9jZXNzZXMgYXJlIGhhbmRsZWQuIFRoZSBkZWZhdWx0
IHNldHRpbmcKKyAqICglV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9D
RVNTKSBpcyBzdWl0YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEg
c21hbGwgYW1vdW50IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1
bWVudHMgd2hpY2ggYXJlIGNvbnNpZGVyZWQgc2FmZSAtLSBsaWtlIGxvY2FsIGZpbGVzLgorICoK
KyAqIEFwcGxpY2F0aW9ucyB3aGljaCBtYXkgcG90ZW50aWFsbHkgdXNlIGEgbGFyZ2UgYW1vdW50
IG9mIFdlYlZpZXdzIC0tZm9yCisgKiBleGFtcGxlIGEgbXVsdGktdGFiYmVkIHdlYiBicm93c2Vy
LS0gbWF5IHdhbnQgdG8gdXNlCisgKiAlV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VD
T05EQVJZX1BST0NFU1NFUyB0byB1c2Ugb25lIGF1eGlsaWFyeQorICogcHJvY2VzcyBwZXIgdmll
dy4gVXNpbmcgdGhpcyBtb2RlbCwgd2hlbiBhIFdlYlZpZXcgaW4gYSB0YWIgaGFuZ3Mgb3IKKyAq
IGNyYXNoZXMsIHRoZSByZXN0IG9mIHRoZSB0YWJzIGluIHRoZSBicm93c2VyIHdpbGwgc3RpbGwg
d29yayBub3JtYWxseS4KKyAqCisgKiBUaGlzIG1ldGhvZCA8c3Ryb25nPm11c3QgYmUgY2FsbGVk
IGJlZm9yZSBhbnkgb3RoZXIgZnVuY3Rpb25zPC9zdHJvbmc+LAorICogYXMgZWFybHkgYXMgcG9z
c2libGUgaW4geW91ciBhcHBsaWNhdGlvbi4gQ2FsbGluZyBpdCBsYXRlciB3aWxsIG1ha2UKKyAq
IHlvdXIgYXBwbGljYXRpb24gY3Jhc2guCisgKgorICogU2luY2U6IDIuNAorICovCit2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0LCBXZWJLaXRQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKworICAgIGlmIChwcm9jZXNz
TW9kZWwgIT0gY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkpIHsKKyAgICAg
ICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+c2V0VXNlc05ldHdvcmtQcm9jZXNzKHByb2Nlc3NN
b2RlbCA9PSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisgICAgICAg
IGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnNldFByb2Nlc3NNb2RlbChzdGF0aWNfY2FzdDxQcm9j
ZXNzTW9kZWw+KHByb2Nlc3NNb2RlbCkpOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWw6CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJD
b250ZXh0CisgKgorICogUmV0dXJucyB0aGUgY3VycmVudCBwcm9jZXNzIG1vZGVsLiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHZhbHVlCisgKiBzZWUgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9wcm9jZXNzX21vZGVsKCkuCisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQgI1dlYktp
dFByb2Nlc3NNb2RlbAorICoKKyAqIFNpbmNlOiAyLjQKKyAqLworV2ViS2l0UHJvY2Vzc01vZGVs
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVY
VChjb250ZXh0KSwgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNT
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0UHJvY2Vzc01vZGVsPihjb250ZXh0LT5w
cml2LT5jb250ZXh0LT5wcm9jZXNzTW9kZWwoKSk7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJr
aXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRz
TWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDFlM2I5YjU4OGQ2NWE4NTQ5OWE4
NmJiNzE2Y2I2N2JlMjNkOTIyYWEuLmJlMWI5MTg5ZDczODhiODI0OWNlZjdjNTkwYmVmOGQ2N2Vl
YmMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmgKQEAgLTYzLDYgKzYzLDI5IEBAIHR5cGVkZWYgZW51bSB7CiB9IFdlYktp
dENhY2hlTW9kZWw7CiAKIC8qKgorICogV2ViS2l0UHJvY2Vzc01vZGVsOgorICogQFdFQktJVF9Q
Uk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUzogVXNlIGEgc2luZ2xlIHByb2Nl
c3MgdG8KKyAqICAgcGVyZm9ybSBjb250ZW50IHJlbmRlcmluZy4gVGhlIHByb2Nlc3MgaXMgc2hh
cmVkIGFtb25nIGFsbCB0aGUKKyAqICAgI1dlYktpdFdlYlZpZXcgaW5zdGFuY2VzIGNyZWF0ZWQg
YnkgdGhlIGFwcGxpY2F0aW9uLiBJZiB0aGUgc2Vjb25kYXJ5CisgKiAgIFRoaXMgaXMgdGhlIGRl
ZmF1bHQgcHJvY2VzcyBtb2RlbCwgYW5kIGl0IHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2Vz
LgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX1NFQ09OREFSWV9QUk9DRVNTX1BFUl9XRUJfVklF
VzogVXNlIG9uZSBwcm9jZXNzIGZvcgorICogICBlYWNoICNXZWJLaXRXZWJWaWV3LiBUaGUgbWFp
biBhZHZhbnRhZ2Ugb2YgdGhpcyBwcm9jZXNzIG1vZGVsIGlzIHRoYXQKKyAqICAgdGhlIHJlbmRl
cmluZyBwcm9jZXNzIGZvciBhIHdlYiB2aWV3IGNhbiBjcmFzaCB3aGlsZSB0aGUgcmVzdCBvZiB0
aGUKKyAqICAgdmlld3Mga2VlcCB3b3JraW5nIG5vcm1hbGx5LiBUaGlzIHByb2Nlc3MgbW9kZWwg
aXMgaW5kaWNhdGVkIGZvcgorICogICBhcHBsaWNhdGlvbnMgd2hpY2ggbWF5IHVzZSBhIG51bWJl
ciBvZiB3ZWIgdmlld3MgYW5kIHRoZSBjb250ZW50IG9mCisgKiAgIGluIGVhY2ggbXVzdCBub3Qg
aW50ZXJmZXJlIHdpdGggdGhlIHJlc3QgLS0gZm9yIGV4YW1wbGUgYSBmdWxsLWZsZWRnZWQKKyAq
ICAgd2ViIGJyb3dzZXIgd2l0aCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJzLgorICoKKyAqIEVu
dW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSAjV2ViS2l0V2ViQ29udGV4dCBwcm9j
ZXNzIG1vZGVsLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MsCisgICAgV0VCS0lU
X1BST0NFU1NfTU9ERUxfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXLAorfSBXZWJLaXRQ
cm9jZXNzTW9kZWw7CisKKy8qKgogICogV2ViS2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJyb3JzLgogICogQFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIHdpbGwgZW1pdApAQCAtMjEzLDYg
KzIzNiwxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9o
b3N0ICAgKFdlYktpdFdlYkNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcm9jZXNzTW9kZWwgICAgICAg
ICAgICAgcHJvY2Vzc19tb2RlbCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UHJvY2Vzc01vZGVsCit3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAxYzEzYzZjMDczYTc1ZDE5N2Q3MDU2
MmMwMjk3OTIxZjdiNjM4MmY0Li45NDIxNDk2NmQ1YzI2NTZmZjk2YzYzOGI4NDk4YjA1NGNkMmU3
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTI0LDYgKzI0LDcgQEAgV0VCS0lU
X09CU09MRVRFX0FQSQogPFRJVExFPldlYktpdFdlYkNvbnRleHQ8L1RJVExFPgogV2ViS2l0V2Vi
Q29udGV4dAogV2ViS2l0Q2FjaGVNb2RlbAorV2ViS2l0UHJvY2Vzc01vZGVsCiBXZWJLaXRUTFNF
cnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdAogd2Via2l0X3dlYl9j
b250ZXh0X2dldF9jYWNoZV9tb2RlbApAQCAtNTAsNiArNTEsOCBAQCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YQogd2Via2l0X3dl
Yl9jb250ZXh0X3ByZWZldGNoX2Rucwogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hl
X2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3Jf
aG9zdAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCit3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktp
dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY1NzUxYzY3OTkyOGNkYzM2MGJjNmNlNWE0NjE0MWUzNzU2
NjIyNDIuLmU2ZmVlZmU3N2E4YzcwNTc3MzFiOTM2ZTMxMDdhMmNjZDMzMDFjYWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAxNC0wMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgc2V0dGluZyB0aGUgcHJvY2VzcyBt
b2RlbCBpbiBXZWJLaXRXZWJDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjU0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFjY2Vzc29ycyBpbiBXZWJLaXRXZWJDb250ZXh0
IGZvciB0aGUgcHJvY2VzcyBtb2RlbC4KKyAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMg
dW5jaGFuZ2VkLCBhbmQgYSBzaW5nbGUgd2ViIHByb2Nlc3MgaXMKKyAgICAgICAgdXNlZC4gU2V0
dGluZyBXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTCisg
ICAgICAgIGFzIHRoZSBwcm9jZXNzIG1vZGVsIHdpbGwgbWFrZSB1c2Ugb2YgYSBuZXR3b3JrIHBy
b2Nlc3MgYW5kCisgICAgICAgIG11bHRpcGxlIHdlYiBwcm9jZXNzZXMuIFNldHRpbmcgdGhlIHBy
b2Nlc3MgbW9kZWwgbXVzdCBiZSBkb25lCisgICAgICAgIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCBi
ZWZvcmUgdGhlIHZlcnkgZmlyc3Qgd2ViIHByb2Nlc3MgaXMKKyAgICAgICAgc3Bhd25lZC4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgRW5hYmxlIG11bHRpcGxlIHByb2Nlc3MgbW9kZSBpZiB0aGUgTUlOSUJST1dTRVJfTVVMVElQ
Uk9DRVNTCisgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIG5vdCBl
bXB0eS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICBB
ZGQgbmV3IFRlc3RNdWx0aXByb2Nlc3MgdGVzdCBjYXNlLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBUZXN0
TXVsdGlwcm9jZXNzIHRlc3QgY2FzZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAobG9hZENoYW5n
ZWQpOgorICAgICAgICAodGVzdE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKToKKyAgICAgICAg
KGluaXRpYWxpemVXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
IChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dl
YkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKyAgICAg
ICAgSW1wbGVtZW50IHRoZSBHZXRQcm9jZXNzSWRlbnRpZmllciBELUJ1cyBtZXRob2QuCisgICAg
ICAgIChtYWtlQnVzTmFtZSk6CisgICAgICAgIENob29zZSBhIGRpZmZlcmVudCBidXMgbmFtZSB3
aGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQKKyAgICAgICAgZnJvbSBUZXN0TXVsdGlwcm9j
ZXNzLgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJf
ZGF0YSk6CisgICAgICAgIFVzZSBtYWtlQnVzTmFtZSgpIHRvIGNob29zZSB0aGUgYnVzIG5hbWUu
CisKIDIwMTQtMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IENhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzIGF0IG1vcmUg
Y2FsbCBzaXRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggNTA0OWNmMjFmMGU1ZDc1YzViZDlhZjQ1
NzJiOTEwOWU4NGRkNGU0MC4uMGYzNjczN2NiNzgwODdlNDVjYjI0NTFjOTc0NDZhZDczNmI5NmZm
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC0yNDEsNiArMjQxLDEyIEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKIAorICAg
IGNvbnN0IGdjaGFyICptdWx0aXByb2Nlc3M9IGdfZ2V0ZW52KCJNSU5JQlJPV1NFUl9NVUxUSVBS
T0NFU1MiKTsKKyAgICBpZiAobXVsdGlwcm9jZXNzICYmICptdWx0aXByb2Nlc3MpIHsKKyAgICAg
ICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZGVmYXVsdCgpLAorICAgICAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0VDT05E
QVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKyAgICB9CisKICAgICBHT3B0aW9uQ29udGV4dCAq
Y29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3KE5VTEwpOwogICAgIGdfb3B0aW9uX2NvbnRl
eHRfYWRkX21haW5fZW50cmllcyhjb250ZXh0LCBjb21tYW5kTGluZU9wdGlvbnMsIDApOwogICAg
IGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwKGNvbnRleHQsIGd0a19nZXRfb3B0aW9uX2dyb3Vw
KFRSVUUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNkMzBjMmE4NmQ4NTA5
YmVhOTFlNDI2NTliOWI4ZjZlZDVkNzQ0OTQuLjViZjAzMGQxMzIzNDdkMmZlNWMxY2YxZWEzMWQ5
MzdiNDA5ZDM0MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUu
YW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2
MSw3IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJL
aXQyR3RrL1Rlc3RJbnNwZWN0b3IgXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0
ay9UZXN0SW5zcGVjdG9yU2VydmVyIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJH
dGsvVGVzdExvYWRlckNsaWVudCBcCisJUHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3Rr
L1Rlc3RNdWx0aXByb2Nlc3MgXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9U
ZXN0UHJpbnRpbmcgXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0UmVz
b3VyY2VzIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdFNTTCBcCkBA
IC03NjcsNiArNzY4LDEyIEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0
TG9hZGVyQ2xpZW50X0NQUEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzCiBQcm9ncmFtc19UZXN0
V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9MREFERCA9ICQod2Via2l0Mmd0
a190ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TG9h
ZGVyQ2xpZW50X0xERkxBR1MgPSAkKHdlYmtpdDJndGtfdGVzdHNfbGRmbGFncykKIAorUHJvZ3Jh
bXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nlc3NfU09VUkNFUyA9IFwK
KwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5j
cHAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TXVsdGlwcm9jZXNzX0NQ
UEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3JhbXNfVGVzdFdlYktp
dEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nlc3NfTERBREQgPSAkKHdlYmtpdDJndGtfdGVz
dHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdE11bHRpcHJv
Y2Vzc19MREZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2xkZmxhZ3MpCisKIFByb2dyYW1zX1Rl
c3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0V2ViS2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKIAlU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNw
cAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RXZWJLaXRTZXR0aW5nc19D
UFBGTEFHUyA9ICQod2Via2l0Mmd0a190ZXN0c19jcHBmbGFncykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAppbmRleCBiODgzY2Yx
ZTZkNDkyZTJkM2Q4M2U1NGE5OWU5ZTJiNzFmZWEwYzFhLi45NDBlZDczM2FjNDQ5Mzc1NDcxYTA0
YmFjMjQ3ZjcwNDFiODRmN2RmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC05Miw2ICs5Miw3IEBAIEFERF9XSzJfVEVT
VChUZXN0RnJhbWUgVGVzdEZyYW1lLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0SW5zcGVjdG9yIFRl
c3RJbnNwZWN0b3IuY3BwKQogQUREX1dLMl9URVNUKFRlc3RJbnNwZWN0b3JTZXJ2ZXIgVGVzdElu
c3BlY3RvclNlcnZlci5jcHApCiBBRERfV0syX1RFU1QoVGVzdExvYWRlckNsaWVudCBUZXN0TG9h
ZGVyQ2xpZW50LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0TXVsdGlwcm9jZXNzIFRlc3RNdWx0aXBy
b2Nlc3MuY3BwKQogQUREX1dLMl9URVNUKFRlc3RQcmludGluZyBUZXN0UHJpbnRpbmcuY3BwKQog
QUREX1dLMl9URVNUKFRlc3RTU0wgVGVzdFNTTC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYkV4
dGVuc2lvbnMgVGVzdFdlYkV4dGVuc2lvbnMuY3BwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwZTg0OThhOTIwNTU3NDgzMTk3NmUwMjdiODcyYTZlYTQxYmVhNmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJv
Y2Vzcy5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisj
aW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgTXVsdGlwcm9jZXNzVGVzdDsKKworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0gMjsKK3N0YXRpYyBndWludDMyIG5leHRJbml0
aWFsaXphdGlvbklkID0gMTsKK3N0YXRpYyB1bnNpZ25lZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9u
c1NpZ25hbENvdW50Oworc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1czsKKworY2xhc3MgTXVsdGlw
cm9jZXNzVGVzdDogcHVibGljIFRlc3QgeworCitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1Rf
RklYVFVSRShNdWx0aXByb2Nlc3NUZXN0KTsKKworICAgIE11bHRpcHJvY2Vzc1Rlc3QoKQorICAg
ICAgICA6IG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KG51bGxwdHIsIFRSVUUpKQorICAgICAg
ICAsIG1fd2ViVmlld0J1c05hbWVzKG51bVZpZXdzKQorICAgICAgICAsIG1fd2ViVmlld3MobnVt
Vmlld3MpIHsgfQorCisgICAgc3RhdGljIHZvaWQgbG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgTXVsdGlwcm9jZXNzVGVzdCogdGVz
dCkKKyAgICB7CisgICAgICAgIGlmIChsb2FkRXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZvaWQqPihsb2FkQ2hhbmdlZCks
IHRlc3QpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IH0KKworICAgIHZvaWQgbG9hZFdlYlZpZXdBbmRXYWl0VW50aWxMb2FkZWQodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGluZGV4LCA8LCBudW1WaWV3cyk7
CisKKyAgICAgICAgbV93ZWJWaWV3QnVzTmFtZXNbaW5kZXhdID0gR1VuaXF1ZVB0cjxjaGFyPihn
X3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QldSIsIG5leHRJ
bml0aWFsaXphdGlvbklkKSk7CisKKyAgICAgICAgbV93ZWJWaWV3c1tpbmRleF0gPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSkp
OworCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwobV93ZWJWaWV3c1tpbmRleF0u
Z2V0KCksICI8aHRtbD48L2h0bWw+IiwgbnVsbHB0cik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV93ZWJWaWV3c1tpbmRleF0uZ2V0KCksICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxv
YWRDaGFuZ2VkKSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCB3ZWJQcm9jZXNzUGlkKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChpbmRleCwgPCwgbnVtVmlld3MpOworCisgICAg
ICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBhZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94
eShtX3dlYlZpZXdCdXNOYW1lc1tpbmRleF0uZ2V0KCksCisgICAgICAgICAgICAiL29yZy93ZWJr
aXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVz
dCIsIG1fbWFpbkxvb3ApKTsKKworICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHQgPSBh
ZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYygKKyAgICAgICAgICAgIHByb3h5LmdldCgp
LAorICAgICAgICAgICAgIkdldFByb2Nlc3NJZGVudGlmaWVyIiwKKyAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorICAgICAgICAgICAgLTEs
IG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgZ19hc3NlcnQocmVzdWx0KTsKKworICAgICAg
ICBndWludDMyIGlkZW50aWZpZXIgPSAwOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5n
ZXQoKSwgIih1KSIsICZpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7Cisg
ICAgfQorCisgICAgR01haW5Mb29wKiBtX21haW5Mb29wOworICAgIFZlY3RvcjxHVW5pcXVlUHRy
PGNoYXI+LCBudW1WaWV3cz4gbV93ZWJWaWV3QnVzTmFtZXM7CisgICAgVmVjdG9yPEdSZWZQdHI8
V2ViS2l0V2ViVmlldz4sIG51bVZpZXdzPiBtX3dlYlZpZXdzOworfTsKKworc3RhdGljIHZvaWQg
dGVzdFByb2Nlc3NQZXJXZWJWaWV3KE11bHRpcHJvY2Vzc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCit7CisgICAgLy8gQ3JlYXRlIHR3byB3ZWIgdmlld3MuIEFzIHdlIGFyZSBpbiBtdWx0aXBy
b2Nlc3MgbW9kZSwgdGhlcmUgbXVzdCBiZQorICAgIC8vIHR3byB3ZWIgcHJvY2Vzc2VzLCBydW5u
aW5nIGFuIGluc3RhbmNlIG9mIHRoZSB3ZWIgZXh0ZW5zaW9uIGVhY2guCisgICAgLy8gVGhlIGlu
aXRpYWxpemUtd2ViLWV4dGVuc2lvbnMgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlLCBhbmQg
dGhlCisgICAgLy8gaWRlbnRpZmllcnMgZ2VuZXJhdGVkIGZvciB0aGVtIG11c3QgYmUgZGlmZmVy
ZW50IChhbmQgdGhlaXIgcmVwb3J0ZWQKKyAgICAvLyBwcm9jZXNzIGlkZW50aWZpZXJzKS4KKwor
ICAgIHRlc3QtPmxvYWRXZWJWaWV3QW5kV2FpdFVudGlsTG9hZGVkKDApOworICAgIGdfYXNzZXJ0
KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dlYlZpZXdzWzBdLmdldCgpKSk7CisgICAgZ19h
c3NlcnQodGVzdC0+bV93ZWJWaWV3QnVzTmFtZXNbMF0pOworCisgICAgdGVzdC0+bG9hZFdlYlZp
ZXdBbmRXYWl0VW50aWxMb2FkZWQoMSk7CisgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9WSUVX
KHRlc3QtPm1fd2ViVmlld3NbMV0uZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZp
ZXdCdXNOYW1lc1sxXSk7CisKKyAgICBnX2Fzc2VydF9jbXB1aW50KGluaXRpYWxpemVXZWJFeHRl
bnNpb25zU2lnbmFsQ291bnQsID09LCBudW1WaWV3cyk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRl
c3QtPm1fd2ViVmlld0J1c05hbWVzWzBdLmdldCgpLCAhPSwgdGVzdC0+bV93ZWJWaWV3QnVzTmFt
ZXNbMV0uZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+d2ViUHJvY2Vzc1BpZCgw
KSwgIT0sIHRlc3QtPndlYlByb2Nlc3NQaWQoMSkpOworfQorCitzdGF0aWMgdm9pZCBpbml0aWFs
aXplV2ViRXh0ZW5zaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlcikKK3sK
KyAgICBpbml0aWFsaXplV2ViRXh0ZW5zaW9uc1NpZ25hbENvdW50Kys7CisgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3RvcnkoY29udGV4dCwgV0VCS0lUX1RF
U1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9l
eHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YShjb250ZXh0LAorICAgICAgICBnX3Zh
cmlhbnRfbmV3X3VpbnQzMihuZXh0SW5pdGlhbGl6YXRpb25JZCsrKSk7Cit9CisKK3ZvaWQgYmVm
b3JlQWxsKCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZGVmYXVsdCgpLAorICAgICAgICAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9ucyIsIEdfQ0FMTEJB
Q0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKKworICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQo
KSwKKyAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dF
Ql9WSUVXKTsKKworICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVzKCk7CisgICAgaWYgKCFidXMt
PnJ1bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBNdWx0aXByb2Nlc3NUZXN0OjphZGQoIldl
YktpdFdlYkNvbnRleHQiLCAicHJvY2Vzcy1wZXItd2ViLXZpZXciLCB0ZXN0UHJvY2Vzc1Blcldl
YlZpZXcpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUgYnVzOworICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2RlZmF1bHQoKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaW5pdGlhbGl6ZVdl
YkV4dGVuc2lvbnMpLCBudWxscHRyKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCAyZTgwMzRm
NzY0ZmE0MDVmMWI2M2Y3YTM3NjdjY2E2MDcxY2VjYmJhLi43ODk0MzBmNTYwOGQyODc1YTI2NzNh
MzZmOTFkYmRmNzg1ZTUwZDQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgpAQCAtNDksNiArNTAsOSBA
QCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgIDxtZXRob2Qg
bmFtZT0nR2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSc+IgogICAgICIgICA8YXJnIHR5cGU9J3Mn
IG5hbWU9J3VzZXJEYXRhJyBkaXJlY3Rpb249J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCisg
ICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRQcm9jZXNzSWRlbnRpZmllcic+IgorICAgICIgICA8YXJn
IHR5cGU9J3UnIG5hbWU9J2lkZW50aWZpZXInIGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwv
bWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgogICAgICIg
IDxzaWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9
J3VyaScgZGlyZWN0aW9uPSdvdXQnLz4iCkBAIC0yMjQsNiArMjI4LDkgQEAgc3RhdGljIHZvaWQg
bWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hh
ciogc2VuZGVyLAogICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShpbml0aWFs
aXphdGlvblVzZXJEYXRhLmdldCgpLCBHX1ZBUklBTlRfVFlQRV9TVFJJTkcpKTsKICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIocykiLAogICAgICAgICAgICAgZ192YXJpYW50X2dldF9zdHJpbmcoaW5pdGlhbGl6
YXRpb25Vc2VyRGF0YS5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJZGVudGlmaWVyIikpIHsKKyAgICAgICAgZ19kYnVz
X21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLAorICAgICAgICAgICAg
Z192YXJpYW50X25ldygiKHUpIiwgc3RhdGljX2Nhc3Q8Z3VpbnQzMj4oZ2V0Q3VycmVudFByb2Nl
c3NJRCgpKSkpOwogICAgIH0KIH0KIApAQCAtMjYzLDYgKzI3MCwxOCBAQCBzdGF0aWMgdm9pZCBi
dXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hh
ciogbmFtZSwgZwogICAgIH0KIH0KIAorc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gbWFrZUJ1c05h
bWUoR1ZhcmlhbnQqIHVzZXJEYXRhKQoreworICAgIC8vIFdoZW4gdGhlIHdlYiBleHRlbnNpb24g
aXMgdXNlZCBieSBUZXN0TXVsdGlwcm9jZXNzLCBhbiB1aW50MzIKKyAgICAvLyBpZGVudGlmaWVy
IGlzIHBhc3NlZCBhcyB1c2VyIGRhdGEuIEl0IHVuaXF1ZWx5IGlkZW50aWZpZXMKKyAgICAvLyB0
aGUgd2ViIHByb2Nlc3MsIGFuZCB0aGUgVUkgc2lkZSBleHBlY3RzIGl0IGFkZGVkIGFzIHN1ZmZp
eCB0bworICAgIC8vIHRoZSBidXMgbmFtZS4KKyAgICBpZiAodXNlckRhdGEgJiYgZ192YXJpYW50
X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFSSUFOVF9UWVBFX1VJTlQzMikpCisgICAgICAgIHJl
dHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCV1IiwgZ192YXJpYW50X2dldF91aW50MzIodXNlckRhdGEpKSk7CisKKyAg
ICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihnX3N0cmR1cCgib3JnLndlYmtpdC5ndGsuV2ViRXh0
ZW5zaW9uVGVzdCIpKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24s
IEdWYXJpYW50KiB1c2VyRGF0YSkKIHsKICAgICBpbml0aWFsaXphdGlvblVzZXJEYXRhID0gdXNl
ckRhdGE7CkBAIC0yNzAsOSArMjg5LDEwIEBAIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvCiAgICAg
Z19zaWduYWxfY29ubmVjdChleHRlbnNpb24sICJwYWdlLWNyZWF0ZWQiLCBHX0NBTExCQUNLKHBh
Z2VDcmVhdGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Vi
a2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwg
R19DQUxMQkFDSyh3aW5kb3dPYmplY3RDbGVhcmVkKSwgMCk7CiAKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IGJ1c05hbWUobWFrZUJ1c05hbWUodXNlckRhdGEpKTsKICAgICBnX2J1c19vd25fbmFtZSgK
ICAgICAgICAgR19CVVNfVFlQRV9TRVNTSU9OLAotICAgICAgICAib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIGJ1c05hbWUuZ2V0KCksCiAgICAgICAgIEdfQlVTX05B
TUVfT1dORVJfRkxBR1NfTk9ORSwKICAgICAgICAgYnVzQWNxdWlyZWRDYWxsYmFjaywKICAgICAg
ICAgMCwgMCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222323</attachid>
            <date>2014-01-27 06:28:37 -0800</date>
            <delta_ts>2014-01-28 01:37:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140127162911.patch</filename>
            <type>text/plain</type>
            <size>22966</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWY0ZjMxMzg1ZDZjODZm
ZGE3ZDFmNGY4NGNjZDg4NmZjOGRlMzFjYy4uZDc3Mzk3YmRjZDMzNjNkYjNlZDcxZTIyMDJmZDg0
NzZhZjU5OTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAxLTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBVc2luZyBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXCisgICAgICAgIGFzIHRoZSBw
cm9jZXNzIG1vZGVsIHdpbGwgbWFrZSB1c2Ugb25lIHdlYiBwcm9jZXNzIGZvciBlYWNoCisgICAg
ICAgIFdlYktpdFdlYlZpZXcuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBuZXR3b3JrIHByb2Nlc3Mu
IFNldHRpbmcKKyAgICAgICAgdGhlIHByb2Nlc3MgbW9kZWwgbXVzdCBiZSBkb25lIGFzIGVhcmx5
IGFzIHBvc3NpYmxlLCBiZWZvcmUgdGhlCisgICAgICAgIHZlcnkgZmlyc3Qgd2ViIHByb2Nlc3Mg
aXMgc3Bhd25lZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICBBZGQgYWNjZXNzb3JzIGluIHRoZSBBUEkgdG8gZ2V0L3NldCB0aGUg
cHJvY2VzcyBtb2RlbC4KKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19t
b2RlbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAg
RGVmaW5lIHRoZSBXZWJLaXRQcm9jZXNzTW9kZWwgZW51bS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICBBZGQgbmV3IHB1
YmxpYyBBUEkgYml0cyB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKwogMjAxNC0wMS0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IGN1c3RvbSBVUkkgc2NoZW1lcyB3aXRoIEN1c3RvbVByb3RvY29scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCA2NTA5ZGRlNGZhOWYwNWEwNzE5ZWM5NWE5YzIxY2YzYjUwYTZjOGYyLi4wMTM1OGI3MTI0
MGM2MGRhYWQ0ZjA5MmUyYWI4NmQ3M2FmOGYyMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjQsOCArNjQs
OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICogVGhlICNXZWJLaXRXZWJDb250ZXh0IG1h
bmFnZXMgYWxsIGFzcGVjdHMgY29tbW9uIHRvIGFsbAogICogI1dlYktpdFdlYlZpZXc8IS0tIC0t
PnMuCiAgKgotICogWW91IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIHdpdGgKLSAq
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBu
ZWVkcyBvZgorICogWW91IGNhbiBkZWZpbmUgdGhlICNXZWJLaXRDYWNoZU1vZGVsIGFuZCAjV2Vi
S2l0UHJvY2Vzc01vZGVsIHdpdGgKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9k
ZWwoKSBhbmQKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbCgpLCBkZXBl
bmRpbmcgb24gdGhlIG5lZWRzIG9mCiAgKiB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFjY2Vz
cyB0aGUgI1dlYktpdENvb2tpZU1hbmFnZXIgb3IgdGhlCiAgKiAjV2ViS2l0U2VjdXJpdHlNYW5h
Z2VyIHRvIHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB5b3VyIGFwcGxpY2F0aW9uCiAgKiByZWdh
cmRpbmcgY29va2llcyBhbmQgc2VjdXJpdHksIHVzaW5nCkBAIC0xNjEsNiArMTYyLDkgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJL
SVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MsIFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJL
SVRfUFJPQ0VTU19NT0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXLCBQcm9j
ZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisKIFdFQktJVF9ERUZJTkVfVFlQ
RShXZWJLaXRXZWJDb250ZXh0LCB3ZWJraXRfd2ViX2NvbnRleHQsIEdfVFlQRV9PQkpFQ1QpCiAK
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRl
eHRDbGFzcyogd2ViQ29udGV4dENsYXNzKQpAQCAtMjI4LDEwICsyMzIsNiBAQCBzdGF0aWMgZ3Bv
aW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50ZXIpCiAgICAgcHJpdi0+Y29udGV4
dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGluamVjdGVk
QnVuZGxlRmlsZW5hbWUoKS5kYXRhKCkpKTsKICAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9IHdl
YkNvbnRleHQtPnByaXYtPmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXI+KCk7CiAgICAgcHJpdi0+Y29udGV4dC0+c2V0Q2FjaGVNb2RlbChDYWNo
ZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0g
ICAgLy8gRklYTUU6IFRlbXBvcmFyeSB1c2UgYW4gZW52IHZhciB1bnRpbCB3ZSBoYXZlIEFQSSB0
byBzZXQgdGhlIHByb2Nlc3MgbW9kZWwuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NDYzLgotICAgIHByaXYtPmNvbnRleHQtPnNldFVzZXNOZXR3b3JrUHJv
Y2VzcyhnX2dldGVudigiV0VCS0lUX1VTRV9ORVRXT1JLX1BST0NFU1MiKSk7Ci0jZW5kaWYKICAg
ICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JF
OwogCiAgICAgYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dC5n
ZXQoKSk7CkBAIC04ODgsNiArODg4LDU2IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAg
Y29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9
CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsOgorICogQGNv
bnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQHByb2Nlc3NfbW9kZWw6IGEgI1dlYktp
dFByb2Nlc3NNb2RlbAorICoKKyAqIFNwZWNpZmllcyBhIHByb2Nlc3MgbW9kZWwgZm9yIFdlYlZp
ZXdzLCB3aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBob3cgYXV4aWxpYXJ5
IHByb2Nlc3NlcyBhcmUgaGFuZGxlZC4gVGhlIGRlZmF1bHQgc2V0dGluZworICogKCVXRUJLSVRf
UFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1MpIGlzIHN1aXRhYmxlIGZvciBt
b3N0CisgKiBhcHBsaWNhdGlvbnMgd2hpY2ggZW1iZWQgYSBzbWFsbCBhbW91bnQgb2YgV2ViVmll
d3MsIG9yIGFyZSB1c2VkIHRvCisgKiBkaXNwbGF5IGRvY3VtZW50cyB3aGljaCBhcmUgY29uc2lk
ZXJlZCBzYWZlIC0tIGxpa2UgbG9jYWwgZmlsZXMuCisgKgorICogQXBwbGljYXRpb25zIHdoaWNo
IG1heSBwb3RlbnRpYWxseSB1c2UgYSBsYXJnZSBhbW91bnQgb2YgV2ViVmlld3MgLS1mb3IKKyAq
IGV4YW1wbGUgYSBtdWx0aS10YWJiZWQgd2ViIGJyb3dzZXItLSBtYXkgd2FudCB0byB1c2UKKyAq
ICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVX
IHRvIHVzZSBvbmUKKyAqIHByb2Nlc3MgcGVyIHZpZXcuIFVzaW5nIHRoaXMgbW9kZWwsIHdoZW4g
YSBXZWJWaWV3IGhhbmdzIG9yIGNyYXNoZXMsCisgKiB0aGUgcmVzdCBvZiB0aGUgV2ViVmlld3Mg
aW4gdGhlIGFwcGxpY2F0aW9uIHdpbGwgc3RpbGwgd29yayBub3JtYWxseS4KKyAqCisgKiBUaGlz
IG1ldGhvZCA8c3Ryb25nPm11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgZnVuY3Rpb25z
PC9zdHJvbmc+LAorICogYXMgZWFybHkgYXMgcG9zc2libGUgaW4geW91ciBhcHBsaWNhdGlvbi4g
Q2FsbGluZyBpdCBsYXRlciB3aWxsIG1ha2UKKyAqIHlvdXIgYXBwbGljYXRpb24gY3Jhc2guCisg
KgorICogU2luY2U6IDIuNAorICovCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vz
c19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRQcm9jZXNzTW9kZWwgcHJv
Y2Vzc01vZGVsKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhU
KGNvbnRleHQpKTsKKworICAgIGlmIChwcm9jZXNzTW9kZWwgIT0gY29udGV4dC0+cHJpdi0+Y29u
dGV4dC0+cHJvY2Vzc01vZGVsKCkpIHsKKyAgICAgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+
c2V0VXNlc05ldHdvcmtQcm9jZXNzKHByb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnNl
dFByb2Nlc3NNb2RlbChzdGF0aWNfY2FzdDxQcm9jZXNzTW9kZWw+KHByb2Nlc3NNb2RlbCkpOwor
ICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWw6
CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogUmV0dXJucyB0aGUg
Y3VycmVudCBwcm9jZXNzIG1vZGVsLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHZh
bHVlCisgKiBzZWUgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKCkuCisgKgor
ICogUmV0dXJuczogdGhlIGN1cnJlbnQgI1dlYktpdFByb2Nlc3NNb2RlbAorICoKKyAqIFNpbmNl
OiAyLjQKKyAqLworV2ViS2l0UHJvY2Vzc01vZGVsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJv
Y2Vzc19tb2RlbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwgV0VCS0lUX1BST0NFU1Nf
TU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9DRVNTKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViS2l0UHJvY2Vzc01vZGVsPihjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wcm9jZXNzTW9kZWwo
KSk7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3du
bG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0
RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5oCmluZGV4IDFlM2I5YjU4OGQ2NWE4NTQ5OWE4NmJiNzE2Y2I2N2JlMjNkOTIyYWEuLmQzZTEy
YjM1NTA0NmQ3YzhlNWZiMmI2ZGE4Y2JhNzQ0OWI0YmY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTYzLDYgKzYz
LDMwIEBAIHR5cGVkZWYgZW51bSB7CiB9IFdlYktpdENhY2hlTW9kZWw7CiAKIC8qKgorICogV2Vi
S2l0UHJvY2Vzc01vZGVsOgorICogQFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRB
UllfUFJPQ0VTUzogVXNlIGEgc2luZ2xlIHByb2Nlc3MgdG8KKyAqICAgcGVyZm9ybSBjb250ZW50
IHJlbmRlcmluZy4gVGhlIHByb2Nlc3MgaXMgc2hhcmVkIGFtb25nIGFsbCB0aGUKKyAqICAgI1dl
YktpdFdlYlZpZXcgaW5zdGFuY2VzIGNyZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uOiBpZiB0aGUg
cHJvY2VzcworICogICBoYW5ncyBvciBjcmFzaGVzIGFsbCB0aGUgd2ViIHZpZXdzIGluIHRoZSBh
cHBsaWNhdGlvbiB3aWxsIGJlIGFmZmVjdGVkLgorICogICBUaGlzIGlzIHRoZSBkZWZhdWx0IHBy
b2Nlc3MgbW9kZWwsIGFuZCBpdCBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqIEBX
RUJLSVRfUFJPQ0VTU19NT0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXOiBV
c2Ugb25lIHByb2Nlc3MKKyAqICAgZm9yIGVhY2ggI1dlYktpdFdlYlZpZXcuIFRoZSBtYWluIGFk
dmFudGFnZSBvZiB0aGlzIHByb2Nlc3MgbW9kZWwgaXMgdGhhdAorICogICB0aGUgcmVuZGVyaW5n
IHByb2Nlc3MgZm9yIGEgd2ViIHZpZXcgY2FuIGNyYXNoIHdoaWxlIHRoZSByZXN0IG9mIHRoZQor
ICogICB2aWV3cyBrZWVwIHdvcmtpbmcgbm9ybWFsbHkuIFRoaXMgcHJvY2VzcyBtb2RlbCBpcyBp
bmRpY2F0ZWQgZm9yCisgKiAgIGFwcGxpY2F0aW9ucyB3aGljaCBtYXkgdXNlIGEgbnVtYmVyIG9m
IHdlYiB2aWV3cyBhbmQgdGhlIGNvbnRlbnQgb2YKKyAqICAgaW4gZWFjaCBtdXN0IG5vdCBpbnRl
cmZlcmUgd2l0aCB0aGUgcmVzdCAtLSBmb3IgZXhhbXBsZSBhIGZ1bGwtZmxlZGdlZAorICogICB3
ZWIgYnJvd3NlciB3aXRoIHN1cHBvcnQgZm9yIG11bHRpcGxlIHRhYnMuCisgKgorICogRW51bSB2
YWx1ZXMgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlICNXZWJLaXRXZWJDb250ZXh0IHByb2Nlc3Mg
bW9kZWwuCisgKgorICogU2luY2U6IDIuNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJ
VF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUywKKyAgICBXRUJLSVRfUFJP
Q0VTU19NT0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXLAorfSBXZWJLaXRQ
cm9jZXNzTW9kZWw7CisKKy8qKgogICogV2ViS2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJyb3JzLgogICogQFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIHdpbGwgZW1pdApAQCAtMjEzLDYg
KzIzNywxMyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9o
b3N0ICAgKFdlYktpdFdlYkNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcm9jZXNzTW9kZWwgICAgICAg
ICAgICAgcHJvY2Vzc19tb2RlbCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UHJvY2Vzc01vZGVsCit3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAxYzEzYzZjMDczYTc1ZDE5N2Q3MDU2
MmMwMjk3OTIxZjdiNjM4MmY0Li45NDIxNDk2NmQ1YzI2NTZmZjk2YzYzOGI4NDk4YjA1NGNkMmU3
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTI0LDYgKzI0LDcgQEAgV0VCS0lU
X09CU09MRVRFX0FQSQogPFRJVExFPldlYktpdFdlYkNvbnRleHQ8L1RJVExFPgogV2ViS2l0V2Vi
Q29udGV4dAogV2ViS2l0Q2FjaGVNb2RlbAorV2ViS2l0UHJvY2Vzc01vZGVsCiBXZWJLaXRUTFNF
cnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdAogd2Via2l0X3dlYl9j
b250ZXh0X2dldF9jYWNoZV9tb2RlbApAQCAtNTAsNiArNTEsOCBAQCB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxpemF0aW9uX3VzZXJfZGF0YQogd2Via2l0X3dl
Yl9jb250ZXh0X3ByZWZldGNoX2Rucwogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hl
X2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3Jf
aG9zdAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCit3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktp
dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0Njg0Y2U5N2JkYjEzNDdhODZhMDU1NzgzZDRjZWUxNjI5
ZjM5OWMuLmZkYmMyZjMwNWRjMGEyMTU4NmE3NzAyOWQ1MGZmMjAxZmEzMDk1OWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAxNC0wMS0yNyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgc2V0dGluZyB0aGUgcHJvY2VzcyBt
b2RlbCBpbiBXZWJLaXRXZWJDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjU0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIGFjY2Vzc29ycyBpbiBXZWJLaXRXZWJDb250ZXh0
IGZvciB0aGUgcHJvY2VzcyBtb2RlbC4KKyAgICAgICAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMg
dW5jaGFuZ2VkLCBhbmQgYSBzaW5nbGUgd2ViIHByb2Nlc3MgaXMKKyAgICAgICAgdXNlZC4gVXNp
bmcgV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9QUk9DRVNTX1BFUl9XRUJfVklF
VworICAgICAgICBhcyB0aGUgcHJvY2VzcyBtb2RlbCB3aWxsIG1ha2UgdXNlIG9uZSB3ZWIgcHJv
Y2VzcyBmb3IgZWFjaAorICAgICAgICBXZWJLaXRXZWJWaWV3LiBUaGlzIGFsc28gZW5hYmxlcyB0
aGUgbmV0d29yayBwcm9jZXNzLiBTZXR0aW5nCisgICAgICAgIHRoZSBwcm9jZXNzIG1vZGVsIG11
c3QgYmUgZG9uZSBhcyBlYXJseSBhcyBwb3NzaWJsZSwgYmVmb3JlIHRoZQorICAgICAgICB2ZXJ5
IGZpcnN0IHdlYiBwcm9jZXNzIGlzIHNwYXduZWQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9n
dGsvbWFpbi5jOgorICAgICAgICAobWFpbik6CisgICAgICAgIEVuYWJsZSBtdWx0aXBsZSBwcm9j
ZXNzIG1vZGUgaWYgdGhlIE1JTklCUk9XU0VSX01VTFRJUFJPQ0VTUworICAgICAgICBlbnZpcm9u
bWVudCB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZCBub3QgZW1wdHkuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkIG5ldyBUZXN0TXVsdGlwcm9jZXNz
IHRlc3QgY2FzZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgIEFkZCBuZXcgVGVzdE11bHRpcHJvY2VzcyB0ZXN0IGNhc2Uu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nl
c3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKGxvYWRDaGFuZ2VkKToKKyAgICAgICAgKHRlc3RNdWx0
aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk6CisgICAgICAgIChpbml0aWFsaXplV2ViRXh0ZW5zaW9u
cyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAg
ICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6CisgICAgICAgIEltcGxlbWVudCB0aGUgR2V0UHJv
Y2Vzc0lkZW50aWZpZXIgRC1CdXMgbWV0aG9kLgorICAgICAgICAobWFrZUJ1c05hbWUpOgorICAg
ICAgICBDaG9vc2UgYSBkaWZmZXJlbnQgYnVzIG5hbWUgd2hlbiB0aGUgd2ViIGV4dGVuc2lvbiBp
cyB1c2VkCisgICAgICAgIGZyb20gVGVzdE11bHRpcHJvY2Vzcy4KKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEpOgorICAgICAgICBVc2UgbWFr
ZUJ1c05hbWUoKSB0byBjaG9vc2UgdGhlIGJ1cyBuYW1lLgorCiAyMDE0LTAxLTI3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbXBs
ZW1lbnQgY3VzdG9tIFVSSSBzY2hlbWVzIHdpdGggQ3VzdG9tUHJvdG9jb2xzCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwppbmRleCA1MDQ5Y2YyMWYwZTVkNzVjNWJkOWFmNDU3MmI5MTA5ZTg0ZGQ0ZTQwLi45Mjgz
NjA1MzFjODlhMGRjMjBmM2FiZTVlMzIyMmFhZTk3MTc5YmJkIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMK
QEAgLTI0MSw2ICsyNDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsK
ICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCisgICAgY29uc3QgZ2NoYXIgKm11bHRpcHJv
Y2VzcyA9IGdfZ2V0ZW52KCJNSU5JQlJPV1NFUl9NVUxUSVBST0NFU1MiKTsKKyAgICBpZiAobXVs
dGlwcm9jZXNzICYmICptdWx0aXByb2Nlc3MpIHsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF9wcm9jZXNzX21vZGVsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAg
ICAgICAgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9QUk9DRVNTX1BFUl9X
RUJfVklFVyk7CisgICAgfQorCiAgICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlv
bl9jb250ZXh0X25ldyhOVUxMKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJp
ZXMoY29udGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCAwKTsKICAgICBnX29wdGlvbl9jb250ZXh0
X2FkZF9ncm91cChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cChUUlVFKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCAzZDMwYzJhODZkODUwOWJlYTkxZTQyNjU5YjliOGY2
ZWQ1ZDc0NDk0Li41YmYwMzBkMTMyMzQ3ZDJmZTVjMWNmMWVhMzFkOTM3YjQwOWQzNDE5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTE2MSw2ICsxNjEsNyBAQCBub2luc3RfUFJP
R1JBTVMgKz0gXAogCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0SW5zcGVj
dG9yIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNl
cnZlciBcCiAJUHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RMb2FkZXJDbGll
bnQgXAorCVByb2dyYW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNz
IFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdFByaW50aW5nIFwKIAlQ
cm9ncmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcyBcCiAJUHJvZ3Jh
bXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RTU0wgXApAQCAtNzY3LDYgKzc2OCwxMiBA
QCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9DUFBG
TEFHUyA9ICQod2Via2l0Mmd0a190ZXN0cwogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQy
R3RrX1Rlc3RMb2FkZXJDbGllbnRfTERBREQgPSAkKHdlYmtpdDJndGtfdGVzdHNfbGRhZGQpCiBQ
cm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRlckNsaWVudF9MREZMQUdT
ID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElf
V2ViS2l0Mkd0a19UZXN0TXVsdGlwcm9jZXNzX1NPVVJDRVMgPSBcCisJVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCitQcm9ncmFtc19UZXN0
V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdE11bHRpcHJvY2Vzc19DUFBGTEFHUyA9ICQod2Via2l0
Mmd0a190ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19U
ZXN0TXVsdGlwcm9jZXNzX0xEQUREID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2xkYWRkKQorUHJvZ3Jh
bXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nlc3NfTERGTEFHUyA9ICQo
d2Via2l0Mmd0a190ZXN0c19sZGZsYWdzKQorCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktp
dDJHdGtfVGVzdFdlYktpdFNldHRpbmdzX1NPVVJDRVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0V2ViS2l0U2V0dGluZ3NfQ1BQRkxBR1MgPSAkKHdlYmtp
dDJndGtfdGVzdHNfY3BwZmxhZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggYjg4M2NmMWU2ZDQ5MmUyZDNkODNlNTRh
OTllOWUyYjcxZmVhMGMxYS4uOTQwZWQ3MzNhYzQ0OTM3NTQ3MWEwNGJhYzI0N2Y3MDQxYjg0Zjdk
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFr
ZUxpc3RzLnR4dApAQCAtOTIsNiArOTIsNyBAQCBBRERfV0syX1RFU1QoVGVzdEZyYW1lIFRlc3RG
cmFtZS5jcHApCiBBRERfV0syX1RFU1QoVGVzdEluc3BlY3RvciBUZXN0SW5zcGVjdG9yLmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0SW5zcGVjdG9yU2VydmVyIFRlc3RJbnNwZWN0b3JTZXJ2ZXIuY3Bw
KQogQUREX1dLMl9URVNUKFRlc3RMb2FkZXJDbGllbnQgVGVzdExvYWRlckNsaWVudC5jcHApCitB
RERfV0syX1RFU1QoVGVzdE11bHRpcHJvY2VzcyBUZXN0TXVsdGlwcm9jZXNzLmNwcCkKIEFERF9X
SzJfVEVTVChUZXN0UHJpbnRpbmcgVGVzdFByaW50aW5nLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0
U1NMIFRlc3RTU0wuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJFeHRlbnNpb25zIFRlc3RXZWJF
eHRlbnNpb25zLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDJmYTRiNTZmZjE0
ZTRjZWFjNTc2MzY0YzcwZGJlNjI5Y2I0NDZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCkBAIC0wLDAg
KzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0TWFpbi5oIgorI2luY2x1ZGUgIldlYktpdFRl
c3RCdXMuaCIKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1WaWV3cyA9IDI7CitzdGF0aWMgZ3Vp
bnQzMiBuZXh0SW5pdGlhbGl6YXRpb25JZCA9IDE7CitzdGF0aWMgdW5zaWduZWQgaW5pdGlhbGl6
ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudDsKK3N0YXRpYyBXZWJLaXRUZXN0QnVzKiBidXM7CisK
K2NsYXNzIE11bHRpcHJvY2Vzc1Rlc3Q6IHB1YmxpYyBUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtF
X0dMSUJfVEVTVF9GSVhUVVJFKE11bHRpcHJvY2Vzc1Rlc3QpOworCisgICAgTXVsdGlwcm9jZXNz
VGVzdCgpCisgICAgICAgIDogbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcobnVsbHB0ciwgVFJV
RSkpCisgICAgICAgICwgbV93ZWJWaWV3QnVzTmFtZXMobnVtVmlld3MpCisgICAgICAgICwgbV93
ZWJWaWV3cyhudW1WaWV3cykgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBsb2FkQ2hhbmdlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBNdWx0aXByb2Nl
c3NUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGxvYWRFdmVudCAhPSBXRUJLSVRfTE9B
RF9GSU5JU0hFRCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGxv
YWRDaGFuZ2VkKSwgdGVzdCk7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWlu
TG9vcCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkV2ViVmlld0FuZFdhaXRVbnRpbExvYWRlZCh1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoaW5kZXgsIDws
IG51bVZpZXdzKTsKKworICAgICAgICBtX3dlYlZpZXdCdXNOYW1lc1tpbmRleF0gPSBHVW5pcXVl
UHRyPGNoYXI+KGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVz
dCV1IiwgbmV4dEluaXRpYWxpemF0aW9uSWQpKTsKKworICAgICAgICBtX3dlYlZpZXdzW2luZGV4
XSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fd2ViVmlld3NbaW5k
ZXhdLmdldCgpKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbChtX3dlYlZp
ZXdzW2luZGV4XS5nZXQoKSwgIjxodG1sPjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdf
Q0FMTEJBQ0sobG9hZENoYW5nZWQpLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOworICAgIH0KKworICAgIHVuc2lnbmVkIHdlYlByb2Nlc3NQaWQodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGluZGV4LCA8LCBudW1WaWV3
cyk7CisKKyAgICAgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMt
PmNyZWF0ZVByb3h5KG1fd2ViVmlld0J1c05hbWVzW2luZGV4XS5nZXQoKSwKKyAgICAgICAgICAg
ICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0Lmd0ay5XZWJF
eHRlbnNpb25UZXN0IiwgbV9tYWluTG9vcCkpOworCisgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKAorICAgICAgICAgICAg
cHJveHkuZ2V0KCksCisgICAgICAgICAgICAiR2V0UHJvY2Vzc0lkZW50aWZpZXIiLAorICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAg
ICAgICAgICAtMSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICBnX2Fzc2VydChyZXN1bHQp
OworCisgICAgICAgIGd1aW50MzIgaWRlbnRpZmllciA9IDA7CisgICAgICAgIGdfdmFyaWFudF9n
ZXQocmVzdWx0LmdldCgpLCAiKHUpIiwgJmlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gaWRl
bnRpZmllcjsKKyAgICB9CisKKyAgICBHTWFpbkxvb3AqIG1fbWFpbkxvb3A7CisgICAgVmVjdG9y
PEdVbmlxdWVQdHI8Y2hhcj4sIG51bVZpZXdzPiBtX3dlYlZpZXdCdXNOYW1lczsKKyAgICBWZWN0
b3I8R1JlZlB0cjxXZWJLaXRXZWJWaWV3PiwgbnVtVmlld3M+IG1fd2ViVmlld3M7Cit9OworCitz
dGF0aWMgdm9pZCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcoTXVsdGlwcm9jZXNzVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBDcmVhdGUgdHdvIHdlYiB2aWV3cy4gQXMgd2UgYXJl
IGluIG11bHRpcHJvY2VzcyBtb2RlLCB0aGVyZSBtdXN0IGJlCisgICAgLy8gdHdvIHdlYiBwcm9j
ZXNzZXMsIHJ1bm5pbmcgYW4gaW5zdGFuY2Ugb2YgdGhlIHdlYiBleHRlbnNpb24gZWFjaC4KKyAg
ICAvLyBUaGUgaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9ucyBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg
dHdpY2UsIGFuZCB0aGUKKyAgICAvLyBpZGVudGlmaWVycyBnZW5lcmF0ZWQgZm9yIHRoZW0gbXVz
dCBiZSBkaWZmZXJlbnQgKGFuZCB0aGVpciByZXBvcnRlZAorICAgIC8vIHByb2Nlc3MgaWRlbnRp
ZmllcnMpLgorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZpZXdzOyBpKyspIHsK
KyAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0VW50aWxMb2FkZWQoaSk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dlYlZpZXdzW2ldLmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlld0J1c05hbWVzW2ldKTsKKyAgICB9CisK
KyAgICBnX2Fzc2VydF9jbXB1aW50KGluaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQs
ID09LCBudW1WaWV3cyk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fd2ViVmlld0J1c05h
bWVzWzBdLmdldCgpLCAhPSwgdGVzdC0+bV93ZWJWaWV3QnVzTmFtZXNbMV0uZ2V0KCkpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+d2ViUHJvY2Vzc1BpZCgwKSwgIT0sIHRlc3QtPndlYlBy
b2Nlc3NQaWQoMSkpOworfQorCitzdGF0aWMgdm9pZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9ucyhX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlcikKK3sKKyAgICBpbml0aWFsaXplV2Vi
RXh0ZW5zaW9uc1NpZ25hbENvdW50Kys7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJf
ZXh0ZW5zaW9uc19kaXJlY3RvcnkoY29udGV4dCwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNf
RElSKTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2luaXRpYWxp
emF0aW9uX3VzZXJfZGF0YShjb250ZXh0LAorICAgICAgICBnX3ZhcmlhbnRfbmV3X3VpbnQzMihu
ZXh0SW5pdGlhbGl6YXRpb25JZCsrKSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAgICAg
ICAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4
dGVuc2lvbnMpLCBudWxscHRyKTsKKworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vz
c19tb2RlbCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwKKyAgICAgICAgV0VCS0lU
X1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9QUk9DRVNTX1BFUl9XRUJfVklFVyk7CisKKyAg
ICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygpOworICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTXVsdGlwcm9jZXNzVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0
IiwgInByb2Nlc3MtcGVyLXdlYi12aWV3IiwgdGVzdFByb2Nlc3NQZXJXZWJWaWV3KTsKK30KKwor
dm9pZCBhZnRlckFsbCgpCit7CisgICAgZGVsZXRlIGJ1czsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGluaXRpYWxpemVXZWJFeHRlbnNpb25zKSwg
bnVsbHB0cik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggMmU4MDM0Zjc2NGZhNDA1ZjFiNjNm
N2EzNzY3Y2NhNjA3MWNlY2JiYS4uNzg5NDMwZjU2MDhkMjg3NWEyNjczYTM2ZjkxZGJkZjc4NWU1
MGQ0MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dl
YkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KQEAgLTQ5LDYgKzUwLDkgQEAgc3RhdGljIGNvbnN0
IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICA8bWV0aG9kIG5hbWU9J0dldEluaXRp
YWxpemF0aW9uVXNlckRhdGEnPiIKICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1c2VyRGF0
YScgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9tZXRob2Q+IgorICAgICIgIDxtZXRob2Qg
bmFtZT0nR2V0UHJvY2Vzc0lkZW50aWZpZXInPiIKKyAgICAiICAgPGFyZyB0eXBlPSd1JyBuYW1l
PSdpZGVudGlmaWVyJyBkaXJlY3Rpb249J291dCcvPiIKKyAgICAiICA8L21ldGhvZD4iCiAgICAg
IiAgPHNpZ25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKICAgICAiICA8c2lnbmFsIG5hbWU9
J1VSSUNoYW5nZWQnPiIKICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVjdGlv
bj0nb3V0Jy8+IgpAQCAtMjI0LDYgKzIyOCw5IEBAIHN0YXRpYyB2b2lkIG1ldGhvZENhbGxDYWxs
YmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRlciwKICAg
ICAgICAgZ19hc3NlcnQoZ192YXJpYW50X2lzX29mX3R5cGUoaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YS5nZXQoKSwgR19WQVJJQU5UX1RZUEVfU1RSSU5HKSk7CiAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwK
ICAgICAgICAgICAgIGdfdmFyaWFudF9nZXRfc3RyaW5nKGluaXRpYWxpemF0aW9uVXNlckRhdGEu
Z2V0KCksIG51bGxwdHIpKSk7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUs
ICJHZXRQcm9jZXNzSWRlbnRpZmllciIpKSB7CisgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh
dGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwKKyAgICAgICAgICAgIGdfdmFyaWFudF9uZXco
Iih1KSIsIHN0YXRpY19jYXN0PGd1aW50MzI+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpKTsKICAg
ICB9CiB9CiAKQEAgLTI2Myw2ICsyNzAsMTggQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxs
YmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAg
ICB9CiB9CiAKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IG1ha2VCdXNOYW1lKEdWYXJpYW50KiB1
c2VyRGF0YSkKK3sKKyAgICAvLyBXaGVuIHRoZSB3ZWIgZXh0ZW5zaW9uIGlzIHVzZWQgYnkgVGVz
dE11bHRpcHJvY2VzcywgYW4gdWludDMyCisgICAgLy8gaWRlbnRpZmllciBpcyBwYXNzZWQgYXMg
dXNlciBkYXRhLiBJdCB1bmlxdWVseSBpZGVudGlmaWVzCisgICAgLy8gdGhlIHdlYiBwcm9jZXNz
LCBhbmQgdGhlIFVJIHNpZGUgZXhwZWN0cyBpdCBhZGRlZCBhcyBzdWZmaXggdG8KKyAgICAvLyB0
aGUgYnVzIG5hbWUuCisgICAgaWYgKHVzZXJEYXRhICYmIGdfdmFyaWFudF9pc19vZl90eXBlKHVz
ZXJEYXRhLCBHX1ZBUklBTlRfVFlQRV9VSU5UMzIpKQorICAgICAgICByZXR1cm4gR1VuaXF1ZVB0
cjxjaGFyPihnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3Ql
dSIsIGdfdmFyaWFudF9nZXRfdWludDMyKHVzZXJEYXRhKSkpOworCisgICAgcmV0dXJuIEdVbmlx
dWVQdHI8Y2hhcj4oZ19zdHJkdXAoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiKSk7
Cit9CisKIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dp
dGhfdXNlcl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogdXNl
ckRhdGEpCiB7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IHVzZXJEYXRhOwpAQCAtMjcw
LDkgKzI4OSwxMCBAQCBleHRlcm4gIkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlh
bGl6ZV93aXRoX3VzZXJfZGF0YShXZWJLaXRXZWJFeHRlbnNpbwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoZXh0ZW5zaW9uLCAicGFnZS1jcmVhdGVkIiwgR19DQUxMQkFDSyhwYWdlQ3JlYXRlZENhbGxi
YWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF9zY3JpcHRfd29y
bGRfZ2V0X2RlZmF1bHQoKSwgIndpbmRvdy1vYmplY3QtY2xlYXJlZCIsIEdfQ0FMTEJBQ0sod2lu
ZG93T2JqZWN0Q2xlYXJlZCksIDApOwogCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBidXNOYW1lKG1h
a2VCdXNOYW1lKHVzZXJEYXRhKSk7CiAgICAgZ19idXNfb3duX25hbWUoCiAgICAgICAgIEdfQlVT
X1RZUEVfU0VTU0lPTiwKLSAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3Qi
LAorICAgICAgICBidXNOYW1lLmdldCgpLAogICAgICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdT
X05PTkUsCiAgICAgICAgIGJ1c0FjcXVpcmVkQ2FsbGJhY2ssCiAgICAgICAgIDAsIDAsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222421</attachid>
            <date>2014-01-28 01:37:47 -0800</date>
            <delta_ts>2014-01-28 02:18:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125463-20140128113820.patch</filename>
            <type>text/plain</type>
            <size>23466</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmIyYmQ2MjYxZGJlZWU5
Y2JhNDUwMDcxOGQyNTM4Y2VkMmExNGY3My4uMmJkMWEzNDc1MGUyYjJhMTQxOTJiZTIyMGY2MGFj
NTE4NTUxN2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAxLTI4ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIEFQSSB0byBhbGxvdyBzZXR0aW5nIHRoZSBwcm9jZXNzIG1vZGVsIGluIFdlYktpdFdlYkNv
bnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudHMgYWNjZXNzb3JzIGluIFdlYktpdFdlYkNvbnRleHQgZm9yIHRoZSBwcm9jZXNzIG1v
ZGVsLgorICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGFuZCBhIHNp
bmdsZSB3ZWIgcHJvY2VzcyBpcworICAgICAgICB1c2VkLiBVc2luZyBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXCisgICAgICAgIGFzIHRoZSBw
cm9jZXNzIG1vZGVsIHdpbGwgbWFrZSB1c2Ugb25lIHdlYiBwcm9jZXNzIGZvciBlYWNoCisgICAg
ICAgIFdlYktpdFdlYlZpZXcuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBuZXR3b3JrIHByb2Nlc3Mu
IFNldHRpbmcKKyAgICAgICAgdGhlIHByb2Nlc3MgbW9kZWwgbXVzdCBiZSBkb25lIGFzIGVhcmx5
IGFzIHBvc3NpYmxlLCBiZWZvcmUgdGhlCisgICAgICAgIHZlcnkgZmlyc3Qgd2ViIHByb2Nlc3Mg
aXMgc3Bhd25lZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICBBZGQgYWNjZXNzb3JzIGluIHRoZSBBUEkgdG8gZ2V0L3NldCB0aGUg
cHJvY2VzcyBtb2RlbC4KKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19t
b2RlbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAg
RGVmaW5lIHRoZSBXZWJLaXRQcm9jZXNzTW9kZWwgZW51bS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICBBZGQgbmV3IHB1
YmxpYyBBUEkgYml0cyB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKwogMjAxNC0wMS0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTWFr
ZSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldygpIHdvcmsgd2l0aCBDdXN0
b21Qcm90b2NvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNDFkZmI2NjRiNGJkZGI4YTVjNWQwNmE3YjY4YTU4
MzNjOTYxMGVkYy4uZjAzMzM0OGZlMDJlNmU4ODhmMThkMGVjZGE4OTQ5MTkyZTgxOWU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKQEAgLTY0LDggKzY0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqIFRo
ZSAjV2ViS2l0V2ViQ29udGV4dCBtYW5hZ2VzIGFsbCBhc3BlY3RzIGNvbW1vbiB0byBhbGwKICAq
ICNXZWJLaXRXZWJWaWV3PCEtLSAtLT5zLgogICoKLSAqIFlvdSBjYW4gZGVmaW5lIHRoZSAjV2Vi
S2l0Q2FjaGVNb2RlbCB3aXRoCi0gKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVs
KCksIGRlcGVuZGluZyBvbiB0aGUgbmVlZHMgb2YKKyAqIFlvdSBjYW4gZGVmaW5lIHRoZSAjV2Vi
S2l0Q2FjaGVNb2RlbCBhbmQgI1dlYktpdFByb2Nlc3NNb2RlbCB3aXRoCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2NhY2hlX21vZGVsKCkgYW5kCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3Byb2Nlc3NfbW9kZWwoKSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcyBvZgogICogeW91ciBhcHBs
aWNhdGlvbi4gWW91IGNhbiBhY2Nlc3MgdGhlICNXZWJLaXRDb29raWVNYW5hZ2VyIG9yIHRoZQog
ICogI1dlYktpdFNlY3VyaXR5TWFuYWdlciB0byBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgeW91
ciBhcHBsaWNhdGlvbgogICogcmVnYXJkaW5nIGNvb2tpZXMgYW5kIHNlY3VyaXR5LCB1c2luZwpA
QCAtMTYxLDYgKzE2Miw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogCiBz
dGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9Q
Uk9DRVNTLCBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9QUk9D
RVNTX1BFUl9XRUJfVklFVywgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMp
OworCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViQ29udGV4dCwgd2Via2l0X3dlYl9jb250
ZXh0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xh
c3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcykKQEAgLTIyOCwx
MCArMjMyLDYgQEAgc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KGdwb2lu
dGVyKQogICAgIHByaXYtPmNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoV2ViQ29yZTo6Zmls
ZW5hbWVUb1N0cmluZyhpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKCkuZGF0YSgpKSk7CiAgICAgcHJp
di0+cmVxdWVzdE1hbmFnZXIgPSB3ZWJDb250ZXh0LT5wcml2LT5jb250ZXh0LT5zdXBwbGVtZW50
PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpOwogICAgIHByaXYtPmNvbnRl
eHQtPnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgdXNlIGFuIGVudiB2
YXIgdW50aWwgd2UgaGF2ZSBBUEkgdG8gc2V0IHRoZSBwcm9jZXNzIG1vZGVsLiBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTQ2My4KLSAgICBwcml2LT5jb250
ZXh0LT5zZXRVc2VzTmV0d29ya1Byb2Nlc3MoZ19nZXRlbnYoIldFQktJVF9VU0VfTkVUV09SS19Q
Uk9DRVNTIikpOwotI2VuZGlmCiAgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lUX1RM
U19FUlJPUlNfUE9MSUNZX0lHTk9SRTsKIAogICAgIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50
VG9Db250ZXh0KHdlYkNvbnRleHQuZ2V0KCkpOwpAQCAtODg4LDYgKzg4OCw1NiBAQCB2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dAogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmlu
Zzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
cHJvY2Vzc19tb2RlbDoKKyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQKKyAqIEBw
cm9jZXNzX21vZGVsOiBhICNXZWJLaXRQcm9jZXNzTW9kZWwKKyAqCisgKiBTcGVjaWZpZXMgYSBw
cm9jZXNzIG1vZGVsIGZvciBXZWJWaWV3cywgd2hpY2ggV2ViS2l0IHdpbGwgdXNlIHRvCisgKiBk
ZXRlcm1pbmUgaG93IGF1eGlsaWFyeSBwcm9jZXNzZXMgYXJlIGhhbmRsZWQuIFRoZSBkZWZhdWx0
IHNldHRpbmcKKyAqICglV0VCS0lUX1BST0NFU1NfTU9ERUxfU0hBUkVEX1NFQ09OREFSWV9QUk9D
RVNTKSBpcyBzdWl0YWJsZSBmb3IgbW9zdAorICogYXBwbGljYXRpb25zIHdoaWNoIGVtYmVkIGEg
c21hbGwgYW1vdW50IG9mIFdlYlZpZXdzLCBvciBhcmUgdXNlZCB0bworICogZGlzcGxheSBkb2N1
bWVudHMgd2hpY2ggYXJlIGNvbnNpZGVyZWQgc2FmZSAtLSBsaWtlIGxvY2FsIGZpbGVzLgorICoK
KyAqIEFwcGxpY2F0aW9ucyB3aGljaCBtYXkgcG90ZW50aWFsbHkgdXNlIGEgbGFyZ2UgYW1vdW50
IG9mIFdlYlZpZXdzIC0tZm9yCisgKiBleGFtcGxlIGEgbXVsdGktdGFiYmVkIHdlYiBicm93c2Vy
LS0gbWF5IHdhbnQgdG8gdXNlCisgKiAlV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFS
WV9QUk9DRVNTX1BFUl9XRUJfVklFVyB0byB1c2Ugb25lCisgKiBwcm9jZXNzIHBlciB2aWV3LiBV
c2luZyB0aGlzIG1vZGVsLCB3aGVuIGEgV2ViVmlldyBoYW5ncyBvciBjcmFzaGVzLAorICogdGhl
IHJlc3Qgb2YgdGhlIFdlYlZpZXdzIGluIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHN0aWxsIHdvcmsg
bm9ybWFsbHkuCisgKgorICogVGhpcyBtZXRob2QgPHN0cm9uZz5tdXN0IGJlIGNhbGxlZCBiZWZv
cmUgYW55IG90aGVyIGZ1bmN0aW9uczwvc3Ryb25nPiwKKyAqIGFzIGVhcmx5IGFzIHBvc3NpYmxl
IGluIHlvdXIgYXBwbGljYXRpb24uIENhbGxpbmcgaXQgbGF0ZXIgd2lsbCBtYWtlCisgKiB5b3Vy
IGFwcGxpY2F0aW9uIGNyYXNoLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwg
V2ViS2l0UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAocHJvY2Vzc01vZGVs
ICE9IGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnByb2Nlc3NNb2RlbCgpKSB7CisgICAgICAgIGNv
bnRleHQtPnByaXYtPmNvbnRleHQtPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyhwcm9jZXNzTW9kZWwg
PT0gUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworICAgICAgICBjb250
ZXh0LT5wcml2LT5jb250ZXh0LT5zZXRQcm9jZXNzTW9kZWwoc3RhdGljX2Nhc3Q8UHJvY2Vzc01v
ZGVsPihwcm9jZXNzTW9kZWwpKTsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9jb250
ZXh0X2dldF9wcm9jZXNzX21vZGVsOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4
dAorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgcHJvY2VzcyBtb2RlbC4gRm9yIG1vcmUgaW5m
b3JtYXRpb24gYWJvdXQgdGhpcyB2YWx1ZQorICogc2VlIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
cHJvY2Vzc19tb2RlbCgpLgorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50ICNXZWJLaXRQcm9j
ZXNzTW9kZWwKKyAqCisgKiBTaW5jZTogMi40CisgKi8KK1dlYktpdFByb2Nlc3NNb2RlbCB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29u
dGV4dCksIFdFQktJVF9QUk9DRVNTX01PREVMX1NIQVJFRF9TRUNPTkRBUllfUFJPQ0VTUyk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdFByb2Nlc3NNb2RlbD4oY29udGV4dC0+cHJpdi0+
Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkpOworfQorCiBXZWJLaXREb3dubG9hZCogd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkK
IHsKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGRvd25sb2Fkc01hcCgp
LmdldChkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCAxZTNiOWI1ODhkNjVhODU0OTlhODZiYjcx
NmNiNjdiZTIzZDkyMmFhLi5kM2UxMmIzNTUwNDZkN2M4ZTVmYjJiNmRhOGNiYTc0NDliNGJmOWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oCkBAIC02Myw2ICs2MywzMCBAQCB0eXBlZGVmIGVudW0gewogfSBXZWJLaXRDYWNo
ZU1vZGVsOwogCiAvKioKKyAqIFdlYktpdFByb2Nlc3NNb2RlbDoKKyAqIEBXRUJLSVRfUFJPQ0VT
U19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BST0NFU1M6IFVzZSBhIHNpbmdsZSBwcm9jZXNzIHRv
CisgKiAgIHBlcmZvcm0gY29udGVudCByZW5kZXJpbmcuIFRoZSBwcm9jZXNzIGlzIHNoYXJlZCBh
bW9uZyBhbGwgdGhlCisgKiAgICNXZWJLaXRXZWJWaWV3IGluc3RhbmNlcyBjcmVhdGVkIGJ5IHRo
ZSBhcHBsaWNhdGlvbjogaWYgdGhlIHByb2Nlc3MKKyAqICAgaGFuZ3Mgb3IgY3Jhc2hlcyBhbGwg
dGhlIHdlYiB2aWV3cyBpbiB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBhZmZlY3RlZC4KKyAqICAg
VGhpcyBpcyB0aGUgZGVmYXVsdCBwcm9jZXNzIG1vZGVsLCBhbmQgaXQgc2hvdWxkIHN1ZmZpY2Ug
Zm9yIG1vc3QgY2FzZXMuCisgKiBAV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9Q
Uk9DRVNTX1BFUl9XRUJfVklFVzogVXNlIG9uZSBwcm9jZXNzCisgKiAgIGZvciBlYWNoICNXZWJL
aXRXZWJWaWV3LiBUaGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBwcm9jZXNzIG1vZGVsIGlzIHRo
YXQKKyAqICAgdGhlIHJlbmRlcmluZyBwcm9jZXNzIGZvciBhIHdlYiB2aWV3IGNhbiBjcmFzaCB3
aGlsZSB0aGUgcmVzdCBvZiB0aGUKKyAqICAgdmlld3Mga2VlcCB3b3JraW5nIG5vcm1hbGx5LiBU
aGlzIHByb2Nlc3MgbW9kZWwgaXMgaW5kaWNhdGVkIGZvcgorICogICBhcHBsaWNhdGlvbnMgd2hp
Y2ggbWF5IHVzZSBhIG51bWJlciBvZiB3ZWIgdmlld3MgYW5kIHRoZSBjb250ZW50IG9mCisgKiAg
IGluIGVhY2ggbXVzdCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHJlc3QgLS0gZm9yIGV4YW1wbGUg
YSBmdWxsLWZsZWRnZWQKKyAqICAgd2ViIGJyb3dzZXIgd2l0aCBzdXBwb3J0IGZvciBtdWx0aXBs
ZSB0YWJzLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSAjV2Vi
S2l0V2ViQ29udGV4dCBwcm9jZXNzIG1vZGVsLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordHlw
ZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZX1BS
T0NFU1MsCisgICAgV0VCS0lUX1BST0NFU1NfTU9ERUxfT05FX1NFQ09OREFSWV9QUk9DRVNTX1BF
Ul9XRUJfVklFVywKK30gV2ViS2l0UHJvY2Vzc01vZGVsOworCisvKioKICAqIFdlYktpdFRMU0Vy
cm9yc1BvbGljeToKICAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFOiBJZ25vcmUg
VExTIGVycm9ycy4KICAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDogVExTIGVycm9y
cyB3aWxsIGVtaXQKQEAgLTIxMyw2ICsyMzcsMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmlj
YXRlSW5mbyAgICAgICAgICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqaG9zdCk7
CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVs
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0UHJvY2Vzc01vZGVsICAgICAgICAgICAgIHByb2Nlc3NfbW9kZWwpOworCitXRUJLSVRfQVBJ
IFdlYktpdFByb2Nlc3NNb2RlbAord2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVs
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXgg
MWMxM2M2YzA3M2E3NWQxOTdkNzA1NjJjMDI5NzkyMWY3YjYzODJmNC4uOTQyMTQ5NjZkNWMyNjU2
ZmY5NmM2MzhiODQ5OGIwNTRjZDJlN2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBA
IC0yNCw2ICsyNCw3IEBAIFdFQktJVF9PQlNPTEVURV9BUEkKIDxUSVRMRT5XZWJLaXRXZWJDb250
ZXh0PC9USVRMRT4KIFdlYktpdFdlYkNvbnRleHQKIFdlYktpdENhY2hlTW9kZWwKK1dlYktpdFBy
b2Nlc3NNb2RlbAogV2ViS2l0VExTRXJyb3JzUG9saWN5CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2RlZmF1bHQKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwKQEAgLTUwLDYgKzUx
LDggQEAgd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19pbml0aWFsaXphdGlv
bl91c2VyX2RhdGEKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9hbGxv
d190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vz
c19tb2RlbAord2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsCiAKIDxTVUJTRUNU
SU9OIFVSSSBTY2hlbWU+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NGQ4MTNlYzBlZGU5
ODZlZDA2MWY3M2YzY2ZkOWM1ZTI0Y2Y4MDM3Li4yMGIwNzE2MDM5ZjM1YTQwMzg3NTQzOGM4N2Ew
MDVlZmZjOTkwZWZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTQtMDEtMjggIEFkcmlhbiBQZXJleiBkZSBDYXN0
cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgQVBJIHRvIGFsbG93
IHNldHRpbmcgdGhlIHByb2Nlc3MgbW9kZWwgaW4gV2ViS2l0V2ViQ29udGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NDYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBhY2Nlc3Nv
cnMgaW4gV2ViS2l0V2ViQ29udGV4dCBmb3IgdGhlIHByb2Nlc3MgbW9kZWwuCisgICAgICAgIFRo
ZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHVuY2hhbmdlZCwgYW5kIGEgc2luZ2xlIHdlYiBwcm9jZXNz
IGlzCisgICAgICAgIHVzZWQuIFVzaW5nIFdFQktJVF9QUk9DRVNTX01PREVMX09ORV9TRUNPTkRB
UllfUFJPQ0VTU19QRVJfV0VCX1ZJRVcKKyAgICAgICAgYXMgdGhlIHByb2Nlc3MgbW9kZWwgd2ls
bCBtYWtlIHVzZSBvbmUgd2ViIHByb2Nlc3MgZm9yIGVhY2gKKyAgICAgICAgV2ViS2l0V2ViVmll
dy4gVGhpcyBhbHNvIGVuYWJsZXMgdGhlIG5ldHdvcmsgcHJvY2Vzcy4gU2V0dGluZworICAgICAg
ICB0aGUgcHJvY2VzcyBtb2RlbCBtdXN0IGJlIGRvbmUgYXMgZWFybHkgYXMgcG9zc2libGUsIGJl
Zm9yZSB0aGUKKyAgICAgICAgdmVyeSBmaXJzdCB3ZWIgcHJvY2VzcyBpcyBzcGF3bmVkLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICBFbmFibGUgbXVsdGlwbGUgcHJvY2VzcyBtb2RlIGlmIHRoZSBNSU5JQlJPV1NFUl9NVUxUSVBS
T0NFU1MKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgbm90IGVt
cHR5LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFk
ZCBuZXcgVGVzdE11bHRpcHJvY2VzcyB0ZXN0IGNhc2UuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0OgorICAgICAgICBBZGQgbmV3IFRlc3RN
dWx0aXByb2Nlc3MgdGVzdCBjYXNlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0TXVsdGlwcm9jZXNzLmNwcDogQWRkZWQuCisgICAgICAgIChsb2FkQ2hhbmdl
ZCk6CisgICAgICAgICh0ZXN0TXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOgorICAgICAgICAo
aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAg
KGFmdGVyQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2Vi
RXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgIChtZXRob2RDYWxsQ2FsbGJhY2spOgorICAgICAg
ICBJbXBsZW1lbnQgdGhlIEdldFByb2Nlc3NJZGVudGlmaWVyIEQtQnVzIG1ldGhvZC4KKyAgICAg
ICAgKG1ha2VCdXNOYW1lKToKKyAgICAgICAgQ2hvb3NlIGEgZGlmZmVyZW50IGJ1cyBuYW1lIHdo
ZW4gdGhlIHdlYiBleHRlbnNpb24gaXMgdXNlZAorICAgICAgICBmcm9tIFRlc3RNdWx0aXByb2Nl
c3MuCisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9k
YXRhKToKKyAgICAgICAgVXNlIG1ha2VCdXNOYW1lKCkgdG8gY2hvb3NlIHRoZSBidXMgbmFtZS4K
KwogMjAxNC0wMS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gTWFrZSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJf
dmlldygpIHdvcmsgd2l0aCBDdXN0b21Qcm90b2NvbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDUw
NDljZjIxZjBlNWQ3NWM1YmQ5YWY0NTcyYjkxMDllODRkZDRlNDAuLjkyODM2MDUzMWM4OWEwZGMy
MGYzYWJlNWUzMjIyYWFlOTcxNzliYmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtMjQxLDYgKzI0
MSwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogICAgIGd0a19pbml0
KCZhcmdjLCAmYXJndik7CiAKKyAgICBjb25zdCBnY2hhciAqbXVsdGlwcm9jZXNzID0gZ19nZXRl
bnYoIk1JTklCUk9XU0VSX01VTFRJUFJPQ0VTUyIpOworICAgIGlmIChtdWx0aXByb2Nlc3MgJiYg
Km11bHRpcHJvY2VzcykgeworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3Nf
bW9kZWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCisgICAgICAgICAgICBXRUJL
SVRfUFJPQ0VTU19NT0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKyAg
ICB9CisKICAgICBHT3B0aW9uQ29udGV4dCAqY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3
KE5VTEwpOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyhjb250ZXh0LCBj
b21tYW5kTGluZU9wdGlvbnMsIDApOwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwKGNv
bnRleHQsIGd0a19nZXRfb3B0aW9uX2dyb3VwKFRSVUUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDNkMzBjMmE4NmQ4NTA5YmVhOTFlNDI2NTliOWI4ZjZlZDVkNzQ0OTQuLjVi
ZjAzMGQxMzIzNDdkMmZlNWMxY2YxZWEzMWQ5MzdiNDA5ZDM0MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAJ
UHJvZ3JhbXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3IgXAogCVByb2dy
YW1zL1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyIFwKIAlQcm9n
cmFtcy9UZXN0V2ViS2l0QVBJL1dlYktpdDJHdGsvVGVzdExvYWRlckNsaWVudCBcCisJUHJvZ3Jh
bXMvVGVzdFdlYktpdEFQSS9XZWJLaXQyR3RrL1Rlc3RNdWx0aXByb2Nlc3MgXAogCVByb2dyYW1z
L1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcgXAogCVByb2dyYW1zL1Rlc3RX
ZWJLaXRBUEkvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzIFwKIAlQcm9ncmFtcy9UZXN0V2ViS2l0
QVBJL1dlYktpdDJHdGsvVGVzdFNTTCBcCkBAIC03NjcsNiArNzY4LDEyIEBAIFByb2dyYW1zX1Rl
c3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0NQUEZMQUdTID0gJCh3ZWJr
aXQyZ3RrX3Rlc3RzCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1dlYktpdDJHdGtfVGVzdExvYWRl
ckNsaWVudF9MREFERCA9ICQod2Via2l0Mmd0a190ZXN0c19sZGFkZCkKIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0TG9hZGVyQ2xpZW50X0xERkxBR1MgPSAkKHdlYmtpdDJn
dGtfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rl
c3RNdWx0aXByb2Nlc3NfU09VUkNFUyA9IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAKK1Byb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2Vi
S2l0Mkd0a19UZXN0TXVsdGlwcm9jZXNzX0NQUEZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rlc3RzX2Nw
cGZsYWdzKQorUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJLaXQyR3RrX1Rlc3RNdWx0aXByb2Nl
c3NfTERBREQgPSAkKHdlYmtpdDJndGtfdGVzdHNfbGRhZGQpCitQcm9ncmFtc19UZXN0V2ViS2l0
QVBJX1dlYktpdDJHdGtfVGVzdE11bHRpcHJvY2Vzc19MREZMQUdTID0gJCh3ZWJraXQyZ3RrX3Rl
c3RzX2xkZmxhZ3MpCisKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfV2ViS2l0Mkd0a19UZXN0V2Vi
S2l0U2V0dGluZ3NfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNwcAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9XZWJL
aXQyR3RrX1Rlc3RXZWJLaXRTZXR0aW5nc19DUFBGTEFHUyA9ICQod2Via2l0Mmd0a190ZXN0c19j
cHBmbGFncykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9D
TWFrZUxpc3RzLnR4dAppbmRleCBiODgzY2YxZTZkNDkyZTJkM2Q4M2U1NGE5OWU5ZTJiNzFmZWEw
YzFhLi45NDBlZDczM2FjNDQ5Mzc1NDcxYTA0YmFjMjQ3ZjcwNDFiODRmN2RmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBA
IC05Miw2ICs5Miw3IEBAIEFERF9XSzJfVEVTVChUZXN0RnJhbWUgVGVzdEZyYW1lLmNwcCkKIEFE
RF9XSzJfVEVTVChUZXN0SW5zcGVjdG9yIFRlc3RJbnNwZWN0b3IuY3BwKQogQUREX1dLMl9URVNU
KFRlc3RJbnNwZWN0b3JTZXJ2ZXIgVGVzdEluc3BlY3RvclNlcnZlci5jcHApCiBBRERfV0syX1RF
U1QoVGVzdExvYWRlckNsaWVudCBUZXN0TG9hZGVyQ2xpZW50LmNwcCkKK0FERF9XSzJfVEVTVChU
ZXN0TXVsdGlwcm9jZXNzIFRlc3RNdWx0aXByb2Nlc3MuY3BwKQogQUREX1dLMl9URVNUKFRlc3RQ
cmludGluZyBUZXN0UHJpbnRpbmcuY3BwKQogQUREX1dLMl9URVNUKFRlc3RTU0wgVGVzdFNTTC5j
cHApCiBBRERfV0syX1RFU1QoVGVzdFdlYkV4dGVuc2lvbnMgVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RN
dWx0aXByb2Nlc3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RNdWx0aXByb2Nlc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmNiNDU4MmViOGU3OTMzOGIyNjcxNGZj
NGQ3MGU2ZTdhYjgyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIlRlc3RNYWluLmgiCisjaW5jbHVkZSAiV2ViS2l0VGVzdEJ1cy5oIgorI2lu
Y2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0gMjsKK3N0YXRpYyBndWludDMyIG5leHRJbml0
aWFsaXphdGlvbklkID0gMTsKK3N0YXRpYyB1bnNpZ25lZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9u
c1NpZ25hbENvdW50Oworc3RhdGljIFdlYktpdFRlc3RCdXMqIGJ1czsKKworY2xhc3MgTXVsdGlw
cm9jZXNzVGVzdDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJ
WFRVUkUoTXVsdGlwcm9jZXNzVGVzdCk7CisKKyAgICBNdWx0aXByb2Nlc3NUZXN0KCkKKyAgICAg
ICAgOiBtX21haW5Mb29wKGdfbWFpbl9sb29wX25ldyhudWxscHRyLCBUUlVFKSkKKyAgICAgICAg
LCBtX3dlYlZpZXdCdXNOYW1lcyhudW1WaWV3cykKKyAgICAgICAgLCBtX3dlYlZpZXdzKG51bVZp
ZXdzKSB7IH0KKworICAgIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIE11bHRpcHJvY2Vzc1Rlc3QqIHRlc3Qp
CisgICAgeworICAgICAgICBpZiAobG9hZEV2ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obG9hZENoYW5nZWQpLCB0
ZXN0KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICB9
CisKKyAgICB2b2lkIGxvYWRXZWJWaWV3QW5kV2FpdFVudGlsTG9hZGVkKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChpbmRleCwgPCwgbnVtVmlld3MpOwor
CisgICAgICAgIG1fd2ViVmlld0J1c05hbWVzW2luZGV4XSA9IEdVbmlxdWVQdHI8Y2hhcj4oZ19z
dHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBuZXh0SW5p
dGlhbGl6YXRpb25JZCkpOworCisgICAgICAgIG1fd2ViVmlld3NbaW5kZXhdID0gV0VCS0lUX1dF
Ql9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93ZWJWaWV3c1tpbmRleF0uZ2V0KCkpKTsK
KworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKG1fd2ViVmlld3NbaW5kZXhdLmdl
dCgpLCAiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fd2ViVmlld3NbaW5kZXhdLmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhsb2Fk
Q2hhbmdlZCksIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgd2ViUHJvY2Vzc1BpZCh1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoaW5kZXgsIDwsIG51bVZpZXdzKTsKKworICAgICAg
ICBHUmVmUHRyPEdEQnVzUHJveHk+IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHko
bV93ZWJWaWV3QnVzTmFtZXNbaW5kZXhdLmdldCgpLAorICAgICAgICAgICAgIi9vcmcvd2Via2l0
L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3Qi
LCBtX21haW5Mb29wKSk7CisKKyAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0ID0gYWRv
cHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMoCisgICAgICAgICAgICBwcm94eS5nZXQoKSwK
KyAgICAgICAgICAgICJHZXRQcm9jZXNzSWRlbnRpZmllciIsCisgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgICAgIC0xLCBu
dWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisKKyAgICAgICAg
Z3VpbnQzMiBpZGVudGlmaWVyID0gMDsKKyAgICAgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0
KCksICIodSkiLCAmaWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBpZGVudGlmaWVyOworICAg
IH0KKworICAgIEdNYWluTG9vcCogbV9tYWluTG9vcDsKKyAgICBWZWN0b3I8R1VuaXF1ZVB0cjxj
aGFyPiwgbnVtVmlld3M+IG1fd2ViVmlld0J1c05hbWVzOworICAgIFZlY3RvcjxHUmVmUHRyPFdl
YktpdFdlYlZpZXc+LCBudW1WaWV3cz4gbV93ZWJWaWV3czsKK307CisKK3N0YXRpYyB2b2lkIHRl
c3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIC8vIENyZWF0ZSB0d28gd2ViIHZpZXdzLiBBcyB3ZSBhcmUgaW4gbXVsdGlwcm9j
ZXNzIG1vZGUsIHRoZXJlIG11c3QgYmUKKyAgICAvLyB0d28gd2ViIHByb2Nlc3NlcywgcnVubmlu
ZyBhbiBpbnN0YW5jZSBvZiB0aGUgd2ViIGV4dGVuc2lvbiBlYWNoLgorICAgIC8vIFRoZSBpbml0
aWFsaXplLXdlYi1leHRlbnNpb25zIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCB0d2ljZSwgYW5kIHRo
ZQorICAgIC8vIGlkZW50aWZpZXJzIGdlbmVyYXRlZCBmb3IgdGhlbSBtdXN0IGJlIGRpZmZlcmVu
dCAoYW5kIHRoZWlyIHJlcG9ydGVkCisgICAgLy8gcHJvY2VzcyBpZGVudGlmaWVycykuCisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmlld3M7IGkrKykgeworICAgICAgICB0ZXN0
LT5sb2FkV2ViVmlld0FuZFdhaXRVbnRpbExvYWRlZChpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0lTX1dFQl9WSUVXKHRlc3QtPm1fd2ViVmlld3NbaV0uZ2V0KCkpKTsKKyAgICAgICAgZ19h
c3NlcnQodGVzdC0+bV93ZWJWaWV3QnVzTmFtZXNbaV0pOworICAgIH0KKworICAgIGdfYXNzZXJ0
X2NtcHVpbnQoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIG51bVZpZXdz
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV93ZWJWaWV3QnVzTmFtZXNbMF0uZ2V0KCks
ICE9LCB0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1sxXS5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT53ZWJQcm9jZXNzUGlkKDApLCAhPSwgdGVzdC0+d2ViUHJvY2Vzc1BpZCgxKSk7
Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVXZWJFeHRlbnNpb25zKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIGdwb2ludGVyKQoreworICAgIGluaXRpYWxpemVXZWJFeHRlbnNpb25zU2ln
bmFsQ291bnQrKzsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2Rp
cmVjdG9yeShjb250ZXh0LCBXRUJLSVRfVEVTVF9XRUJfRVhURU5TSU9OU19ESVIpOworICAgIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfaW5pdGlhbGl6YXRpb25fdXNlcl9k
YXRhKGNvbnRleHQsCisgICAgICAgIGdfdmFyaWFudF9uZXdfdWludDMyKG5leHRJbml0aWFsaXph
dGlvbklkKyspKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCisgICAgICAgICJpbml0aWFsaXpl
LXdlYi1leHRlbnNpb25zIiwgR19DQUxMQkFDSyhpbml0aWFsaXplV2ViRXh0ZW5zaW9ucyksIG51
bGxwdHIpOworCisgICAgLy8gQ2hlY2sgdGhhdCBkZWZhdWx0IHNldHRpbmcgaXMgdGhlIG9uZSBz
dGF0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1
bHQoKSksCisgICAgICAgID09LCBXRUJLSVRfUFJPQ0VTU19NT0RFTF9TSEFSRURfU0VDT05EQVJZ
X1BST0NFU1MpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcm9jZXNzX21vZGVsKHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLAorICAgICAgICBXRUJLSVRfUFJPQ0VTU19N
T0RFTF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKworICAgIC8vIENoZWNr
IHRoYXQgdGhlIGdldHRlciByZXR1cm5zIHRoZSBuZXdseS1zZXQgdmFsdWUKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbCh3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X2RlZmF1bHQoKSksCisgICAgICAgID09LCBXRUJLSVRfUFJPQ0VTU19NT0RF
TF9PTkVfU0VDT05EQVJZX1BST0NFU1NfUEVSX1dFQl9WSUVXKTsKKworICAgIGJ1cyA9IG5ldyBX
ZWJLaXRUZXN0QnVzKCk7CisgICAgaWYgKCFidXMtPnJ1bigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBNdWx0aXByb2Nlc3NUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJvY2Vzcy1w
ZXItd2ViLXZpZXciLCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcpOworfQorCit2b2lkIGFmdGVyQWxs
KCkKK3sKKyAgICBkZWxldGUgYnVzOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwKKyAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMpLCBudWxscHRyKTsKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRl
bnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJF
eHRlbnNpb25UZXN0LmNwcAppbmRleCAyZTgwMzRmNzY0ZmE0MDVmMWI2M2Y3YTM3NjdjY2E2MDcx
Y2VjYmJhLi43ODk0MzBmNTYwOGQyODc1YTI2NzNhMzZmOTFkYmRmNzg1ZTUwZDQxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVu
c2lvblRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgpAQCAtNDksNiArNTAsOSBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3Nw
ZWN0aW9uWE1MW10gPQogICAgICIgIDxtZXRob2QgbmFtZT0nR2V0SW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3VzZXJEYXRhJyBkaXJlY3Rpb249
J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdHZXRQcm9j
ZXNzSWRlbnRpZmllcic+IgorICAgICIgICA8YXJnIHR5cGU9J3UnIG5hbWU9J2lkZW50aWZpZXIn
IGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5h
bWU9J0RvY3VtZW50TG9hZGVkJy8+IgogICAgICIgIDxzaWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+
IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3VyaScgZGlyZWN0aW9uPSdvdXQnLz4iCkBA
IC0yMjQsNiArMjI4LDkgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29u
bmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBnX2Fzc2Vy
dChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShpbml0aWFsaXphdGlvblVzZXJEYXRhLmdldCgpLCBHX1ZB
UklBTlRfVFlQRV9TVFJJTkcpKTsKICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl
dHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIocykiLAogICAgICAgICAgICAg
Z192YXJpYW50X2dldF9zdHJpbmcoaW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSwgbnVsbHB0
cikpKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFByb2Nlc3NJ
ZGVudGlmaWVyIikpIHsKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92
YWx1ZShpbnZvY2F0aW9uLAorICAgICAgICAgICAgZ192YXJpYW50X25ldygiKHUpIiwgc3RhdGlj
X2Nhc3Q8Z3VpbnQzMj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSkpOwogICAgIH0KIH0KIApAQCAt
MjYzLDYgKzI3MCwxOCBAQCBzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29u
bmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZwogICAgIH0KIH0KIAorc3Rh
dGljIEdVbmlxdWVQdHI8Y2hhcj4gbWFrZUJ1c05hbWUoR1ZhcmlhbnQqIHVzZXJEYXRhKQorewor
ICAgIC8vIFdoZW4gdGhlIHdlYiBleHRlbnNpb24gaXMgdXNlZCBieSBUZXN0TXVsdGlwcm9jZXNz
LCBhbiB1aW50MzIKKyAgICAvLyBpZGVudGlmaWVyIGlzIHBhc3NlZCBhcyB1c2VyIGRhdGEuIEl0
IHVuaXF1ZWx5IGlkZW50aWZpZXMKKyAgICAvLyB0aGUgd2ViIHByb2Nlc3MsIGFuZCB0aGUgVUkg
c2lkZSBleHBlY3RzIGl0IGFkZGVkIGFzIHN1ZmZpeCB0bworICAgIC8vIHRoZSBidXMgbmFtZS4K
KyAgICBpZiAodXNlckRhdGEgJiYgZ192YXJpYW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFS
SUFOVF9UWVBFX1VJTlQzMikpCisgICAgICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGdfc3Ry
ZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgZ192YXJpYW50
X2dldF91aW50MzIodXNlckRhdGEpKSk7CisKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxjaGFyPihn
X3N0cmR1cCgib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIpKTsKK30KKwogZXh0ZXJu
ICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEo
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJpYW50KiB1c2VyRGF0YSkKIHsKICAg
ICBpbml0aWFsaXphdGlvblVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0yNzAsOSArMjg5LDEwIEBA
IGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNl
cl9kYXRhKFdlYktpdFdlYkV4dGVuc2lvCiAgICAgZ19zaWduYWxfY29ubmVjdChleHRlbnNpb24s
ICJwYWdlLWNyZWF0ZWQiLCBHX0NBTExCQUNLKHBhZ2VDcmVhdGVkQ2FsbGJhY2spLCBleHRlbnNp
b24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVs
dCgpLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgR19DQUxMQkFDSyh3aW5kb3dPYmplY3RDbGVh
cmVkKSwgMCk7CiAKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1c05hbWUobWFrZUJ1c05hbWUodXNl
ckRhdGEpKTsKICAgICBnX2J1c19vd25fbmFtZSgKICAgICAgICAgR19CVVNfVFlQRV9TRVNTSU9O
LAotICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIGJ1
c05hbWUuZ2V0KCksCiAgICAgICAgIEdfQlVTX05BTUVfT1dORVJfRkxBR1NfTk9ORSwKICAgICAg
ICAgYnVzQWNxdWlyZWRDYWxsYmFjaywKICAgICAgICAgMCwgMCwK
</data>

          </attachment>
      

    </bug>

</bugzilla>