<?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>94316</bug_id>
          
          <creation_ts>2012-08-17 02:03:55 -0700</creation_ts>
          <short_desc>[GTK] Add webkit_uri_scheme_request_finish_error</short_desc>
          <delta_ts>2013-05-06 14:19:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>114347</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jesse van den Kieboom">jessevdk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego</cc>
    
    <cc>spena</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>698060</commentid>
    <comment_count>0</comment_count>
    <who name="Jesse van den Kieboom">jessevdk</who>
    <bug_when>2012-08-17 02:03:55 -0700</bug_when>
    <thetext>It would be nice to have an additional method on WebKitURISchemeRequest to signal errors in requesting a resource. For example, it would be nice to be able to signal a 404, or something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869747</commentid>
    <comment_count>1</comment_count>
      <attachid>196628</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-05 07:01:12 -0700</bug_when>
    <thetext>Created attachment 196628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869748</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-05 07:03:13 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869813</commentid>
    <comment_count>3</comment_count>
      <attachid>196628</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-05 09:37:31 -0700</bug_when>
    <thetext>Comment on attachment 196628
Patch

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

Looks good in general, but there are some memory leaks and other minor issues. Thanks!

&gt; Source/WebKit2/ChangeLog:7
&gt; +        Need a short description (OOPS!).
&gt; +        Need the bug URL (OOPS!).

Remove this, as you already provided those.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp:233
&gt; +    WebCore::ResourceError resourceError = WebCore::ResourceError(g_quark_to_string(error-&gt;domain), error-&gt;code, priv-&gt;uri.data(), String::fromUTF8(error-&gt;message));

This can be WebCore::ResourceError resourceError(g_quark_to_string(error-&gt;domain), error-&gt;code, priv-&gt;uri.data(), String::fromUTF8(error-&gt;message));

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:571
&gt; + * #WebKitURISchemeRequest and calling webkit_uri_scheme_request_finish() or
&gt; + * webkit_uri_scheme_request_finish_error() later when the data of the request
&gt; + * is available.

webkit_uri_scheme_request_finish() later when the data of the request is available or webkit_uri_scheme_request_finish_error() in case of error.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:597
&gt; + *                                                 g_error_new (WEBKIT_NETWORK_ERROR,

Don&apos;t leak the GError in the example, people will copy-paste and everybody will end up leaking. Use a different doamin, one invented to avoid confusion thjat you have to use NETWORK.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:598
&gt; + *                                                              0,

Use an error code to, also invented, but something different that 0.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:599
&gt; + *                                                              &quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;p&amp;gt;Invalid about:%s page&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;,

Don&apos;t use html in GError message.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:125
&gt; +        Standard,
&gt; +        WithPath,
&gt; +        Error

You can check the actual scheme instead of having to pass this.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:176
&gt; +            webkit_uri_scheme_request_finish_error(request, g_error_new(WEBKIT_NETWORK_ERROR, 0, &quot;Error&quot;));

Don&apos;t leak the GError. If you use the network doain you should use a valid error code, and 0 isn&apos;t an error code valid for the domain. You ca use g_quark_from_string to create one just for testing.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:228
&gt; +    test-&gt;waitUntilLoadFinished();
&gt; +    g_assert(test-&gt;m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));

Your should also check the actual GError received to make sure domain, code, and message match.

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:173
&gt; +    GError* gerror = g_error_new_literal(g_quark_from_string(error.domain().utf8().data()), error.errorCode(), error.localizedDescription().utf8().data());

gerror -&gt; error

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:174
&gt; +    g_simple_async_result_take_error(result.get(), gerror);

You coudl even pass the error directly without caching it in a local variable.

&gt; Tools/MiniBrowser/gtk/main.c:222
&gt; +        webkit_uri_scheme_request_finish_error(request, g_error_new(WEBKIT_NETWORK_ERROR, 0, &quot;&lt;html&gt;&lt;body&gt;&lt;p&gt;Invalid about:%s page.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;, path));

The error is leaked here too, same comments about the domain +error code. Don&apos;t use html in the message, the default handler for error pages already includes the html tags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870667</commentid>
    <comment_count>4</comment_count>
      <attachid>196839</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-08 01:27:34 -0700</bug_when>
    <thetext>Created attachment 196839
Patch

While adding the check for the error domain I realized that the error always have G_IO_ERROR domain, this was because of the implementation of ResourceError::httpError(). I&apos;ve did a change to keep the domain of the error, but maybe that&apos;s not right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870718</commentid>
    <comment_count>5</comment_count>
      <attachid>196839</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-08 05:44:44 -0700</bug_when>
    <thetext>Comment on attachment 196839
Patch

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

Looks good, but there are still some issues to fix.

&gt; Source/WebCore/platform/network/soup/ResourceErrorSoup.cpp:64
&gt; -        return genericIOError(error, request);
&gt; +        return ResourceError(g_quark_to_string(error-&gt;domain), error-&gt;code, failingURI(request),
&gt; +            String::fromUTF8(error-&gt;message));

This leaves generioIOError unused, I think. We could rename it to genericGError, for example, and use the GError + failingURI to build a ResourceError. Martin, what do you think?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp:224
&gt; + * Finish a #WebKitURISchemeRequest with a #GError that you could monitor using
&gt; + * the #WebKitWebView::load-failed signal.

This is a bit confusing, sounds like you can monitor the GError or something like that. There&apos;s nothing special about this that requires to be mentioned, it&apos;s like any other resource, if it fails to load, the normal signals will be emitted. I think it&apos;s better to not say anything about the load-failed signal.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp:225
&gt; + */

Add Since: 2.2 tag here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:599
&gt; + *         GError *error = g_error_new (g_quark_from_string(&quot;example-domain&quot;), 10, &quot;Invalid about:%s page.&quot;, path);
&gt; + *         webkit_uri_scheme_request_finish_error (request, error);
&gt; + *         g_error_free (error);
&gt; + *         return;

GError *error;

error = g_error_new (g_quark_from_string(&quot;example-domain&quot;), 10, &quot;Invalid about:%s page.&quot;, path);
webkit_uri_scheme_request_finish_error (request, error);
....

Code examples are in C, so let&apos;s make this looks a bit more like C.

Also the GError it&apos;s not usually built that way, a predefined quark + error code is used, so you could do something like:

error = g_error_new (ABOUT_HANDLER_ERROR, ABOUT_HANDLER_ERROR_INVALID, &quot;Invalid about:%s page.&quot;, path);

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:69
&gt; +    if (test-&gt;m_error)
&gt; +        g_error_free(test-&gt;m_error);
&gt; +    test-&gt;m_error = g_error_copy(error);

Use GOwnPtr&lt;GError&gt; and also clear it always before starting a new load, otherwise a successful load after a failed one will have an invalid error set.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:109
&gt; +    if (m_error)
&gt; +        g_error_free(m_error);

You don&apos;t need this if you use a GOwnPtr

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.h:62
&gt; +    GError* m_error;

GOwnPtr&lt;GError&gt; m_error;

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:159
&gt; +        if (scheme == &quot;echo&quot;) {

use g_strcmp0 to compare strings

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:163
&gt; +            GError* error = g_error_new_literal(g_quark_from_string(errorDomain), errorCode, errorMessage);

Use GOwnPtr here too

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:168
&gt; +        } else
&gt; +            if (!handler.reply.isNull())

else if (!handler.reply.isNull()). This elase after a return looks weird, why don&apos;t you move this check before the error one? The error request should always be done without any reply, since we know it&apos;s going to fail.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:216
&gt; +    test-&gt;registerURISchemeHandler(&quot;error&quot;, kBarHTML, strlen(kBarHTML), &quot;text/html&quot;);

Don&apos;t pass a reply since we are going to fail.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:225
&gt; +    g_assert(test-&gt;m_error);
&gt; +    g_assert_cmpstr(g_quark_to_string(test-&gt;m_error-&gt;domain), ==, errorDomain);
&gt; +    g_assert_cmpint(test-&gt;m_error-&gt;code, ==, errorCode);
&gt; +    g_assert_cmpstr(test-&gt;m_error-&gt;message, ==, errorMessage);

Use g_assert_error() instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870794</commentid>
    <comment_count>6</comment_count>
      <attachid>196839</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-04-08 08:48:25 -0700</bug_when>
    <thetext>Comment on attachment 196839
Patch

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

&gt;&gt; Source/WebCore/platform/network/soup/ResourceErrorSoup.cpp:64
&gt;&gt; +            String::fromUTF8(error-&gt;message));
&gt; 
&gt; This leaves generioIOError unused, I think. We could rename it to genericGError, for example, and use the GError + failingURI to build a ResourceError. Martin, what do you think?

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871232</commentid>
    <comment_count>7</comment_count>
      <attachid>196962</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-08 15:31:52 -0700</bug_when>
    <thetext>Created attachment 196962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872654</commentid>
    <comment_count>8</comment_count>
      <attachid>196962</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-04-10 01:48:06 -0700</bug_when>
    <thetext>Comment on attachment 196962
Patch

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

Looks good to me. This is new API so you need another review from the API point of view, and also an owner should approve this.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:68
&gt; +    test-&gt;m_error.clear();
&gt; +    test-&gt;m_error.set(g_error_copy(error));

Don&apos;t need to clear before set.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:159
&gt; +    m_error.clear();

This should be done in all other load methods.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:158
&gt; +        if (equalIgnoringCase(scheme, &quot;error&quot;)) {

Where does this came from? Why not using g_str_equal or g_strcmp0?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:161
&gt; +            error.clear();

This is done automatically.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:225
&gt; +    g_assert_cmpstr(test-&gt;m_error.get()-&gt;message, ==, errorMessage);

I think you can do test-&gt;m_error-&gt;message directly.

&gt; Tools/MiniBrowser/gtk/main.c:223
&gt; +        GError *error = g_error_new(g_quark_from_string(&quot;minibrowser&quot;), 10, &quot;Invalid about:%s page.&quot;, path);

This 10 looks arbitrary. You could define a global quark and error code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872680</commentid>
    <comment_count>9</comment_count>
      <attachid>197231</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-04-10 02:52:27 -0700</bug_when>
    <thetext>Created attachment 197231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885069</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-05-06 09:42:47 -0700</bug_when>
    <thetext>API looks good to me. This just needs owner review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885237</commentid>
    <comment_count>11</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-05-06 12:11:31 -0700</bug_when>
    <thetext>Two GTK+ reviewers have approved the new API. Adding owners to CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885385</commentid>
    <comment_count>12</comment_count>
      <attachid>197231</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 14:19:53 -0700</bug_when>
    <thetext>Comment on attachment 197231
Patch

Clearing flags on attachment: 197231

Committed r149642: &lt;http://trac.webkit.org/changeset/149642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885386</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 14:19:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196628</attachid>
            <date>2013-04-05 07:01:12 -0700</date>
            <delta_ts>2013-04-08 01:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94316-20130405160059.patch</filename>
            <type>text/plain</type>
            <size>19870</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmU5NzYwOTA0MTNjZmU1
MjdjMmI5OTc0NjY0YmRlMDM2NWI2ZWJjNS4uYTRkNGMyMzk1NGQzZTI4MGYyYjI1ZjM1YTllNWVj
MDFkMDdlMWUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA0LTA1ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFk
ZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09Q
UyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgbmV3IG1ldGhvZCB3aWxsIGFsbG93IHRvIGZpbmlzaCBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
IHdpdGggYQorICAgICAgICBHRXJyb3IgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgV2ViS2l0
V2ViVmlldyB0aHJvdWdoIHRoZQorICAgICAgICAibG9hZC1mYWlsZWQiIHNpZ25hbC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAg
ICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOiBJbXBsZW1lbnQg
bmV3IG1ldGhvZCB1c2luZworICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
RmFpbFVSSVJlcXVlc3QoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0Lmg6IEFkZCBuZXcgbWV0aG9kIGhlYWRlci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDogSW5jbHVkZSB0aGUgdXNhZ2Ugb2YgdGhl
IG5ldworICAgICAgICBtZXRob2QgaW4gdGhlIGNvZGUgZXhhbXBsZSBhdCB3ZWJraXRfd2ViX2Nv
bnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSgpCisgICAgICAgIGRvY3VtZW50YXRpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogSW5j
bHVkZSB0aGUgbmV3CisgICAgICAgIG1ldGhvZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4
dFVSSVNjaGVtZSk6IE1vZGlmeSB0ZXN0IHRvIGNoZWNrIHRoZSBiZWhhdmlvciBvZiB0aGUgbmV3
CisgICAgICAgIG1ldGhvZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQpOiBJbXBsZW1lbnQg
bmV3IG1ldGhvZCB1c2luZworICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxV
UklSZXF1ZXN0KCkuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkuaDoKKyAgICAgICAgKFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KTogQWRkIG5l
dyBtZXRob2QgaGVhZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsVVJJUmVxdWVzdCk6IEltcGxlbWVudCBuZXcgbWV0aG9k
CisgICAgICAgIHNldHRpbmcgdGhlIGVycm9yIGFuZCBjb21wbGV0aW5nIHRoZSByZXF1ZXN0Lgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYlNvdXBSZXF1ZXN0TWFuYWdlcik6IEFkZCBuZXcgbWV0aG9kIGhlYWRlci4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOiBB
ZGQgbmV3IG1ldGhvZAorICAgICAgICBzaWduYXR1cmUuCisKIDIwMTMtMDQtMDQgIFN6ZSBIb3dl
IEtvaCAgPHN6ZWhvd2Uua29oQGdtYWlsLmNvbT4KIAogICAgICAgICBbUXRdIGRvY3M6IEZpeCBt
b2R1bGUgbmFtZSBmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggZTA5Y2U0YzkyYTRi
ZmJlNWE1ZDRjNTQ2ZDc1YTcwMWVjZjY1MmI4YS4uNjQ5NGVhYTc0MGZmYjM1ZDc4NTQ1YzgxOGYx
OTBhMjEyZTgxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNvdXAuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgpAQCAtMjEzLDMgKzIxNCwyNCBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdJbnB1dFN0cgogICAgIGdfaW5w
dXRfc3RyZWFtX3JlYWRfYXN5bmMoaW5wdXRTdHJlYW0sIHJlcXVlc3QtPnByaXYtPnJlYWRCdWZm
ZXIsIGdSZWFkQnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULCByZXF1ZXN0LT5wcml2LT5j
YW5jZWxsYWJsZS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0KSk7CiB9CisKKy8qKgorICogd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdAorICogQGVycm9yOiBhICNHRXJyb3IgdGhhdCB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBGaW5pc2ggYSAjV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCB3aXRoIGEgI0dFcnJvciB0aGF0IHlvdSBjb3VsZCBtb25pdG9yIHVzaW5nCisgKiB0aGUg
I1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkIHNpZ25hbC4KKyAqLwordm9pZCB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1
ZXN0LCBHRXJyb3IqIGVycm9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VS
SV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChlcnJvcik7
CisKKyAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnBy
aXY7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+
Y29kZSwgcHJpdi0+dXJpLmRhdGEoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkp
OworICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGYWlsVVJJUmVxdWVzdChyZXNvdXJj
ZUVycm9yLCBwcml2LT5yZXF1ZXN0SUQpOworCisgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlz
aFVSSVJlcXVlc3QocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuaAppbmRleCA5ZWFkNTA3MDk5YzBlZDFiMGMzNmZlZjA0MDMxN2NjMmNmNjYwZTMw
Li5mMGUxMTgyN2JhNzc1ZWYxNzY2ZDRjMWZlNGY4NzFlY2U2MzdlNjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5oCkBAIC03MSw2ICs3MSwxMCBAQCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zpbmlz
aCAgICAgICAoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVxdWVzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50NjQgICAgICAgICAgICAgICAgICBzdHJlYW1f
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgKm1pbWVfdHlwZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IgKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJl
cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAg
ICAgICAgICAgICAgICAqZXJyb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAK
aW5kZXggZWQyM2NkMDY3NTg5Mzg2ZGIyYTY0MzIzYTAzZDViOGM3YjY0ODA4NS4uMDZkMjNhYmE0
MDMwYzI4ZDJlNDg1YjUxNjEzYzlkM2EzNzZmZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTU2Niw4ICs1
NjYsOSBAQCBHTGlzdCogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zX2ZpbmlzaChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBHQXN5bmNSZQogICogI1dlYktpdFdlYkNvbnRleHQsIHRo
ZSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIHJlZ2lzdGVyZWQgd2lsbCBiZSBjYWxs
ZWQgd2l0aCBhCiAgKiAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC4KICAqIEl0IGlzIHBvc3NpYmxl
IHRvIGhhbmRsZSBVUkkgc2NoZW1lIHJlcXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieSBjYWxsaW5n
IGdfb2JqZWN0X3JlZigpIG9uIHRoZQotICogI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QgYW5kIGNh
bGxpbmcgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2goKSBsYXRlciB3aGVuIHRoZSBk
YXRhIG9mCi0gKiB0aGUgcmVxdWVzdCBpcyBhdmFpbGFibGUuCisgKiAjV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCBhbmQgY2FsbGluZyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaCgpIG9y
CisgKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcigpIGxhdGVyIHdoZW4g
dGhlIGRhdGEgb2YgdGhlIHJlcXVlc3QKKyAqIGlzIGF2YWlsYWJsZS4KICAqCiAgKiA8aW5mb3Jt
YWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KICAqIHN0YXRpYyB2b2lkCkBAIC01ODUsMTIgKzU4
NiwxOSBAQCBHTGlzdCogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zX2ZpbmlzaChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBHQXN5bmNSZQogICogICAgICAgICAvPCEtLSAtLT4qIENy
ZWF0ZSBhIEdJbnB1dFN0cmVhbSB3aXRoIHRoZSBjb250ZW50cyBvZiBtZW1vcnkgYWJvdXQgcGFn
ZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIHN0cmVhbV9sZW5ndGggKjwhLS0gLS0+LwogICogICAg
IH0gZWxzZSBpZiAoIWdfc3RyY21wMCAocGF0aCwgImFwcGxpY2F0aW9ucyIpKSB7CiAgKiAgICAg
ICAgIC88IS0tIC0tPiogQ3JlYXRlIGEgR0lucHV0U3RyZWFtIHdpdGggdGhlIGNvbnRlbnRzIG9m
IGFwcGxpY2F0aW9ucyBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gc3RyZWFtX2xl
bmd0aCAqPCEtLSAtLT4vCi0gKiAgICAgfSBlbHNlIHsKKyAqICAgICB9IGVsc2UgaWYgKCFnX3N0
cmNtcDAgKHBhdGgsICJleGFtcGxlIikpIHsKICAqICAgICAgICAgZ2NoYXIgKmNvbnRlbnRzOwog
ICoKLSAqICAgICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9wcmludGYgKCImbHQ7aHRtbCZndDsm
bHQ7Ym9keSZndDsmbHQ7cCZndDtJbnZhbGlkIGFib3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9i
b2R5Jmd0OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsKKyAqICAgICAgICAgY29udGVudHMgPSBnX3N0
cmR1cF9wcmludGYgKCImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZndDtFeGFtcGxlIGFi
b3V0IHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiKTsKICAqICAgICAg
ICAgc3RyZWFtX2xlbmd0aCA9IHN0cmxlbiAoY29udGVudHMpOwogICogICAgICAgICBzdHJlYW0g
PSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YSAoY29udGVudHMsIHN0cmVhbV9s
ZW5ndGgsIGdfZnJlZSk7CisgKiAgICAgfSBlbHNlIHsKKyAqICAgICAgICAgd2Via2l0X3VyaV9z
Y2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IgKHJlcXVlc3QsCisgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2Vycm9yX25ldyAoV0VCS0lUX05FVFdP
UktfRVJST1IsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJmx0O2h0bWwmZ3Q7Jmx0O2JvZHkmZ3Q7Jmx0
O3AmZ3Q7SW52YWxpZCBhYm91dDolcyBwYWdlJmx0Oy9wJmd0OyZsdDsvYm9keSZndDsmbHQ7L2h0
bWwmZ3Q7IiwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXRoKSk7CisgKiAgICAgICAgIHJldHVybjsKICAqICAgICB9CiAg
KiAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2ggKHJlcXVlc3QsIHN0cmVhbSwg
c3RyZWFtX2xlbmd0aCwgInRleHQvaHRtbCIpOwogICogICAgIGdfb2JqZWN0X3VucmVmIChzdHJl
YW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRl
MzAzNjViMjQ0MDlmYjJhMjljYS4uZGNhOWE1OGJmMjBjZGM3MDJkMDdiMGE2ODgwYjJjMmIxOTdk
YjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03OTIsNiArNzkyLDcgQEAgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF9wYXRoCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldwogd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gKK3dlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMTg1YzA2Y2ZlYjQ0NDkx
NjVjNjNiYmVkOGFjNDM2NzQyNjFmMzc1Ny4uMWY3MzhiZTViYzZiZmM0MjYxNmU3YjFjZDc4Mjlm
NTI1MWRkMTY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTE5LDI1ICsx
MTksMzEgQEAgY2xhc3MgVVJJU2NoZW1lVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3Qgewog
cHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVVJJU2NoZW1lVGVzdCk7CiAKKyAg
ICBlbnVtIFJlcGx5T3B0aW9ucyB7CisgICAgICAgIFN0YW5kYXJkLAorICAgICAgICBXaXRoUGF0
aCwKKyAgICAgICAgRXJyb3IKKyAgICB9OworCiAgICAgc3RydWN0IFVSSVNjaGVtZUhhbmRsZXIg
ewogICAgICAgICBVUklTY2hlbWVIYW5kbGVyKCkKICAgICAgICAgICAgIDogcmVwbHlMZW5ndGgo
MCkKLSAgICAgICAgICAgICwgcmVwbHlXaXRoUGF0aChmYWxzZSkKKyAgICAgICAgICAgICwgcmVw
bHlPcHRpb24oU3RhbmRhcmQpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFVSSVNj
aGVtZUhhbmRsZXIoY29uc3QgY2hhciogcmVwbHksIGludCByZXBseUxlbmd0aCwgY29uc3QgY2hh
ciogbWltZVR5cGUsIGJvb2wgcmVwbHlXaXRoUGF0aCA9IGZhbHNlKQorICAgICAgICBVUklTY2hl
bWVIYW5kbGVyKGNvbnN0IGNoYXIqIHJlcGx5LCBpbnQgcmVwbHlMZW5ndGgsIGNvbnN0IGNoYXIq
IG1pbWVUeXBlLCBSZXBseU9wdGlvbnMgcmVwbHlPcHRpb24gPSBTdGFuZGFyZCkKICAgICAgICAg
ICAgIDogcmVwbHkocmVwbHkpCiAgICAgICAgICAgICAsIHJlcGx5TGVuZ3RoKHJlcGx5TGVuZ3Ro
KQogICAgICAgICAgICAgLCBtaW1lVHlwZShtaW1lVHlwZSkKLSAgICAgICAgICAgICwgcmVwbHlX
aXRoUGF0aChyZXBseVdpdGhQYXRoKQorICAgICAgICAgICAgLCByZXBseU9wdGlvbihyZXBseU9w
dGlvbikKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgQ1N0cmluZyByZXBseTsKICAg
ICAgICAgaW50IHJlcGx5TGVuZ3RoOwogICAgICAgICBDU3RyaW5nIG1pbWVUeXBlOwotICAgICAg
ICBib29sIHJlcGx5V2l0aFBhdGg7CisgICAgICAgIFJlcGx5T3B0aW9ucyByZXBseU9wdGlvbjsK
ICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgdXJpU2NoZW1lUmVxdWVzdENhbGxiYWNrKFdlYktp
dFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMTU2LDE3
ICsxNjIsMjYgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX2hhbmRsZXJzTWFw
LmNvbnRhaW5zKHNjaGVtZSkpOwogICAgICAgICBjb25zdCBVUklTY2hlbWVIYW5kbGVyJiBoYW5k
bGVyID0gdGVzdC0+bV9oYW5kbGVyc01hcC5nZXQoc2NoZW1lKTsKIAotICAgICAgICBpZiAoaGFu
ZGxlci5yZXBseVdpdGhQYXRoKSB7CisgICAgICAgIHN3aXRjaCAoaGFuZGxlci5yZXBseU9wdGlv
bikgeworICAgICAgICBjYXNlIFN0YW5kYXJkOgorICAgICAgICAgICAgaWYgKCFoYW5kbGVyLnJl
cGx5LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGdfbWVtb3J5X2lucHV0X3N0cmVhbV9hZGRf
ZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0oaW5wdXRTdHJlYW0uZ2V0KCkpLCBoYW5kbGVyLnJl
cGx5LmRhdGEoKSwgaGFuZGxlci5yZXBseS5sZW5ndGgoKSwgMCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXaXRoUGF0aDogewogICAgICAgICAgICAgY2hhciogcmVwbHlIVE1M
ID0gZ19zdHJkdXBfcHJpbnRmKGhhbmRsZXIucmVwbHkuZGF0YSgpLCB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF9wYXRoKHJlcXVlc3QpKTsKICAgICAgICAgICAgIGdfbWVtb3J5X2lucHV0
X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0oaW5wdXRTdHJlYW0uZ2V0KCkp
LCByZXBseUhUTUwsIHN0cmxlbihyZXBseUhUTUwpLCBnX2ZyZWUpOwotICAgICAgICB9IGVsc2Ug
aWYgKCFoYW5kbGVyLnJlcGx5LmlzTnVsbCgpKQotICAgICAgICAgICAgZ19tZW1vcnlfaW5wdXRf
c3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbS5nZXQoKSks
IGhhbmRsZXIucmVwbHkuZGF0YSgpLCBoYW5kbGVyLnJlcGx5Lmxlbmd0aCgpLCAwKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRXJyb3I6CisgICAgICAgICAg
ICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBnX2Vycm9y
X25ldyhXRUJLSVRfTkVUV09SS19FUlJPUiwgMCwgIkVycm9yIikpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNo
KHJlcXVlc3QsIGlucHV0U3RyZWFtLmdldCgpLCBoYW5kbGVyLnJlcGx5TGVuZ3RoLCBoYW5kbGVy
Lm1pbWVUeXBlLmRhdGEoKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZUhh
bmRsZXIoY29uc3QgY2hhciogc2NoZW1lLCBjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVu
Z3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgYm9vbCByZXBseVdpdGhQYXRoID0gZmFsc2UpCisg
ICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hhciogc2NoZW1lLCBjb25z
dCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgUmVw
bHlPcHRpb25zIHJlcGx5T3B0aW9uID0gU3RhbmRhcmQpCiAgICAgewotICAgICAgICBtX2hhbmRs
ZXJzTWFwLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIFVSSVNjaGVtZUhhbmRsZXIocmVw
bHksIHJlcGx5TGVuZ3RoLCBtaW1lVHlwZSwgcmVwbHlXaXRoUGF0aCkpOworICAgICAgICBtX2hh
bmRsZXJzTWFwLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIFVSSVNjaGVtZUhhbmRsZXIo
cmVwbHksIHJlcGx5TGVuZ3RoLCBtaW1lVHlwZSwgcmVwbHlPcHRpb24pKTsKICAgICAgICAgd2Vi
a2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUod2Via2l0X3dlYl9jb250ZXh0X2dl
dF9kZWZhdWx0KCksIHNjaGVtZSwgdXJpU2NoZW1lUmVxdWVzdENhbGxiYWNrLCB0aGlzLCAwKTsK
ICAgICB9CiAKQEAgLTE4NCw3ICsxOTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVS
SVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcGludChtYWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrQmFySFRNTCkpOwogICAg
IGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGtCYXJIVE1MLCBtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSkpOwogCi0gICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVIYW5kbGVyKCJlY2hv
Iiwga0VjaG9IVE1MRm9ybWF0LCAtMSwgInRleHQvaHRtbCIsIHRydWUpOworICAgIHRlc3QtPnJl
Z2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZWNobyIsIGtFY2hvSFRNTEZvcm1hdCwgLTEsICJ0ZXh0
L2h0bWwiLCBVUklTY2hlbWVUZXN0OjpXaXRoUGF0aCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZWNo
bzpoZWxsbyB3b3JsZCIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAg
IEdPd25QdHI8Y2hhcj4gZWNob0hUTUwoZ19zdHJkdXBfcHJpbnRmKGtFY2hvSFRNTEZvcm1hdCwg
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0aCh0ZXN0LT5tX3VyaVNjaGVtZVJlcXVl
c3QuZ2V0KCkpKSk7CkBAIC0yMDUsNiArMjIwLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250
ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2
ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsK
ICAgICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rl
c3Q6OkxvYWRGYWlsZWQpKTsKKworICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigi
ZXJyb3IiLCBrQmFySFRNTCwgc3RybGVuKGtCYXJIVE1MKSwgInRleHQvaHRtbCIsIFVSSVNjaGVt
ZVRlc3Q6OkVycm9yKTsKKyAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKKyAgICB0ZXN0
LT5sb2FkVVJJKCJlcnJvcjplcnJvciIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tp
bmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdl
YkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAppbmRleCA3ZjJmZDMxYTJjNDk5M2NlY2ZjZTk5ZWZmMjA2Nzg5ZTZiNDcw
NjAyLi5jNWU2YzYwOTZmOWQyMjg0N2ZiYTFhYjM4OWJlZjE4NGZkODljNTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC0xMTYsNCArMTE2LDEzIEBAIHZvaWQgV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHk6OmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCkK
ICAgICBtX2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0aGlzLCByZXF1ZXN0SUQpOwog
fQogCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0X3QgcmVxdWVzdElEKQor
eworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvYWRGYWls
ZWQgPSB0cnVlOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxVUklSZXF1ZXN0KGVycm9yLCByZXF1ZXN0SUQp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCA3
ZWMzODNkODNlYzU0NjQxY2QyMDJjZmVmYjM1YmNjOGM4MzA1ZGQxLi5mNzhiOTY3ZWQ2MmNlMTlm
MGVlYzZlNDg5ZTk5NzVlNDg1YmQ4ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlVVJJUmVxdWVzdChjb25zdCBXZWJE
YXRhKiwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWlu
dDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShjb25z
dCBXZWJEYXRhKiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVVUklS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJpU3RyaW5nLCBXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBy
ZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcmVnaXN0ZXJlZFVSSVNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRV
UklTY2hlbWVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggNDFlODRkMzRmNDM2ODJkNjI5NWI1
OWViMTY5YjNiODBkMGRiNDM3ZC4uODBjNjE4ODhiYmMxOThlODRiYjY0MjFjOTMxZjljMmJlZDg0
ZmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTE2Myw2ICsxNjMsMjAgQEAgdm9pZCBXZWJTb3Vw
UmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmMKICAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwogfQog
Cit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBX
ZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fcmVxdWVzdE1hcC5nZXQocmVxdWVzdElE
KTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJl
c3VsdCA9IGRhdGEtPnJlbGVhc2VSZXN1bHQoKTsKKyAgICBBU1NFUlQocmVzdWx0LmdldCgpKTsK
KworICAgIEdFcnJvciogZ2Vycm9yID0gZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21f
c3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLCBlcnJvci5lcnJvckNvZGUoKSwg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGdlcnJvcik7CisgICAgZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7CisKKyAgICBtX3JlcXVl
c3RNYXAucmVtb3ZlKHJlcXVlc3RJRCk7Cit9CisKIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2Vy
OjpzZW5kKEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlKQogewogICAgIEdSZWZQdHI8V2ViS2l0U291cFJlcXVlc3RHZW5lcmljPiByZXF1ZXN0ID0g
YWRvcHRHUmVmKFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhnX2FzeW5jX3Jlc3VsdF9nZXRf
c291cmNlX29iamVjdChHX0FTWU5DX1JFU1VMVChyZXN1bHQpKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCmluZGV4
IDYzMTg1MzExZGZhYTJmZjQ5MDVhZDExZDZjZTJjMGI4NGJmOTVhOTIuLjA4Y2QzNDM0MWVkMTMw
NjM2OGRhYzg5YTM3YWU0ZDRmMTI3MTViYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTIyLDYgKzIyLDcg
QEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KQEAgLTUzLDYgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkSGFuZGxl
VVJJUmVxdWVzdChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QgY29udGVu
dExlbmd0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJiwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGRpZEZhaWxVUklSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogCiAgICAg
V2ViUHJvY2VzcyogbV9wcm9jZXNzOwogICAgIEdSZWZQdHI8R1B0ckFycmF5PiBtX3NjaGVtZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwYTM4NjRiMDQwNWVjYjY2YjUy
YWRlZjE5MjZmNjQ5MTE5NTJhZDE0Li5iMTU4ODA1NTIzNDQ4ZWY5YWYzZGZlZjU2MTllMDhkMzJi
M2YyMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0LDQgKzI0LDUg
QEAgbWVzc2FnZXMgLT4gV2ViU291cFJlcXVlc3RNYW5hZ2VyIHsKICAgICBSZWdpc3RlclVSSVNj
aGVtZShXVEY6OlN0cmluZyB1cmlTY2hlbWUpOwogICAgIERpZEhhbmRsZVVSSVJlcXVlc3QoQ29y
ZUlQQzo6RGF0YVJlZmVyZW5jZSByZXF1ZXN0RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwg
V1RGOjpTdHJpbmcgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgRGlkUmVjZWl2
ZVVSSVJlcXVlc3REYXRhKENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgcmVxdWVzdERhdGEsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRGlkRmFpbFVSSVJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgdWludDY0X3QgcmVxdWVzdElEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDk5YWRiMWZmYmM0NmE1Njg3YmQ0ZDg4
NDQzNmI1OGM0Njc1ZDhkLi42YjhkZGM5ZGI2M2UyNmMxMjM0ZWZkODJkZjZlYTAzMDRkZThiMWMw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTMtMDQtMDUgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
ZmluaXNoX2Vycm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NDMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGFib3V0VVJJU2NoZW1lUmVx
dWVzdENhbGxiYWNrKTogVXBkYXRlIE1pbmlCcm93c2VyIHRvIHVzZSB0aGUgbmV3CisgICAgICAg
IGZ1bmN0aW9uIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKCkuCisKIDIw
MTMtMDQtMDQgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAg
ICAgSW5kZW50YXRpb24gZml4IHRvIGdldCB3ZWJraXQtcGF0Y2ggd29ya2luZyBhZ2FpbiBhZnRl
ciByMTQ3NjI1CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAzN2M5MmMxNmRkNmU1MGMyNDIzYmRiMjky
MTk1ZjliY2MwZmZlYTk3Li5hNmI3MzU4YTZjZjg5N2NlNDQ1NDAzNmFiM2RkNTE1M2U0YTNjNGMy
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTIwOCwxOSArMjA4LDE4IEBAIGFib3V0VVJJU2NoZW1l
UmVxdWVzdENhbGxiYWNrKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3QsIGdwb2ludGVy
IHVzZXJEYXRhCiAgICAgZ2NoYXIgKmNvbnRlbnRzOwogCiAgICAgcGF0aCA9IHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgocmVxdWVzdCk7Ci0gICAgaWYgKCFnX3N0cmNtcDAocGF0
aCwgIm1pbmlicm93c2VyIikpCisgICAgaWYgKCFnX3N0cmNtcDAocGF0aCwgIm1pbmlicm93c2Vy
IikpIHsKICAgICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5Pjxo
MT5XZWJLaXRHVEsrIE1pbmlCcm93c2VyPC9oMT48cD5UaGUgV2ViS2l0MiB0ZXN0IGJyb3dzZXIg
b2YgdGhlIEdUSysgcG9ydC48L3A+PHA+V2ViS2l0IHZlcnNpb246ICVkLiVkLiVkPC9wPjwvYm9k
eT48L2h0bWw+IiwKICAgICAgICAgICAgIHdlYmtpdF9nZXRfbWFqb3JfdmVyc2lvbigpLAogICAg
ICAgICAgICAgd2Via2l0X2dldF9taW5vcl92ZXJzaW9uKCksCiAgICAgICAgICAgICB3ZWJraXRf
Z2V0X21pY3JvX3ZlcnNpb24oKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZW50cyA9IGdfc3Ry
ZHVwX3ByaW50ZigiPGh0bWw+PGJvZHk+PHA+SW52YWxpZCBhYm91dDolcyBwYWdlLjwvcD48L2Jv
ZHk+PC9odG1sPiIsIHBhdGgpOworICAgICAgICBzdHJlYW1MZW5ndGggPSBzdHJsZW4oY29udGVu
dHMpOworICAgICAgICBzdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0
YShjb250ZW50cywgc3RyZWFtTGVuZ3RoLCBnX2ZyZWUpOwogCi0gICAgc3RyZWFtTGVuZ3RoID0g
c3RybGVuKGNvbnRlbnRzKTsKLSAgICBzdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3
X2Zyb21fZGF0YShjb250ZW50cywgc3RyZWFtTGVuZ3RoLCBnX2ZyZWUpOwotCi0gICAgd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgc3RyZWFtLCBzdHJlYW1MZW5ndGgs
ICJ0ZXh0L2h0bWwiKTsKLSAgICBnX29iamVjdF91bnJlZihzdHJlYW0pOworICAgICAgICB3ZWJr
aXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChyZXF1ZXN0LCBzdHJlYW0sIHN0cmVhbUxlbmd0
aCwgInRleHQvaHRtbCIpOworICAgICAgICBnX29iamVjdF91bnJlZihzdHJlYW0pOworICAgIH0g
ZWxzZQorICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1
ZXN0LCBnX2Vycm9yX25ldyhXRUJLSVRfTkVUV09SS19FUlJPUiwgMCwgIjxodG1sPjxib2R5Pjxw
PkludmFsaWQgYWJvdXQ6JXMgcGFnZS48L3A+PC9ib2R5PjwvaHRtbD4iLCBwYXRoKSk7CiB9CiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196839</attachid>
            <date>2013-04-08 01:27:34 -0700</date>
            <delta_ts>2013-04-08 15:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94316-20130408102717.patch</filename>
            <type>text/plain</type>
            <size>23507</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjllYzBkZDk0MDEzODJj
MTYxZDdjZDZjNjA2ZGIyZDliZTY2NWUyZC4uYTlkYzlkNDNiMTJlNDYxMTY4OTEyNzRkOGQwYWZh
MzAyY2M5NGEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA0LTA3ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFk
ZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcik6IFVzZSBlcnJvciBkb21haW4gaW5zdGVhZCBvZiBhbHdheXMKKyAgICAgICAg
cmV0dXJuIGEgR19JT19FUlJPUiBpZiBpdCdzIG5vdCBhIHNvdXAgZXJyb3IuCisKIDIwMTMtMDQt
MDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlciBp
bWFnZXMgd2l0aCBsb3ctcXVhbGl0eSBzY2FsaW5nIHdoaWxlIEZyYW1lVmlldyBpcyBiZWluZyBy
ZXNpemVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGZlOTc2MDkwNDEzY2ZlNTI3YzJiOTk3NDY2NGJkZTAzNjVi
NmViYzUuLjE2OGI0MWI0ODdlNDJjOGYxMTIzOGUxYjE2YjE3YjliNjY5MDk3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMy0wNC0wNyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAg
PHJlZ29AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9maW5pc2hfZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBuZXcgbWV0aG9kIHdpbGwgYWxsb3cgdG8gZmluaXNoIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3Qgd2l0aCBhCisgICAgICAgIEdFcnJvciB0aGF0IHdpbGwgYmUgcGFzc2Vk
IHRvIHRoZSBXZWJLaXRXZWJWaWV3IHRocm91Z2ggdGhlCisgICAgICAgICJsb2FkLWZhaWxlZCIg
c2lnbmFsLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJv
cik6IEltcGxlbWVudCBuZXcgbWV0aG9kIHVzaW5nCisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaDogQWRkIG5ldyBtZXRob2QgaGVhZGVyLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOiBJbmNsdWRlIHRo
ZSB1c2FnZSBvZiB0aGUgbmV3CisgICAgICAgIG1ldGhvZCBpbiB0aGUgY29kZSBleGFtcGxlIGF0
IHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lKCkKKyAgICAgICAgZG9jdW1l
bnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0OiBJbmNsdWRlIHRoZSBuZXcKKyAgICAgICAgbWV0aG9kLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwOgorICAgICAgICAobG9h
ZEZhaWxlZENhbGxiYWNrKTogU2V0IG1fZXJyb3IgdG8gbW9uaXRvciBpdCBmcm9tIHRoZSB0ZXN0
cy4KKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6On5Mb2FkVHJhY2tpbmdUZXN0KTogRnJlZSBt
X2Vycm9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rl
c3QuaDogQWRkIG5ldyBtZW1iZXIgbV9lcnJvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4
dFVSSVNjaGVtZSk6IE1vZGlmeSB0ZXN0IHRvIGNoZWNrIHRoZSBiZWhhdmlvciBvZiB0aGUgbmV3
CisgICAgICAgIG1ldGhvZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQpOiBJbXBsZW1lbnQg
bmV3IG1ldGhvZCB1c2luZworICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxV
UklSZXF1ZXN0KCkuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkuaDoKKyAgICAgICAgKFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KTogQWRkIG5l
dyBtZXRob2QgaGVhZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU291
cFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsVVJJUmVxdWVzdCk6IEltcGxlbWVudCBuZXcgbWV0aG9k
CisgICAgICAgIHNldHRpbmcgdGhlIGVycm9yIGFuZCBjb21wbGV0aW5nIHRoZSByZXF1ZXN0Lgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAg
ICAgKFdlYlNvdXBSZXF1ZXN0TWFuYWdlcik6IEFkZCBuZXcgbWV0aG9kIGhlYWRlci4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOiBB
ZGQgbmV3IG1ldGhvZAorICAgICAgICBzaWduYXR1cmUuCisKIDIwMTMtMDQtMDQgIFN6ZSBIb3dl
IEtvaCAgPHN6ZWhvd2Uua29oQGdtYWlsLmNvbT4KIAogICAgICAgICBbUXRdIGRvY3M6IEZpeCBt
b2R1bGUgbmFtZSBmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IDMxY2M1YTY0OTZkYmZm
ODgwNjU4YzUxZWQ5NzZiYzc2ZDYzMDVkZGUuLmUwZGQ4NGYwMzMwZTUyNzAxYTgxYTJiZjQ1NWM3
ZDYwY2IyZDg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtNjAsNyArNjAsOCBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwg
R0Vycm9yKiBlcnJvciwgU291cAogICAgICAgICByZXR1cm4gdHJhbnNwb3J0RXJyb3IocmVxdWVz
dCwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KG1l
c3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBnZW5lcmlj
SU9FcnJvcihlcnJvciwgcmVxdWVzdCk7CisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdf
cXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGluZ1VSSShy
ZXF1ZXN0KSwKKyAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKFNv
dXBNZXNzYWdlKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBlMDljZTRjOTJh
NGJmYmU1YTVkNGM1NDZkNzVhNzAxZWNmNjUyYjhhLi40YzM2ZjVkNWQyNDdhMjJjYTU2OGJjOGRh
MDc3YmRkZmE5ODRlMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyU291cC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0yMTMsMyArMjE0LDI0IEBAIHZvaWQgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9m
aW5pc2goV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgR0lucHV0U3RyCiAgICAgZ19p
bnB1dF9zdHJlYW1fcmVhZF9hc3luYyhpbnB1dFN0cmVhbSwgcmVxdWVzdC0+cHJpdi0+cmVhZEJ1
ZmZlciwgZ1JlYWRCdWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFVTFQsIHJlcXVlc3QtPnByaXYt
PmNhbmNlbGxhYmxlLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVh
ZENhbGxiYWNrKSwgZ19vYmplY3RfcmVmKHJlcXVlc3QpKTsKIH0KKworLyoqCisgKiB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcjoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0CisgKiBAZXJyb3I6IGEgI0dFcnJvciB0aGF0IHdpbGwgYmUgcGFzc2Vk
IHRvIHRoZSAjV2ViS2l0V2ViVmlldworICoKKyAqIEZpbmlzaCBhICNXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0IHdpdGggYSAjR0Vycm9yIHRoYXQgeW91IGNvdWxkIG1vbml0b3IgdXNpbmcKKyAqIHRo
ZSAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgc2lnbmFsLgorICovCit2b2lkIHdlYmtpdF91
cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlc3QsIEdFcnJvciogZXJyb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
VVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGVycm9y
KTsKKworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+
cHJpdjsKKworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHByaXYtPnVyaS5kYXRhKCks
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBwcml2LT53ZWJSZXF1ZXN0
TWFuYWdlci0+ZGlkRmFpbFVSSVJlcXVlc3QocmVzb3VyY2VFcnJvciwgcHJpdi0+cmVxdWVzdElE
KTsKKworICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hVUklSZXF1ZXN0KHByaXYtPndlYkNv
bnRleHQsIHByaXYtPnJlcXVlc3RJRCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKaW5kZXggOWVhZDUw
NzA5OWMwZWQxYjBjMzZmZWYwNDAzMTdjYzJjZjY2MGUzMC4uZjBlMTE4MjdiYTc3NWVmMTc2NmQ0
YzFmZTRmODcxZWNlNjM3ZTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaApAQCAtNzEsNiArNzEsMTAg
QEAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2ggICAgICAgKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QgKnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2ludDY0ICAgICAgICAgICAgICAgICAgc3RyZWFtX2xlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICptaW1lX3R5
cGUpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNo
X2Vycm9yIChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgKmVycm9yKTsK
KwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGVkMjNjZDA2NzU4OTM4NmRi
MmE2NDMyM2EwM2Q1YjhjN2I2NDgwODUuLmJkOTdmMjZlNmI3MzdhMTg0ZWIyNDgxMTFlMWQ3MjNk
OGQ3NGQ2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01NjYsOCArNTY2LDkgQEAgR0xpc3QqIHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2goV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwg
R0FzeW5jUmUKICAqICNXZWJLaXRXZWJDb250ZXh0LCB0aGUgI1dlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayByZWdpc3RlcmVkIHdpbGwgYmUgY2FsbGVkIHdpdGggYQogICogI1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuCiAgKiBJdCBpcyBwb3NzaWJsZSB0byBoYW5kbGUgVVJJIHNjaGVtZSBy
ZXF1ZXN0cyBhc3luY2hyb25vdXNseSwgYnkgY2FsbGluZyBnX29iamVjdF9yZWYoKSBvbiB0aGUK
LSAqICNXZWJLaXRVUklTY2hlbWVSZXF1ZXN0IGFuZCBjYWxsaW5nIHdlYmtpdF91cmlfc2NoZW1l
X3JlcXVlc3RfZmluaXNoKCkgbGF0ZXIgd2hlbiB0aGUgZGF0YSBvZgotICogdGhlIHJlcXVlc3Qg
aXMgYXZhaWxhYmxlLgorICogI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QgYW5kIGNhbGxpbmcgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2goKSBsYXRlcgorICogd2hlbiB0aGUgZGF0YSBv
ZiB0aGUgcmVxdWVzdCBpcyBhdmFpbGFibGUgb3IKKyAqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZmluaXNoX2Vycm9yKCkgaW4gY2FzZSBvZiBlcnJvci4KICAqCiAgKiA8aW5mb3JtYWxleGFt
cGxlPjxwcm9ncmFtbGlzdGluZz4KICAqIHN0YXRpYyB2b2lkCkBAIC01ODUsMTIgKzU4NiwxNyBA
QCBHTGlzdCogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zX2ZpbmlzaChXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0LCBHQXN5bmNSZQogICogICAgICAgICAvPCEtLSAtLT4qIENyZWF0ZSBh
IEdJbnB1dFN0cmVhbSB3aXRoIHRoZSBjb250ZW50cyBvZiBtZW1vcnkgYWJvdXQgcGFnZSwgYW5k
IHNldCBpdHMgbGVuZ3RoIHRvIHN0cmVhbV9sZW5ndGggKjwhLS0gLS0+LwogICogICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMCAocGF0aCwgImFwcGxpY2F0aW9ucyIpKSB7CiAgKiAgICAgICAgIC88
IS0tIC0tPiogQ3JlYXRlIGEgR0lucHV0U3RyZWFtIHdpdGggdGhlIGNvbnRlbnRzIG9mIGFwcGxp
Y2F0aW9ucyBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gc3RyZWFtX2xlbmd0aCAq
PCEtLSAtLT4vCi0gKiAgICAgfSBlbHNlIHsKKyAqICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAg
KHBhdGgsICJleGFtcGxlIikpIHsKICAqICAgICAgICAgZ2NoYXIgKmNvbnRlbnRzOwogICoKLSAq
ICAgICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9wcmludGYgKCImbHQ7aHRtbCZndDsmbHQ7Ym9k
eSZndDsmbHQ7cCZndDtJbnZhbGlkIGFib3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0
OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsKKyAqICAgICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9w
cmludGYgKCImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZndDtFeGFtcGxlIGFib3V0IHBh
Z2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiKTsKICAqICAgICAgICAgc3Ry
ZWFtX2xlbmd0aCA9IHN0cmxlbiAoY29udGVudHMpOwogICogICAgICAgICBzdHJlYW0gPSBnX21l
bW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YSAoY29udGVudHMsIHN0cmVhbV9sZW5ndGgs
IGdfZnJlZSk7CisgKiAgICAgfSBlbHNlIHsKKyAqICAgICAgICAgR0Vycm9yICplcnJvciA9IGdf
ZXJyb3JfbmV3IChnX3F1YXJrX2Zyb21fc3RyaW5nKCJleGFtcGxlLWRvbWFpbiIpLCAxMCwgIklu
dmFsaWQgYWJvdXQ6JXMgcGFnZS4iLCBwYXRoKTsKKyAqICAgICAgICAgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9maW5pc2hfZXJyb3IgKHJlcXVlc3QsIGVycm9yKTsKKyAqICAgICAgICAgZ19l
cnJvcl9mcmVlIChlcnJvcik7CisgKiAgICAgICAgIHJldHVybjsKICAqICAgICB9CiAgKiAgICAg
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2ggKHJlcXVlc3QsIHN0cmVhbSwgc3RyZWFt
X2xlbmd0aCwgInRleHQvaHRtbCIpOwogICogICAgIGdfb2JqZWN0X3VucmVmIChzdHJlYW0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRlMzAzNjVi
MjQ0MDlmYjJhMjljYS4uZGNhOWE1OGJmMjBjZGM3MDJkMDdiMGE2ODgwYjJjMmIxOTdkYjU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03OTIsNiArNzkyLDcgQEAgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9w
YXRoCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldwogd2Via2l0X3VyaV9z
Y2hlbWVfcmVxdWVzdF9maW5pc2gKK3dlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vy
cm9yCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2Fk
VHJhY2tpbmdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L0xvYWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4IGI5MDQxMTFmNDUyNGRlYTQ0ZmFmMjY1ZDM0MTli
NzM1ODgzNTFiMGYuLmRlMjFmMGUzZWIzNjVmOTM4ZDJiODc1ODY3NzZmODdiYmU4Y2U2MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFj
a2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC02NCw2ICs2NCwxMCBAQCBzdGF0aWMgdm9pZCBsb2Fk
RmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxv
YWRFdmVudAogewogICAgIHRlc3QtPm1fbG9hZEZhaWxlZCA9IHRydWU7CiAKKyAgICBpZiAodGVz
dC0+bV9lcnJvcikKKyAgICAgICAgZ19lcnJvcl9mcmVlKHRlc3QtPm1fZXJyb3IpOworICAgIHRl
c3QtPm1fZXJyb3IgPSBnX2Vycm9yX2NvcHkoZXJyb3IpOworCiAgICAgc3dpdGNoIChsb2FkRXZl
bnQpIHsKICAgICBjYXNlIFdFQktJVF9MT0FEX1NUQVJURUQ6CiAgICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CkBAIC0xMDEsNiArMTA1LDggQEAg
TG9hZFRyYWNraW5nVGVzdDo6TG9hZFRyYWNraW5nVGVzdCgpCiBMb2FkVHJhY2tpbmdUZXN0Ojp+
TG9hZFRyYWNraW5nVGVzdCgpCiB7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7
CisgICAgaWYgKG1fZXJyb3IpCisgICAgICAgIGdfZXJyb3JfZnJlZShtX2Vycm9yKTsKIH0KIAog
dm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVz
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5n
VGVzdC5oCmluZGV4IDU2MmY3ZjAzOGZhMzBjNGQ3NmFlM2RjYTM5OTA3MTM0MzkzNDBiNzIuLjY5
YzI0MmIyODA0NDQ0OTQ0NDY4YTQ0NDg1NmNmNWY3MjhkOGU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgYm9vbCBtX3J1bkxvYWRV
bnRpbENvbXBsZXRpb247CiAgICAgYm9vbCBtX2xvYWRGYWlsZWQ7CisgICAgR0Vycm9yKiBtX2Vy
cm9yOwogICAgIFZlY3RvcjxMb2FkRXZlbnRzPiBtX2xvYWRFdmVudHM7CiAgICAgZmxvYXQgbV9l
c3RpbWF0ZWRQcm9ncmVzczsKICAgICBDU3RyaW5nIG1fcmVkaXJlY3RVUkk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMTg1YzA2Y2ZlYjQ0NDkxNjVjNjNiYmVkOGFjNDM2NzQy
NjFmMzc1Ny4uYjRiNmMyMWU4MzM0OTNjMTJlNzc2ZWQxZDJiOTRkMGQ2MTFlMDFhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTE0LDYgKzExNCw5IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQbHVnaW5zVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIAogc3RhdGljIGNvbnN0IGNoYXIqIGtCYXJIVE1MID0gIjxodG1sPjxib2R5PkJhcjwvYm9k
eT48L2h0bWw+IjsKIHN0YXRpYyBjb25zdCBjaGFyKiBrRWNob0hUTUxGb3JtYXQgPSAiPGh0bWw+
PGJvZHk+JXM8L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhciogZXJyb3JEb21haW4g
PSAidGVzdCI7CitzdGF0aWMgY29uc3QgaW50IGVycm9yQ29kZSA9IDEwOworc3RhdGljIGNvbnN0
IGNoYXIqIGVycm9yTWVzc2FnZSA9ICJFcnJvciBtZXNzYWdlLiI7CiAKIGNsYXNzIFVSSVNjaGVt
ZVRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKQEAgLTEyMiwyMiArMTI1
LDE5IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgVVJJU2NoZW1lSGFuZGxlciB7CiAgICAgICAgIFVS
SVNjaGVtZUhhbmRsZXIoKQogICAgICAgICAgICAgOiByZXBseUxlbmd0aCgwKQotICAgICAgICAg
ICAgLCByZXBseVdpdGhQYXRoKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBVUklTY2hlbWVIYW5kbGVyKGNvbnN0IGNoYXIqIHJlcGx5LCBpbnQgcmVwbHlMZW5ndGgsIGNv
bnN0IGNoYXIqIG1pbWVUeXBlLCBib29sIHJlcGx5V2l0aFBhdGggPSBmYWxzZSkKKyAgICAgICAg
VVJJU2NoZW1lSGFuZGxlcihjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25z
dCBjaGFyKiBtaW1lVHlwZSkKICAgICAgICAgICAgIDogcmVwbHkocmVwbHkpCiAgICAgICAgICAg
ICAsIHJlcGx5TGVuZ3RoKHJlcGx5TGVuZ3RoKQogICAgICAgICAgICAgLCBtaW1lVHlwZShtaW1l
VHlwZSkKLSAgICAgICAgICAgICwgcmVwbHlXaXRoUGF0aChyZXBseVdpdGhQYXRoKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAogICAgICAgICBDU3RyaW5nIHJlcGx5OwogICAgICAgICBpbnQgcmVw
bHlMZW5ndGg7CiAgICAgICAgIENTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIGJvb2wgcmVwbHlX
aXRoUGF0aDsKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgdXJpU2NoZW1lUmVxdWVzdENhbGxi
YWNrKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIGdwb2ludGVyIHVzZXJEYXRhKQpA
QCAtMTU2LDE3ICsxNTYsMjQgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX2hh
bmRsZXJzTWFwLmNvbnRhaW5zKHNjaGVtZSkpOwogICAgICAgICBjb25zdCBVUklTY2hlbWVIYW5k
bGVyJiBoYW5kbGVyID0gdGVzdC0+bV9oYW5kbGVyc01hcC5nZXQoc2NoZW1lKTsKIAotICAgICAg
ICBpZiAoaGFuZGxlci5yZXBseVdpdGhQYXRoKSB7CisgICAgICAgIGlmIChzY2hlbWUgPT0gImVj
aG8iKSB7CiAgICAgICAgICAgICBjaGFyKiByZXBseUhUTUwgPSBnX3N0cmR1cF9wcmludGYoaGFu
ZGxlci5yZXBseS5kYXRhKCksIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgocmVx
dWVzdCkpOwogICAgICAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVN
T1JZX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbS5nZXQoKSksIHJlcGx5SFRNTCwgc3RybGVuKHJl
cGx5SFRNTCksIGdfZnJlZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWhhbmRsZXIucmVwbHkuaXNO
dWxsKCkpCi0gICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEoR19NRU1P
UllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwgaGFuZGxlci5yZXBseS5kYXRhKCks
IGhhbmRsZXIucmVwbHkubGVuZ3RoKCksIDApOworICAgICAgICB9IGVsc2UgaWYgKHNjaGVtZSA9
PSAiZXJyb3IiKSB7CisgICAgICAgICAgICBHRXJyb3IqIGVycm9yID0gZ19lcnJvcl9uZXdfbGl0
ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBlcnJvck1l
c3NhZ2UpOworICAgICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJy
b3IocmVxdWVzdCwgZXJyb3IpOworICAgICAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpZiAoIWhhbmRs
ZXIucmVwbHkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFt
X2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbS5nZXQoKSksIGhhbmRs
ZXIucmVwbHkuZGF0YSgpLCBoYW5kbGVyLnJlcGx5Lmxlbmd0aCgpLCAwKTsKKwogICAgICAgICB3
ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChyZXF1ZXN0LCBpbnB1dFN0cmVhbS5nZXQo
KSwgaGFuZGxlci5yZXBseUxlbmd0aCwgaGFuZGxlci5taW1lVHlwZS5kYXRhKCkpOwogICAgIH0K
IAotICAgIHZvaWQgcmVnaXN0ZXJVUklTY2hlbWVIYW5kbGVyKGNvbnN0IGNoYXIqIHNjaGVtZSwg
Y29uc3QgY2hhciogcmVwbHksIGludCByZXBseUxlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUs
IGJvb2wgcmVwbHlXaXRoUGF0aCA9IGZhbHNlKQorICAgIHZvaWQgcmVnaXN0ZXJVUklTY2hlbWVI
YW5kbGVyKGNvbnN0IGNoYXIqIHNjaGVtZSwgY29uc3QgY2hhciogcmVwbHksIGludCByZXBseUxl
bmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpCiAgICAgewotICAgICAgICBtX2hhbmRsZXJzTWFw
LnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIFVSSVNjaGVtZUhhbmRsZXIocmVwbHksIHJl
cGx5TGVuZ3RoLCBtaW1lVHlwZSwgcmVwbHlXaXRoUGF0aCkpOworICAgICAgICBtX2hhbmRsZXJz
TWFwLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIFVSSVNjaGVtZUhhbmRsZXIocmVwbHks
IHJlcGx5TGVuZ3RoLCBtaW1lVHlwZSkpOwogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfcmVn
aXN0ZXJfdXJpX3NjaGVtZSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgc2NoZW1l
LCB1cmlTY2hlbWVSZXF1ZXN0Q2FsbGJhY2ssIHRoaXMsIDApOwogICAgIH0KIApAQCAtMTg0LDcg
KzE5MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJj
ZURhdGFTaXplLCA9PSwgc3RybGVuKGtCYXJIVE1MKSk7CiAgICAgZ19hc3NlcnQoIXN0cm5jbXAo
bWFpblJlc291cmNlRGF0YSwga0JhckhUTUwsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CiAKLSAg
ICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVjaG8iLCBrRWNob0hUTUxGb3JtYXQs
IC0xLCAidGV4dC9odG1sIiwgdHJ1ZSk7CisgICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hlbWVIYW5k
bGVyKCJlY2hvIiwga0VjaG9IVE1MRm9ybWF0LCAtMSwgInRleHQvaHRtbCIpOwogICAgIHRlc3Qt
PmxvYWRVUkkoImVjaG86aGVsbG8gd29ybGQiKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKICAgICBHT3duUHRyPGNoYXI+IGVjaG9IVE1MKGdfc3RyZHVwX3ByaW50ZihrRWNo
b0hUTUxGb3JtYXQsIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgodGVzdC0+bV91
cmlTY2hlbWVSZXF1ZXN0LmdldCgpKSkpOwpAQCAtMjA1LDYgKzIxMiwxNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0KCF0
ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxM
b2FkRmFpbGVkKSk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhM
b2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKSk7CisKKyAgICB0ZXN0LT5yZWdpc3RlclVSSVNj
aGVtZUhhbmRsZXIoImVycm9yIiwga0JhckhUTUwsIHN0cmxlbihrQmFySFRNTCksICJ0ZXh0L2h0
bWwiKTsKKyAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKKyAgICB0ZXN0LT5sb2FkVVJJ
KCJlcnJvcjplcnJvciIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQ
cm92aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWlsZWQp
OworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOworICAgIGdfYXNzZXJ0X2NtcHN0cihnX3F1
YXJrX3RvX3N0cmluZyh0ZXN0LT5tX2Vycm9yLT5kb21haW4pLCA9PSwgZXJyb3JEb21haW4pOwor
ICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2Vycm9yLT5jb2RlLCA9PSwgZXJyb3JDb2RlKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwgPT0sIGVycm9yTWVz
c2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0U3BlbGxDaGVja2VyKFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggN2YyZmQz
MWEyYzQ5OTNjZWNmY2U5OWVmZjIwNjc4OWU2YjQ3MDYwMi4uYzVlNmM2MDk2ZjlkMjI4NDdmYmEx
YWIzODliZWYxODRmZDg5YzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTE2LDQg
KzExNiwxMyBAQCB2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVG9Mb2Fk
VVJJUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgbV9jbGllbnQuZGlkRmFpbFRvTG9h
ZFVSSVJlcXVlc3QodGhpcywgcmVxdWVzdElEKTsKIH0KIAordm9pZCBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eTo6ZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkRmFpbGVkID0gdHJ1ZTsKKyAgICBjb250ZXh0KCkt
PnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpEaWRG
YWlsVVJJUmVxdWVzdChlcnJvciwgcmVxdWVzdElEKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXggN2VjMzgzZDgzZWM1NDY0MWNkMjAyY2ZlZmIz
NWJjYzhjODMwNWRkMS4uZjc4Yjk2N2VkNjJjZTE5ZjBlZWM2ZTQ4OWU5OTc1ZTQ4NWJkOGQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZEhhbmRsZVVSSVJlcXVlc3QoY29uc3QgV2ViRGF0YSosIHVpbnQ2NF90IGNvbnRlbnRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoY29uc3QgV2ViRGF0YSosIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlVVJJUmVxdWVzdChjb25zdCBTdHJpbmcmIHVyaVN0
cmluZywgV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGRpZEZh
aWxVUklSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCB1aW50NjRfdCByZXF1
ZXN0SUQpOwogCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRVUklTY2hlbWVz
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkVVJJU2NoZW1lczsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIu
Y3BwCmluZGV4IDQxZTg0ZDM0ZjQzNjgyZDYyOTViNTllYjE2OWIzYjgwZDBkYjQzN2QuLmY5M2M1
OWNjN2VjZGMzNGJjNWI5ZTU0ZmEyOTkxZWMwOThlNzMwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCkBA
IC0xNjMsNiArMTYzLDIyIEBAIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZl
VVJJUmVxdWVzdERhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jCiAgICAgICAgIG1fcmVx
dWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKIH0KIAordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXI6OmRpZEZhaWxVUklSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCB1aW50NjRfdCByZXF1ZXN0SUQpCit7CisgICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEqIGRh
dGEgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7CisgICAgQVNTRVJUKGRhdGEpOworICAg
IEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSBkYXRhLT5yZWxlYXNlUmVzdWx0
KCk7CisgICAgQVNTRVJUKHJlc3VsdC5nZXQoKSk7CisKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1
bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksCisgICAgICAgIGdfZXJyb3JfbmV3X2xpdGVyYWwo
Z19xdWFya19mcm9tX3N0cmluZyhlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAg
ICAgICAgIGVycm9yLmVycm9yQ29kZSgpLAorICAgICAgICAgICAgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2Nv
bXBsZXRlKHJlc3VsdC5nZXQoKSk7CisKKyAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJ
RCk7Cit9CisKIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpzZW5kKEdTaW1wbGVBc3luY1Jl
c3VsdCogcmVzdWx0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlKQogewogICAgIEdSZWZQdHI8
V2ViS2l0U291cFJlcXVlc3RHZW5lcmljPiByZXF1ZXN0ID0gYWRvcHRHUmVmKFdFQktJVF9TT1VQ
X1JFUVVFU1RfR0VORVJJQyhnX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX29iamVjdChHX0FTWU5D
X1JFU1VMVChyZXN1bHQpKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCmluZGV4IDYzMTg1MzExZGZhYTJmZjQ5MDVh
ZDExZDZjZTJjMGI4NGJmOTVhOTIuLjA4Y2QzNDM0MWVkMTMwNjM2OGRhYzg5YTM3YWU0ZDRmMTI3
MTViYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3Vw
UmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTUzLDYgKzU0
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkSGFuZGxlVVJJUmVxdWVzdChjb25zdCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVVUklS
ZXF1ZXN0RGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QgcmVxdWVz
dElEKTsKKyAgICB2b2lkIGRpZEZhaWxVUklSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogCiAgICAgV2ViUHJvY2VzcyogbV9wcm9jZXNz
OwogICAgIEdSZWZQdHI8R1B0ckFycmF5PiBtX3NjaGVtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCAwYTM4NjRiMDQwNWVjYjY2YjUyYWRlZjE5MjZmNjQ5MTE5NTJhZDE0
Li5iMTU4ODA1NTIzNDQ4ZWY5YWYzZGZlZjU2MTllMDhkMzJiM2YyMGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0LDQgKzI0LDUgQEAgbWVzc2FnZXMgLT4gV2ViU291
cFJlcXVlc3RNYW5hZ2VyIHsKICAgICBSZWdpc3RlclVSSVNjaGVtZShXVEY6OlN0cmluZyB1cmlT
Y2hlbWUpOwogICAgIERpZEhhbmRsZVVSSVJlcXVlc3QoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBy
ZXF1ZXN0RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgV1RGOjpTdHJpbmcgbWltZVR5cGUs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgRGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKENvcmVJ
UEM6OkRhdGFSZWZlcmVuY2UgcmVxdWVzdERhdGEsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisgICAg
RGlkRmFpbFVSSVJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3Qg
cmVxdWVzdElEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxZDk5YWRiMWZmYmM0NmE1Njg3YmQ0ZDg4NDQzNmI1OGM0Njc1ZDhkLi5jMjc1
M2NjNjhhZjA2ODBjYTk5NTZlOTYzOTI4NDAwM2Q3NjAyMjhhIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDQt
MDcgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L21haW4uYzoKKyAgICAgICAgKGFib3V0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrKTogVXBkYXRl
IE1pbmlCcm93c2VyIHRvIHVzZSB0aGUgbmV3CisgICAgICAgIGZ1bmN0aW9uIHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKCkuCisKIDIwMTMtMDQtMDQgIFBpZXJyZSBSb3Nz
aSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAgICAgSW5kZW50YXRpb24gZml4IHRv
IGdldCB3ZWJraXQtcGF0Y2ggd29ya2luZyBhZ2FpbiBhZnRlciByMTQ3NjI1CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwppbmRleCAzN2M5MmMxNmRkNmU1MGMyNDIzYmRiMjkyMTk1ZjliY2MwZmZlYTk3Li5mYTYy
ZTRlZDEyNmUyMDJhMDk3NjcwYzUzYzViZDA4YzE2ZmUxNTE5IDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMK
QEAgLTIwNiwyMSArMjA2LDI0IEBAIGFib3V0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrKFdlYktp
dFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3QsIGdwb2ludGVyIHVzZXJEYXRhCiAgICAgZ3NpemUg
c3RyZWFtTGVuZ3RoOwogICAgIGNvbnN0IGdjaGFyICpwYXRoOwogICAgIGdjaGFyICpjb250ZW50
czsKKyAgICBHRXJyb3IgKmVycm9yOwogCiAgICAgcGF0aCA9IHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZ2V0X3BhdGgocmVxdWVzdCk7Ci0gICAgaWYgKCFnX3N0cmNtcDAocGF0aCwgIm1pbmli
cm93c2VyIikpCisgICAgaWYgKCFnX3N0cmNtcDAocGF0aCwgIm1pbmlicm93c2VyIikpIHsKICAg
ICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PjxoMT5XZWJLaXRH
VEsrIE1pbmlCcm93c2VyPC9oMT48cD5UaGUgV2ViS2l0MiB0ZXN0IGJyb3dzZXIgb2YgdGhlIEdU
SysgcG9ydC48L3A+PHA+V2ViS2l0IHZlcnNpb246ICVkLiVkLiVkPC9wPjwvYm9keT48L2h0bWw+
IiwKICAgICAgICAgICAgIHdlYmtpdF9nZXRfbWFqb3JfdmVyc2lvbigpLAogICAgICAgICAgICAg
d2Via2l0X2dldF9taW5vcl92ZXJzaW9uKCksCiAgICAgICAgICAgICB3ZWJraXRfZ2V0X21pY3Jv
X3ZlcnNpb24oKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZW50cyA9IGdfc3RyZHVwX3ByaW50
ZigiPGh0bWw+PGJvZHk+PHA+SW52YWxpZCBhYm91dDolcyBwYWdlLjwvcD48L2JvZHk+PC9odG1s
PiIsIHBhdGgpOwotCi0gICAgc3RyZWFtTGVuZ3RoID0gc3RybGVuKGNvbnRlbnRzKTsKLSAgICBz
dHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShjb250ZW50cywgc3Ry
ZWFtTGVuZ3RoLCBnX2ZyZWUpOwotCi0gICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5p
c2gocmVxdWVzdCwgc3RyZWFtLCBzdHJlYW1MZW5ndGgsICJ0ZXh0L2h0bWwiKTsKLSAgICBnX29i
amVjdF91bnJlZihzdHJlYW0pOworICAgICAgICBzdHJlYW1MZW5ndGggPSBzdHJsZW4oY29udGVu
dHMpOworICAgICAgICBzdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0
YShjb250ZW50cywgc3RyZWFtTGVuZ3RoLCBnX2ZyZWUpOworCisgICAgICAgIHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIHN0cmVhbSwgc3RyZWFtTGVuZ3RoLCAidGV4
dC9odG1sIik7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHN0cmVhbSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgR0Vycm9yICplcnJvciA9IGdfZXJyb3JfbmV3KGdfcXVhcmtfZnJvbV9zdHJpbmco
Im1pbmlicm93c2VyIiksIDEwLCAiSW52YWxpZCBhYm91dDolcyBwYWdlLiIsIHBhdGgpOworICAg
ICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJv
cik7CisgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgfQogfQogCiBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196962</attachid>
            <date>2013-04-08 15:31:52 -0700</date>
            <delta_ts>2013-04-10 02:52:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94316-20130409003134.patch</filename>
            <type>text/plain</type>
            <size>26416</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZmZDliODBlNDJlM2Mw
ZjZiYTZmMGU1M2VjYzJiNzY1M2ZjNGI1Ni4uOTJhMmMyYTFmYzRhMmIwODkxZGNiMDI4NzdmODU5
NzdlZTJjNjM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA0LTA4ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFk
ZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFJlc291cmNlRXJyb3IpOiBSZW5hbWUgZ2VuZXJp
Y0lPRXJyb3IoKSB0byBnZW5lcmljR0Vycm9yKCkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcik6IFVzZSBnZW5lcmNpY0dFcnJvcigpIGluc3RlYWQgb2YKKyAgICAg
ICAgZ2VuZXJpY0lPRXJyb3IoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Omdl
bmVyaWNHRXJyb3IpOiBVc2UgZXJyb3IgZG9tYWluIGluc3RlYWQgb2YKKyAgICAgICAgYWx3YXlz
IHJldHVybiBhIEdfSU9fRVJST1IuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHA6IFVzZSBnZW5lcmljR0Vycm9yKCkKKyAgICAgICAgaW5zdGVh
ZCBvZiBnZW5lcmljSU9FcnJvcigpLgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RTa2lwQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKwogMjAxMy0wNC0wNyAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IHRoZSBhbmRyb2lkIGNvZGUgZnJvbSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjhjZmM2YjUyODkx
MDcxY2Y1ZDkwZDRkZTI5NzQ0YjdjZjczZDZlNi4uMDAxM2I1YjVhMzc2ZGRkZTA1ZjcyMGUyMGVk
OTI0ODQxZDAwOWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTA0LTA4ICBN
YW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyBtZXRob2Qgd2lsbCBh
bGxvdyB0byBmaW5pc2ggV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCB3aXRoIGEKKyAgICAgICAgR0Vy
cm9yIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIFdlYktpdFdlYlZpZXcgdGhyb3VnaCB0aGUK
KyAgICAgICAgImxvYWQtZmFpbGVkIiBzaWduYWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKTogSW1wbGVtZW50IG5ldyBtZXRob2QgdXNpbmcKKyAg
ICAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZEZhaWxVUklSZXF1ZXN0KCkuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oOiBBZGQg
bmV3IG1ldGhvZCBoZWFkZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6IEluY2x1ZGUgdGhlIHVzYWdlIG9mIHRoZSBuZXcKKyAgICAgICAgbWV0aG9k
IGluIHRoZSBjb2RlIGV4YW1wbGUgYXQgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9z
Y2hlbWUoKQorICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEluY2x1ZGUgdGhlIG5ldworICAgICAg
ICBtZXRob2QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5n
VGVzdC5jcHA6CisgICAgICAgIChsb2FkRmFpbGVkQ2FsbGJhY2spOiBTZXQgbV9lcnJvciB0byBt
b25pdG9yIGl0IGZyb20gdGhlIHRlc3RzLgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZFVSSSk6IENsZWFyIG1fZXJyb3IgYmVmb3JlIGVhY2ggbG9hZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0Lmg6IEFkZCBuZXcgbWVtYmVyIG1fZXJy
b3IuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOiBNb2RpZnkgdGVzdCB0
byBjaGVjayB0aGUgYmVoYXZpb3Igb2YgdGhlIG5ldworICAgICAgICBtZXRob2QuCisgICAgICAg
ICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkRmFpbFVSSVJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0KTogSW1wbGVtZW50IG5ldyBtZXRob2QgdXNpbmcKKyAgICAgICAg
V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpEaWRGYWlsVVJJUmVxdWVzdCgpLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJT
b3VwUmVxdWVzdE1hbmFnZXJQcm94eSk6IEFkZCBuZXcgbWV0aG9kIGhlYWRlci4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFVS
SVJlcXVlc3QpOiBJbXBsZW1lbnQgbmV3IG1ldGhvZAorICAgICAgICBzZXR0aW5nIHRoZSBlcnJv
ciBhbmQgY29tcGxldGluZyB0aGUgcmVxdWVzdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgIChXZWJTb3VwUmVxdWVzdE1hbmFnZXIp
OiBBZGQgbmV3IG1ldGhvZCBoZWFkZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbjogQWRkIG5ldyBtZXRob2QKKyAgICAgICAgc2ln
bmF0dXJlLgorCiAyMDEzLTA0LTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHRoZSByZXN0IG9mIFNWR19ET01fT0JKQ19CSU5ESU5HUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
LmgKaW5kZXggNDI3ODNiZWUzMTE4YjY0N2QyOWM2ZGQ0NzU3OTliOGRmYTIzMDljZi4uMWE3MDVm
MTVlZDdmMzhmOGQzYWZlZDcwMTFhMzBjMDRiY2M3OGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGh0dHBFcnJvcihTb3Vw
TWVzc2FnZSosIEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAgc3RhdGljIFJlc291cmNlRXJy
b3IgdHJhbnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb25QaHJhc2UpOwotICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNJT0Vy
cm9yKEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgZ2Vu
ZXJpY0dFcnJvcihHRXJyb3IqLCBTb3VwUmVxdWVzdCopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVy
cm9yIHRsc0Vycm9yKFNvdXBSZXF1ZXN0KiwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlm
aWNhdGUqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1lb3V0RXJyb3IoY29uc3QgU3Ry
aW5nJiBmYWlsaW5nVVJMKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBhdXRoZW50aWNhdGlv
bkVycm9yKFNvdXBNZXNzYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAzMWNjNWE2NDk2
ZGJmZjg4MDY1OGM1MWVkOTc2YmM3NmQ2MzA1ZGRlLi44ZTJlNThkZTcwYjk5MmYxMGJjZDg1NzQw
YmY4YTE4YmRiOTg4Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
UmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291cE1lc3NhZ2UqIG1lc3Nh
Z2UsIEdFcnJvciogZXJyb3IsIFNvdXAKICAgICAgICAgcmV0dXJuIHRyYW5zcG9ydEVycm9yKHJl
cXVlc3QsIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gZ2Vu
ZXJpY0lPRXJyb3IoZXJyb3IsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gZ2VuZXJpY0dFcnJv
cihlcnJvciwgcmVxdWVzdCk7CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6YXV0
aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkKQEAgLTcwLDkgKzcwLDkgQEAg
UmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICBmYWlsaW5nVVJJKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1l
c3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiB9CiAK
LVJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0lPRXJyb3IoR0Vycm9yKiBlcnJv
ciwgU291cFJlcXVlc3QqIHJlcXVlc3QpCitSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omdl
bmVyaWNHRXJyb3IoR0Vycm9yKiBlcnJvciwgU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19JT19FUlJPUiksIGVycm9y
LT5jb2RlLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9y
LT5kb21haW4pLCBlcnJvci0+Y29kZSwKICAgICAgICAgZmFpbGluZ1VSSShyZXF1ZXN0KSwgU3Ry
aW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CmluZGV4IDQyNGE2NTE5NGM1YTFjZTk0ZjNkOGFlMjk4ZGU1OWIxMGU2NGEwNDkuLjM0YmY4MDEx
Y2Y3NDk1YzY1MWQ1ZDAzODg3OThiOGYxY2YyZTJmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CkBAIC01MTUsNyArNTE1LDcgQEAgc3RhdGljIHZvaWQgcmVkaXJlY3RTa2lwQ2FsbGJhY2soR09i
amVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGQKICAgICBSZXNvdXJj
ZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIGdzc2l6ZSBi
eXRlc1NraXBwZWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFt
LmdldCgpLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNl
RXJyb3I6OmdlbmVyaWNJT0Vycm9yKGVycm9yLmdldCgpLCBkLT5tX3NvdXBSZXF1ZXN0LmdldCgp
KSk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLmdldCgpLCBSZXNv
dXJjZUVycm9yOjpnZW5lcmljR0Vycm9yKGVycm9yLmdldCgpLCBkLT5tX3NvdXBSZXF1ZXN0Lmdl
dCgpKSk7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwNyw3ICsxMzA3LDcgQEAgc3RhdGljIHZv
aWQgcmVhZENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9p
bnRlciBkYXRhKQogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkX2Zp
bmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKIAogICAgIGlmIChlcnJvcikgewotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWls
KGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0lPRXJyb3IoZXJyb3IuZ2V0KCks
IGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlk
RmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoZXJyb3IuZ2V0
KCksIGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpKTsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0
T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuY3BwCmluZGV4IGUwOWNlNGM5MmE0YmZiZTVhNWQ0YzU0NmQ3NWE3MDFlY2Y2NTJi
OGEuLmY0ZTViODBhZDM1ZTE4MTM4NGYyM2MwNzAxNGZlNDkxOGI2ZmU0ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0dPd25QdHJTb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIxMywzICsyMTQsMjUgQEAgdm9p
ZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiByZXF1ZXN0LCBHSW5wdXRTdHIKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGlucHV0
U3RyZWFtLCByZXF1ZXN0LT5wcml2LT5yZWFkQnVmZmVyLCBnUmVhZEJ1ZmZlclNpemUsIEdfUFJJ
T1JJVFlfREVGQVVMVCwgcmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJh
Y2s+KHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spLCBnX29iamVjdF9yZWYocmVx
dWVzdCkpOwogfQorCisvKioKKyAqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vy
cm9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QKKyAqIEBlcnJvcjog
YSAjR0Vycm9yIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlICNXZWJLaXRXZWJWaWV3CisgKgor
ICogRmluaXNoIGEgI1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qgd2l0aCBhICNHRXJyb3IuCisgKgor
ICogU2luY2U6IDIuMgorICovCit2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNo
X2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcnJvciogZXJyb3IpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVl
c3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGVycm9yKTsKKworICAgIFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKKworICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWlu
KSwgZXJyb3ItPmNvZGUsIHByaXYtPnVyaS5kYXRhKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKTsKKyAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFVSSVJlcXVl
c3QocmVzb3VyY2VFcnJvciwgcHJpdi0+cmVxdWVzdElEKTsKKworICAgIHdlYmtpdFdlYkNvbnRl
eHREaWRGaW5pc2hVUklSZXF1ZXN0KHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LmgKaW5kZXggOWVhZDUwNzA5OWMwZWQxYjBjMzZmZWYwNDAzMTdj
YzJjZjY2MGUzMC4uZjBlMTE4MjdiYTc3NWVmMTc2NmQ0YzFmZTRmODcxZWNlNjM3ZTYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuaApAQCAtNzEsNiArNzEsMTAgQEAgd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9maW5pc2ggICAgICAgKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDY0ICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgICptaW1lX3R5cGUpOwogCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yIChXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0ICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdFcnJvciAgICAgICAgICAgICAgICAgKmVycm9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCmluZGV4IGVkMjNjZDA2NzU4OTM4NmRiMmE2NDMyM2EwM2Q1YjhjN2I2NDgwODUu
LmVjMzY0YTBlZTNmNDMyMTM5OWMyY2ZkMzZiMzJjNzdjYTcxNWEzOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBA
IC01NjYsOCArNTY2LDkgQEAgR0xpc3QqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19m
aW5pc2goV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgR0FzeW5jUmUKICAqICNXZWJLaXRXZWJD
b250ZXh0LCB0aGUgI1dlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayByZWdpc3RlcmVkIHdp
bGwgYmUgY2FsbGVkIHdpdGggYQogICogI1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuCiAgKiBJdCBp
cyBwb3NzaWJsZSB0byBoYW5kbGUgVVJJIHNjaGVtZSByZXF1ZXN0cyBhc3luY2hyb25vdXNseSwg
YnkgY2FsbGluZyBnX29iamVjdF9yZWYoKSBvbiB0aGUKLSAqICNXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0IGFuZCBjYWxsaW5nIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKCkgbGF0ZXIg
d2hlbiB0aGUgZGF0YSBvZgotICogdGhlIHJlcXVlc3QgaXMgYXZhaWxhYmxlLgorICogI1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QgYW5kIGNhbGxpbmcgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9m
aW5pc2goKSBsYXRlcgorICogd2hlbiB0aGUgZGF0YSBvZiB0aGUgcmVxdWVzdCBpcyBhdmFpbGFi
bGUgb3IKKyAqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKCkgaW4gY2Fz
ZSBvZiBlcnJvci4KICAqCiAgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KICAq
IHN0YXRpYyB2b2lkCkBAIC01ODUsMTIgKzU4NiwxOSBAQCBHTGlzdCogd2Via2l0X3dlYl9jb250
ZXh0X2dldF9wbHVnaW5zX2ZpbmlzaChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBHQXN5bmNS
ZQogICogICAgICAgICAvPCEtLSAtLT4qIENyZWF0ZSBhIEdJbnB1dFN0cmVhbSB3aXRoIHRoZSBj
b250ZW50cyBvZiBtZW1vcnkgYWJvdXQgcGFnZSwgYW5kIHNldCBpdHMgbGVuZ3RoIHRvIHN0cmVh
bV9sZW5ndGggKjwhLS0gLS0+LwogICogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCAocGF0aCwg
ImFwcGxpY2F0aW9ucyIpKSB7CiAgKiAgICAgICAgIC88IS0tIC0tPiogQ3JlYXRlIGEgR0lucHV0
U3RyZWFtIHdpdGggdGhlIGNvbnRlbnRzIG9mIGFwcGxpY2F0aW9ucyBhYm91dCBwYWdlLCBhbmQg
c2V0IGl0cyBsZW5ndGggdG8gc3RyZWFtX2xlbmd0aCAqPCEtLSAtLT4vCi0gKiAgICAgfSBlbHNl
IHsKKyAqICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAgKHBhdGgsICJleGFtcGxlIikpIHsKICAq
ICAgICAgICAgZ2NoYXIgKmNvbnRlbnRzOwogICoKLSAqICAgICAgICAgY29udGVudHMgPSBnX3N0
cmR1cF9wcmludGYgKCImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsmbHQ7cCZndDtJbnZhbGlkIGFi
b3V0OiVzIHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiLCBwYXRoKTsK
KyAqICAgICAgICAgY29udGVudHMgPSBnX3N0cmR1cF9wcmludGYgKCImbHQ7aHRtbCZndDsmbHQ7
Ym9keSZndDsmbHQ7cCZndDtFeGFtcGxlIGFib3V0IHBhZ2UmbHQ7L3AmZ3Q7Jmx0Oy9ib2R5Jmd0
OyZsdDsvaHRtbCZndDsiKTsKICAqICAgICAgICAgc3RyZWFtX2xlbmd0aCA9IHN0cmxlbiAoY29u
dGVudHMpOwogICogICAgICAgICBzdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zy
b21fZGF0YSAoY29udGVudHMsIHN0cmVhbV9sZW5ndGgsIGdfZnJlZSk7CisgKiAgICAgfSBlbHNl
IHsKKyAqICAgICAgICAgR0Vycm9yICplcnJvcjsKKyAqCisgKiAgICAgICAgIGVycm9yID0gZ19l
cnJvcl9uZXcgKEFCT1VUX0hBTkRMRVJfRVJST1IsIEFCT1VUX0hBTkRMRVJfRVJST1JfSU5WQUxJ
RCwgIkludmFsaWQgYWJvdXQ6JXMgcGFnZS4iLCBwYXRoKTsKKyAqICAgICAgICAgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IgKHJlcXVlc3QsIGVycm9yKTsKKyAqICAgICAg
ICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisgKiAgICAgICAgIHJldHVybjsKICAqICAgICB9CiAg
KiAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2ggKHJlcXVlc3QsIHN0cmVhbSwg
c3RyZWFtX2xlbmd0aCwgInRleHQvaHRtbCIpOwogICogICAgIGdfb2JqZWN0X3VucmVmIChzdHJl
YW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRl
MzAzNjViMjQ0MDlmYjJhMjljYS4uZGNhOWE1OGJmMjBjZGM3MDJkMDdiMGE2ODgwYjJjMmIxOTdk
YjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03OTIsNiArNzkyLDcgQEAgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF9wYXRoCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldwogd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gKK3dlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4IGI5MDQxMTFmNDUyNGRlYTQ0ZmFmMjY1
ZDM0MTliNzM1ODgzNTFiMGYuLjZhMTMyMWViMTM4NThlMDI2NjMxZjk3YTEwNjdmOTc2ZTZiMTc1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xv
YWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC02NCw2ICs2NCw5IEBAIHN0YXRpYyB2b2lk
IGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hZEV2ZW50CiB7CiAgICAgdGVzdC0+bV9sb2FkRmFpbGVkID0gdHJ1ZTsKIAorICAgIHRl
c3QtPm1fZXJyb3IuY2xlYXIoKTsKKyAgICB0ZXN0LT5tX2Vycm9yLnNldChnX2Vycm9yX2NvcHko
ZXJyb3IpKTsKKwogICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CiAgICAgY2FzZSBXRUJLSVRfTE9B
RF9TVEFSVEVEOgogICAgICAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
d2ViVmlldykpOwpAQCAtMTUzLDYgKzE1Niw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZFVSSShjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAg
bV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7CisgICAgbV9lcnJvci5jbGVhcigpOwogICAgIFdlYlZp
ZXdUZXN0Ojpsb2FkVVJJKHVyaSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaAppbmRleCA1NjJmN2Yw
MzhmYTMwYzRkNzZhZTNkY2EzOTkwNzEzNDM5MzQwYjcyLi5hM2NmNzg0M2Q5MjcxNGI2OWFlMGFj
MjJhNmZmZWFjZWRiODZmMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCkBAIC01OSw2ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIGJvb2wgbV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uOwogICAg
IGJvb2wgbV9sb2FkRmFpbGVkOworICAgIEdPd25QdHI8R0Vycm9yPiBtX2Vycm9yOwogICAgIFZl
Y3RvcjxMb2FkRXZlbnRzPiBtX2xvYWRFdmVudHM7CiAgICAgZmxvYXQgbV9lc3RpbWF0ZWRQcm9n
cmVzczsKICAgICBDU3RyaW5nIG1fcmVkaXJlY3RVUkk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4
dC5jcHAKaW5kZXggMTg1YzA2Y2ZlYjQ0NDkxNjVjNjNiYmVkOGFjNDM2NzQyNjFmMzc1Ny4uOTA1
ZmYxY2FhZGRlZjVkYjgwZmFiY2MzOTU5ZTYwM2FlMGUzNGU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTE0LDYgKzExNCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250
ZXh0R2V0UGx1Z2lucyhQbHVnaW5zVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogc3RhdGlj
IGNvbnN0IGNoYXIqIGtCYXJIVE1MID0gIjxodG1sPjxib2R5PkJhcjwvYm9keT48L2h0bWw+IjsK
IHN0YXRpYyBjb25zdCBjaGFyKiBrRWNob0hUTUxGb3JtYXQgPSAiPGh0bWw+PGJvZHk+JXM8L2Jv
ZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhciogZXJyb3JEb21haW4gPSAidGVzdCI7Citz
dGF0aWMgY29uc3QgaW50IGVycm9yQ29kZSA9IDEwOworc3RhdGljIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZSA9ICJFcnJvciBtZXNzYWdlLiI7CiAKIGNsYXNzIFVSSVNjaGVtZVRlc3Q6IHB1Ymxp
YyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKQEAgLTEyMiwyMiArMTI1LDE5IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgVVJJU2NoZW1lSGFuZGxlciB7CiAgICAgICAgIFVSSVNjaGVtZUhhbmRs
ZXIoKQogICAgICAgICAgICAgOiByZXBseUxlbmd0aCgwKQotICAgICAgICAgICAgLCByZXBseVdp
dGhQYXRoKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVUklTY2hlbWVI
YW5kbGVyKGNvbnN0IGNoYXIqIHJlcGx5LCBpbnQgcmVwbHlMZW5ndGgsIGNvbnN0IGNoYXIqIG1p
bWVUeXBlLCBib29sIHJlcGx5V2l0aFBhdGggPSBmYWxzZSkKKyAgICAgICAgVVJJU2NoZW1lSGFu
ZGxlcihjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1l
VHlwZSkKICAgICAgICAgICAgIDogcmVwbHkocmVwbHkpCiAgICAgICAgICAgICAsIHJlcGx5TGVu
Z3RoKHJlcGx5TGVuZ3RoKQogICAgICAgICAgICAgLCBtaW1lVHlwZShtaW1lVHlwZSkKLSAgICAg
ICAgICAgICwgcmVwbHlXaXRoUGF0aChyZXBseVdpdGhQYXRoKQogICAgICAgICB7CiAgICAgICAg
IH0KIAogICAgICAgICBDU3RyaW5nIHJlcGx5OwogICAgICAgICBpbnQgcmVwbHlMZW5ndGg7CiAg
ICAgICAgIENTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIGJvb2wgcmVwbHlXaXRoUGF0aDsKICAg
ICB9OwogCiAgICAgc3RhdGljIHZvaWQgdXJpU2NoZW1lUmVxdWVzdENhbGxiYWNrKFdlYktpdFVS
SVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtMTU0LDE5ICsx
NTQsMjggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgo
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpKSk7CiAgICAgICAg
IGdfYXNzZXJ0KCFzY2hlbWUuaXNFbXB0eSgpKTsKICAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9o
YW5kbGVyc01hcC5jb250YWlucyhzY2hlbWUpKTsKKworICAgICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2Uoc2NoZW1lLCAiZXJyb3IiKSkgeworICAgICAgICAgICAgR093blB0cjxHRXJyb3I+IGVy
cm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiks
IGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CisgICAgICAgICAg
ICBlcnJvci5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAg
ICAgY29uc3QgVVJJU2NoZW1lSGFuZGxlciYgaGFuZGxlciA9IHRlc3QtPm1faGFuZGxlcnNNYXAu
Z2V0KHNjaGVtZSk7CiAKLSAgICAgICAgaWYgKGhhbmRsZXIucmVwbHlXaXRoUGF0aCkgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiZWNobyIpKSB7CiAgICAgICAgICAg
ICBjaGFyKiByZXBseUhUTUwgPSBnX3N0cmR1cF9wcmludGYoaGFuZGxlci5yZXBseS5kYXRhKCks
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgocmVxdWVzdCkpOwogICAgICAgICAg
ICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShp
bnB1dFN0cmVhbS5nZXQoKSksIHJlcGx5SFRNTCwgc3RybGVuKHJlcGx5SFRNTCksIGdfZnJlZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoIWhhbmRsZXIucmVwbHkuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKGlu
cHV0U3RyZWFtLmdldCgpKSwgaGFuZGxlci5yZXBseS5kYXRhKCksIGhhbmRsZXIucmVwbHkubGVu
Z3RoKCksIDApOworCiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKHJl
cXVlc3QsIGlucHV0U3RyZWFtLmdldCgpLCBoYW5kbGVyLnJlcGx5TGVuZ3RoLCBoYW5kbGVyLm1p
bWVUeXBlLmRhdGEoKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZUhhbmRs
ZXIoY29uc3QgY2hhciogc2NoZW1lLCBjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3Ro
LCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgYm9vbCByZXBseVdpdGhQYXRoID0gZmFsc2UpCisgICAg
dm9pZCByZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hhciogc2NoZW1lLCBjb25zdCBj
aGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKICAgICB7
Ci0gICAgICAgIG1faGFuZGxlcnNNYXAuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgVVJJ
U2NoZW1lSGFuZGxlcihyZXBseSwgcmVwbHlMZW5ndGgsIG1pbWVUeXBlLCByZXBseVdpdGhQYXRo
KSk7CisgICAgICAgIG1faGFuZGxlcnNNYXAuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwg
VVJJU2NoZW1lSGFuZGxlcihyZXBseSwgcmVwbHlMZW5ndGgsIG1pbWVUeXBlKSk7CiAgICAgICAg
IHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1lKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZGVmYXVsdCgpLCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVlc3RDYWxsYmFjaywgdGhpcywg
MCk7CiAgICAgfQogCkBAIC0xODQsNyArMTkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRl
eHRVUklTY2hlbWUoVVJJU2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oa0JhckhUTUwpKTsK
ICAgICBnX2Fzc2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBrQmFySFRNTCwgbWFpblJl
c291cmNlRGF0YVNpemUpKTsKIAotICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigi
ZWNobyIsIGtFY2hvSFRNTEZvcm1hdCwgLTEsICJ0ZXh0L2h0bWwiLCB0cnVlKTsKKyAgICB0ZXN0
LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVjaG8iLCBrRWNob0hUTUxGb3JtYXQsIC0xLCAi
dGV4dC9odG1sIik7CiAgICAgdGVzdC0+bG9hZFVSSSgiZWNobzpoZWxsbyB3b3JsZCIpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIEdPd25QdHI8Y2hhcj4gZWNob0hU
TUwoZ19zdHJkdXBfcHJpbnRmKGtFY2hvSFRNTEZvcm1hdCwgd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9nZXRfcGF0aCh0ZXN0LT5tX3VyaVNjaGVtZVJlcXVlc3QuZ2V0KCkpKSk7CkBAIC0yMDUs
NiArMjE0LDE1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVt
ZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJh
Y2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKICAgICBnX2Fzc2VydCghdGVzdC0+
bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsKKwor
ICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZXJyb3IiLCAwLCAwLCAwKTsKKyAg
ICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKKyAgICB0ZXN0LT5sb2FkVVJJKCJlcnJvcjpl
cnJvciIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0
KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25h
bExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdf
YXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJy
b3JEb21haW4pLCBlcnJvckNvZGUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2Vycm9y
LmdldCgpLT5tZXNzYWdlLCA9PSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgdGVz
dFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAppbmRleCA3ZjJmZDMxYTJjNDk5M2NlY2ZjZTk5ZWZmMjA2Nzg5ZTZi
NDcwNjAyLi5jNWU2YzYwOTZmOWQyMjg0N2ZiYTFhYjM4OWJlZjE4NGZkODljNTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMTYsNCArMTE2LDEzIEBAIHZvaWQgV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJ
RCkKICAgICBtX2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0aGlzLCByZXF1ZXN0SUQp
OwogfQogCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVVJJUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0X3QgcmVxdWVzdElE
KQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvYWRG
YWlsZWQgPSB0cnVlOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxVUklSZXF1ZXN0KGVycm9yLCByZXF1ZXN0
SUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRl
eCA3ZWMzODNkODNlYzU0NjQxY2QyMDJjZmVmYjM1YmNjOGM4MzA1ZGQxLi5mNzhiOTY3ZWQ2MmNl
MTlmMGVlYzZlNDg5ZTk5NzVlNDg1YmQ4ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlVVJJUmVxdWVzdChjb25zdCBX
ZWJEYXRhKiwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
dWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShj
b25zdCBXZWJEYXRhKiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVV
UklSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJpU3RyaW5nLCBXZWJQYWdlUHJveHkqLCB1aW50NjRf
dCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcmVnaXN0ZXJlZFVSSVNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVy
ZWRVUklTY2hlbWVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggNDFlODRkMzRmNDM2ODJkNjI5
NWI1OWViMTY5YjNiODBkMGRiNDM3ZC4uZjkzYzU5Y2M3ZWNkYzM0YmM1YjllNTRmYTI5OTFlYzA5
OGU3MzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTE2Myw2ICsxNjMsMjIgQEAgdm9pZCBXZWJT
b3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShjb25zdCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmMKICAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwog
fQogCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFVSSVJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAg
ICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fcmVxdWVzdE1hcC5nZXQocmVxdWVz
dElEKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+
IHJlc3VsdCA9IGRhdGEtPnJlbGVhc2VSZXN1bHQoKTsKKyAgICBBU1NFUlQocmVzdWx0LmdldCgp
KTsKKworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwK
KyAgICAgICAgZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCksCisg
ICAgICAgICAgICBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsK
KyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKKworICAg
IG1fcmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKK30KKwogdm9pZCBXZWJTb3VwUmVxdWVz
dE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIEdDYW5jZWxsYWJsZSog
Y2FuY2VsbGFibGUpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJl
cXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVz
dWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdCkpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LmgKaW5kZXggNjMxODUzMTFkZmFhMmZmNDkwNWFkMTFkNmNlMmMwYjg0YmY5NWE5Mi4uMDhjZDM0
MzQxZWQxMzA2MzY4ZGFjODlhMzdhZTRkNGYxMjcxNWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaApAQCAtMjIs
NiArMjIsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgpAQCAtNTMsNiArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
aWRIYW5kbGVVUklSZXF1ZXN0KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50NjRf
dCBjb250ZW50TGVuZ3RoLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50NjRfdCByZXF1ZXN0
SUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkRmFpbFVSSVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7
CiAKICAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CiAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IG1f
c2NoZW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDBhMzg2NGIwNDA1
ZWNiNjZiNTJhZGVmMTkyNmY2NDkxMTk1MmFkMTQuLmIxNTg4MDU1MjM0NDhlZjlhZjNkZmVmNTYx
OWUwOGQzMmIzZjIwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQs
NCArMjQsNSBAQCBtZXNzYWdlcyAtPiBXZWJTb3VwUmVxdWVzdE1hbmFnZXIgewogICAgIFJlZ2lz
dGVyVVJJU2NoZW1lKFdURjo6U3RyaW5nIHVyaVNjaGVtZSk7CiAgICAgRGlkSGFuZGxlVVJJUmVx
dWVzdChDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlcXVlc3REYXRhLCB1aW50NjRfdCBjb250ZW50
TGVuZ3RoLCBXVEY6OlN0cmluZyBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICBE
aWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSByZXF1ZXN0RGF0
YSwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICBEaWRGYWlsVVJJUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyYzZjZjI5NDEyOThkOGQx
ZWExODEwYTBjZDZmZjBjNDYyNDk5YzMuLjllZDhkZmYyODgzNDg4YjIxYzA4MjhmYmE1OWFjMjFj
NjQwOGExNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNC0wOCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAg
PHJlZ29AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9maW5pc2hfZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoYWJvdXRVUklT
Y2hlbWVSZXF1ZXN0Q2FsbGJhY2spOiBVcGRhdGUgTWluaUJyb3dzZXIgdG8gdXNlIHRoZSBuZXcK
KyAgICAgICAgZnVuY3Rpb24gd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3Io
KS4KKwogMjAxMy0wNC0wNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0aGUgcmVzdCBvZiBTVkdfRE9NX09CSkNfQklORElOR1MKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jCmluZGV4IDM3YzkyYzE2ZGQ2ZTUwYzI0MjNiZGIyOTIxOTVmOWJjYzBmZmVhOTcuLmZh
NjJlNGVkMTI2ZTIwMmEwOTc2NzBjNTNjNWJkMDhjMTZmZTE1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YwpAQCAtMjA2LDIxICsyMDYsMjQgQEAgYWJvdXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2soV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVxdWVzdCwgZ3BvaW50ZXIgdXNlckRhdGEKICAgICBnc2l6
ZSBzdHJlYW1MZW5ndGg7CiAgICAgY29uc3QgZ2NoYXIgKnBhdGg7CiAgICAgZ2NoYXIgKmNvbnRl
bnRzOworICAgIEdFcnJvciAqZXJyb3I7CiAKICAgICBwYXRoID0gd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9nZXRfcGF0aChyZXF1ZXN0KTsKLSAgICBpZiAoIWdfc3RyY21wMChwYXRoLCAibWlu
aWJyb3dzZXIiKSkKKyAgICBpZiAoIWdfc3RyY21wMChwYXRoLCAibWluaWJyb3dzZXIiKSkgewog
ICAgICAgICBjb250ZW50cyA9IGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+PGJvZHk+PGgxPldlYktp
dEdUSysgTWluaUJyb3dzZXI8L2gxPjxwPlRoZSBXZWJLaXQyIHRlc3QgYnJvd3NlciBvZiB0aGUg
R1RLKyBwb3J0LjwvcD48cD5XZWJLaXQgdmVyc2lvbjogJWQuJWQuJWQ8L3A+PC9ib2R5PjwvaHRt
bD4iLAogICAgICAgICAgICAgd2Via2l0X2dldF9tYWpvcl92ZXJzaW9uKCksCiAgICAgICAgICAg
ICB3ZWJraXRfZ2V0X21pbm9yX3ZlcnNpb24oKSwKICAgICAgICAgICAgIHdlYmtpdF9nZXRfbWlj
cm9fdmVyc2lvbigpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRlbnRzID0gZ19zdHJkdXBfcHJp
bnRmKCI8aHRtbD48Ym9keT48cD5JbnZhbGlkIGFib3V0OiVzIHBhZ2UuPC9wPjwvYm9keT48L2h0
bWw+IiwgcGF0aCk7Ci0KLSAgICBzdHJlYW1MZW5ndGggPSBzdHJsZW4oY29udGVudHMpOwotICAg
IHN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGNvbnRlbnRzLCBz
dHJlYW1MZW5ndGgsIGdfZnJlZSk7Ci0KLSAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaChyZXF1ZXN0LCBzdHJlYW0sIHN0cmVhbUxlbmd0aCwgInRleHQvaHRtbCIpOwotICAgIGdf
b2JqZWN0X3VucmVmKHN0cmVhbSk7CisgICAgICAgIHN0cmVhbUxlbmd0aCA9IHN0cmxlbihjb250
ZW50cyk7CisgICAgICAgIHN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9k
YXRhKGNvbnRlbnRzLCBzdHJlYW1MZW5ndGgsIGdfZnJlZSk7CisKKyAgICAgICAgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgc3RyZWFtLCBzdHJlYW1MZW5ndGgsICJ0
ZXh0L2h0bWwiKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoc3RyZWFtKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBHRXJyb3IgKmVycm9yID0gZ19lcnJvcl9uZXcoZ19xdWFya19mcm9tX3N0cmlu
ZygibWluaWJyb3dzZXIiKSwgMTAsICJJbnZhbGlkIGFib3V0OiVzIHBhZ2UuIiwgcGF0aCk7Cisg
ICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJlcXVlc3QsIGVy
cm9yKTsKKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB9CiB9CiAKIGludCBtYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197231</attachid>
            <date>2013-04-10 02:52:27 -0700</date>
            <delta_ts>2013-05-06 14:19:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94316-20130410115208.patch</filename>
            <type>text/plain</type>
            <size>28956</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZmZDliODBlNDJlM2Mw
ZjZiYTZmMGU1M2VjYzJiNzY1M2ZjNGI1Ni4uZDk2MmIwN2VhOGMyMzFjODY3MzRjMWM1ZTQzMDA4
M2QwN2VlNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA0LTEwICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFk
ZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFJlc291cmNlRXJyb3IpOiBSZW5hbWUgZ2VuZXJp
Y0lPRXJyb3IoKSB0byBnZW5lcmljR0Vycm9yKCkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcik6IFVzZSBnZW5lcmNpY0dFcnJvcigpIGluc3RlYWQgb2YKKyAgICAg
ICAgZ2VuZXJpY0lPRXJyb3IoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Omdl
bmVyaWNHRXJyb3IpOiBVc2UgZXJyb3IgZG9tYWluIGluc3RlYWQgb2YKKyAgICAgICAgYWx3YXlz
IHJldHVybiBhIEdfSU9fRVJST1IuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHA6IFVzZSBnZW5lcmljR0Vycm9yKCkKKyAgICAgICAgaW5zdGVh
ZCBvZiBnZW5lcmljSU9FcnJvcigpLgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RTa2lwQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKwogMjAxMy0wNC0wNyAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IHRoZSBhbmRyb2lkIGNvZGUgZnJvbSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjhjZmM2YjUyODkx
MDcxY2Y1ZDkwZDRkZTI5NzQ0YjdjZjczZDZlNi4uMjNlOTYxZmJlOTNmYzQ3MWU3NDhkOTNiNzhl
NmMxMTgwNDdkNjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTA0LTEwICBN
YW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyBtZXRob2Qgd2lsbCBh
bGxvdyB0byBmaW5pc2ggV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCB3aXRoIGEKKyAgICAgICAgR0Vy
cm9yIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIFdlYktpdFdlYlZpZXcgdGhyb3VnaCB0aGUK
KyAgICAgICAgImxvYWQtZmFpbGVkIiBzaWduYWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKTogSW1wbGVtZW50IG5ldyBtZXRob2QgdXNpbmcKKyAg
ICAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZEZhaWxVUklSZXF1ZXN0KCkuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oOiBBZGQg
bmV3IG1ldGhvZCBoZWFkZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6IEluY2x1ZGUgdGhlIHVzYWdlIG9mIHRoZSBuZXcKKyAgICAgICAgbWV0aG9k
IGluIHRoZSBjb2RlIGV4YW1wbGUgYXQgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9z
Y2hlbWUoKQorICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEluY2x1ZGUgdGhlIG5ldworICAgICAg
ICBtZXRob2QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5n
VGVzdC5jcHA6CisgICAgICAgIChsb2FkRmFpbGVkQ2FsbGJhY2spOiBTZXQgbV9lcnJvciB0byBt
b25pdG9yIGl0IGZyb20gdGhlIHRlc3RzLgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZFVSSSk6IENsZWFyIG1fZXJyb3IgYmVmb3JlIGVhY2ggbG9hZC4KKyAgICAgICAgKExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRIdG1sKTogRGl0dG8uCisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojps
b2FkUGxhaW5UZXh0KTogRGl0dG8uCisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkUmVx
dWVzdCk6IERpdHRvLgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6cmVsb2FkKTogRGl0dG8u
CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpnb0JhY2spOiBEaXR0by4KKyAgICAgICAgKExv
YWRUcmFja2luZ1Rlc3Q6OmdvRm9yd2FyZCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaDogQWRkIG5ldyBtZW1iZXIgbV9lcnJvci4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZSk6IE1vZGlmeSB0ZXN0IHRvIGNo
ZWNrIHRoZSBiZWhhdmlvciBvZiB0aGUgbmV3CisgICAgICAgIG1ldGhvZC4KKyAgICAgICAgKiBV
SVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQpOiBJbXBsZW1lbnQgbmV3IG1ldGhvZCB1c2luZworICAgICAgICBXZWJT
b3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxVUklSZXF1ZXN0KCkuCisgICAgICAgICogVUlQcm9j
ZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5KTogQWRkIG5ldyBtZXRob2QgaGVhZGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsVVJJUmVx
dWVzdCk6IEltcGxlbWVudCBuZXcgbWV0aG9kCisgICAgICAgIHNldHRpbmcgdGhlIGVycm9yIGFu
ZCBjb21wbGV0aW5nIHRoZSByZXF1ZXN0LgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKFdlYlNvdXBSZXF1ZXN0TWFuYWdlcik6IEFk
ZCBuZXcgbWV0aG9kIGhlYWRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1ldGhvZAorICAgICAgICBzaWduYXR1
cmUuCisKIDIwMTMtMDQtMDcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdGhlIHJlc3Qgb2YgU1ZHX0RPTV9PQkpDX0JJTkRJTkdTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApp
bmRleCA0Mjc4M2JlZTMxMThiNjQ3ZDI5YzZkZDQ3NTc5OWI4ZGZhMjMwOWNmLi4xYTcwNWYxNWVk
N2YzOGY4ZDNhZmVkNzAxMWEzMGMwNGJjYzc4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgaHR0cEVycm9yKFNvdXBNZXNz
YWdlKiwgR0Vycm9yKiwgU291cFJlcXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0
cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCosIGludCBzdGF0dXNDb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvblBocmFzZSk7Ci0gICAgc3RhdGljIFJlc291cmNlRXJyb3IgZ2VuZXJpY0lPRXJyb3Io
R0Vycm9yKiwgU291cFJlcXVlc3QqKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBnZW5lcmlj
R0Vycm9yKEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3Ig
dGxzRXJyb3IoU291cFJlcXVlc3QqLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0
ZSopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIHRpbWVvdXRFcnJvcihjb25zdCBTdHJpbmcm
IGZhaWxpbmdVUkwpOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGF1dGhlbnRpY2F0aW9uRXJy
b3IoU291cE1lc3NhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IDMxY2M1YTY0OTZkYmZm
ODgwNjU4YzUxZWQ5NzZiYzc2ZDYzMDVkZGUuLjhlMmU1OGRlNzBiOTkyZjEwYmNkODU3NDBiZjhh
MThiZGI5ODhjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwg
R0Vycm9yKiBlcnJvciwgU291cAogICAgICAgICByZXR1cm4gdHJhbnNwb3J0RXJyb3IocmVxdWVz
dCwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KG1l
c3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBnZW5lcmlj
SU9FcnJvcihlcnJvciwgcmVxdWVzdCk7CisgICAgICAgIHJldHVybiBnZW5lcmljR0Vycm9yKGVy
cm9yLCByZXF1ZXN0KTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjphdXRoZW50
aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQpAQCAtNzAsOSArNzAsOSBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3IoU291cE1lc3NhZ2Uq
IG1lc3NhZ2UpCiAgICAgICAgIGZhaWxpbmdVUkkoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2Fn
ZSkpLCBTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKIH0KIAotUmVz
b3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpnZW5lcmljSU9FcnJvcihHRXJyb3IqIGVycm9yLCBT
b3VwUmVxdWVzdCogcmVxdWVzdCkKK1Jlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6Z2VuZXJp
Y0dFcnJvcihHRXJyb3IqIGVycm9yLCBTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX0lPX0VSUk9SKSwgZXJyb3ItPmNv
ZGUsCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRv
bWFpbiksIGVycm9yLT5jb2RlLAogICAgICAgICBmYWlsaW5nVVJJKHJlcXVlc3QpLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5k
ZXggNDI0YTY1MTk0YzVhMWNlOTRmM2Q4YWUyOThkZTU5YjEwZTY0YTA0OS4uMzRiZjgwMTFjZjc0
OTVjNjUxZDVkMDM4ODc5OGI4ZjFjZjJlMmY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAg
LTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCByZWRpcmVjdFNraXBDYWxsYmFjayhHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZAogICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAgICAgZ3NzaXplIGJ5dGVz
U2tpcHBlZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0
KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikgewotICAg
ICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJv
cjo6Z2VuZXJpY0lPRXJyb3IoZXJyb3IuZ2V0KCksIGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpKTsK
KyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNl
RXJyb3I6OmdlbmVyaWNHRXJyb3IoZXJyb3IuZ2V0KCksIGQtPm1fc291cFJlcXVlc3QuZ2V0KCkp
KTsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVy
IGRhdGEpCiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNo
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwog
CiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFu
ZGxlLmdldCgpLCBSZXNvdXJjZUVycm9yOjpnZW5lcmljSU9FcnJvcihlcnJvci5nZXQoKSwgZC0+
bV9zb3VwUmVxdWVzdC5nZXQoKSkpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWls
KGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcihlcnJvci5nZXQoKSwg
ZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwogICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVy
YXRpb24oaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHAKaW5kZXggZTA5Y2U0YzkyYTRiZmJlNWE1ZDRjNTQ2ZDc1YTcwMWVjZjY1MmI4YS4u
ZjRlNWI4MGFkMzVlMTgxMzg0ZjIzYzA3MDE0ZmU0OTE4YjZmZTRmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R093blB0clNvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjEzLDMgKzIxNCwyNSBAQCB2b2lkIHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlc3QsIEdJbnB1dFN0cgogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoaW5wdXRTdHJl
YW0sIHJlcXVlc3QtPnByaXYtPnJlYWRCdWZmZXIsIGdSZWFkQnVmZmVyU2l6ZSwgR19QUklPUklU
WV9ERUZBVUxULCByZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
d2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0
KSk7CiB9CisKKy8qKgorICogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3I6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdAorICogQGVycm9yOiBhICNH
RXJyb3IgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBG
aW5pc2ggYSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCB3aXRoIGEgI0dFcnJvci4KKyAqCisgKiBT
aW5jZTogMi4yCisgKi8KK3ZvaWQgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJy
b3IoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgR0Vycm9yKiBlcnJvcikKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NIRU1FX1JFUVVFU1QocmVxdWVzdCkp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoZXJyb3IpOworCisgICAgV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBl
cnJvci0+Y29kZSwgcHJpdi0+dXJpLmRhdGEoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpOworICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGYWlsVVJJUmVxdWVzdChy
ZXNvdXJjZUVycm9yLCBwcml2LT5yZXF1ZXN0SUQpOworCisgICAgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaFVSSVJlcXVlc3QocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNj
aGVtZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuaAppbmRleCA5ZWFkNTA3MDk5YzBlZDFiMGMzNmZlZjA0MDMxN2NjMmNm
NjYwZTMwLi5mMGUxMTgyN2JhNzc1ZWYxNzY2ZDRjMWZlNGY4NzFlY2U2MzdlNjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5oCkBAIC03MSw2ICs3MSwxMCBAQCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2ZpbmlzaCAgICAgICAoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVxdWVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50NjQgICAgICAgICAgICAgICAgICBz
dHJlYW1fbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgKm1pbWVfdHlwZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IgKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3QgKnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vy
cm9yICAgICAgICAgICAgICAgICAqZXJyb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAKaW5kZXggZWQyM2NkMDY3NTg5Mzg2ZGIyYTY0MzIzYTAzZDViOGM3YjY0ODA4NS4uZWMz
NjRhMGVlM2Y0MzIxMzk5YzJjZmQzNmIzMmM3N2NhNzE1YTM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTU2
Niw4ICs1NjYsOSBAQCBHTGlzdCogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zX2Zpbmlz
aChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBHQXN5bmNSZQogICogI1dlYktpdFdlYkNvbnRl
eHQsIHRoZSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIHJlZ2lzdGVyZWQgd2lsbCBi
ZSBjYWxsZWQgd2l0aCBhCiAgKiAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC4KICAqIEl0IGlzIHBv
c3NpYmxlIHRvIGhhbmRsZSBVUkkgc2NoZW1lIHJlcXVlc3RzIGFzeW5jaHJvbm91c2x5LCBieSBj
YWxsaW5nIGdfb2JqZWN0X3JlZigpIG9uIHRoZQotICogI1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qg
YW5kIGNhbGxpbmcgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2goKSBsYXRlciB3aGVu
IHRoZSBkYXRhIG9mCi0gKiB0aGUgcmVxdWVzdCBpcyBhdmFpbGFibGUuCisgKiAjV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCBhbmQgY2FsbGluZyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zpbmlz
aCgpIGxhdGVyCisgKiB3aGVuIHRoZSBkYXRhIG9mIHRoZSByZXF1ZXN0IGlzIGF2YWlsYWJsZSBv
cgorICogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IoKSBpbiBjYXNlIG9m
IGVycm9yLgogICoKICAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgogICogc3Rh
dGljIHZvaWQKQEAgLTU4NSwxMiArNTg2LDE5IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3BsdWdpbnNfZmluaXNoKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdBc3luY1JlCiAg
KiAgICAgICAgIC88IS0tIC0tPiogQ3JlYXRlIGEgR0lucHV0U3RyZWFtIHdpdGggdGhlIGNvbnRl
bnRzIG9mIG1lbW9yeSBhYm91dCBwYWdlLCBhbmQgc2V0IGl0cyBsZW5ndGggdG8gc3RyZWFtX2xl
bmd0aCAqPCEtLSAtLT4vCiAgKiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwIChwYXRoLCAiYXBw
bGljYXRpb25zIikpIHsKICAqICAgICAgICAgLzwhLS0gLS0+KiBDcmVhdGUgYSBHSW5wdXRTdHJl
YW0gd2l0aCB0aGUgY29udGVudHMgb2YgYXBwbGljYXRpb25zIGFib3V0IHBhZ2UsIGFuZCBzZXQg
aXRzIGxlbmd0aCB0byBzdHJlYW1fbGVuZ3RoICo8IS0tIC0tPi8KLSAqICAgICB9IGVsc2Ugewor
ICogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCAocGF0aCwgImV4YW1wbGUiKSkgewogICogICAg
ICAgICBnY2hhciAqY29udGVudHM7CiAgKgotICogICAgICAgICBjb250ZW50cyA9IGdfc3RyZHVw
X3ByaW50ZiAoIiZsdDtodG1sJmd0OyZsdDtib2R5Jmd0OyZsdDtwJmd0O0ludmFsaWQgYWJvdXQ6
JXMgcGFnZSZsdDsvcCZndDsmbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0OyIsIHBhdGgpOworICog
ICAgICAgICBjb250ZW50cyA9IGdfc3RyZHVwX3ByaW50ZiAoIiZsdDtodG1sJmd0OyZsdDtib2R5
Jmd0OyZsdDtwJmd0O0V4YW1wbGUgYWJvdXQgcGFnZSZsdDsvcCZndDsmbHQ7L2JvZHkmZ3Q7Jmx0
Oy9odG1sJmd0OyIpOwogICogICAgICAgICBzdHJlYW1fbGVuZ3RoID0gc3RybGVuIChjb250ZW50
cyk7CiAgKiAgICAgICAgIHN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9k
YXRhIChjb250ZW50cywgc3RyZWFtX2xlbmd0aCwgZ19mcmVlKTsKKyAqICAgICB9IGVsc2Ugewor
ICogICAgICAgICBHRXJyb3IgKmVycm9yOworICoKKyAqICAgICAgICAgZXJyb3IgPSBnX2Vycm9y
X25ldyAoQUJPVVRfSEFORExFUl9FUlJPUiwgQUJPVVRfSEFORExFUl9FUlJPUl9JTlZBTElELCAi
SW52YWxpZCBhYm91dDolcyBwYWdlLiIsIHBhdGgpOworICogICAgICAgICB3ZWJraXRfdXJpX3Nj
aGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvciAocmVxdWVzdCwgZXJyb3IpOworICogICAgICAgICBn
X2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAqICAgICAgICAgcmV0dXJuOwogICogICAgIH0KICAqICAg
ICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaCAocmVxdWVzdCwgc3RyZWFtLCBzdHJl
YW1fbGVuZ3RoLCAidGV4dC9odG1sIik7CiAgKiAgICAgZ19vYmplY3RfdW5yZWYgKHN0cmVhbSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBmNmU4YTg0Nzc3YmUyN2I0NWJlZGUzMDM2
NWIyNDQwOWZiMmEyOWNhLi5kY2E5YTU4YmYyMGNkYzcwMmQwN2IwYTY4ODBiMmMyYjE5N2RiNTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTc5Miw2ICs3OTIsNyBAQCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0
X3BhdGgKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3CiB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaAord2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hf
ZXJyb3IKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2xh
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xv
YWRUcmFja2luZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvTG9hZFRyYWNraW5nVGVzdC5jcHAKaW5kZXggYjkwNDExMWY0NTI0ZGVhNDRmYWYyNjVkMzQx
OWI3MzU4ODM1MWIwZi4uZGYzNDIwNDkyYzk4YjczZWFhZTRkYTkyZmM2NmM2OGJiYjZiY2E0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRy
YWNraW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvTG9hZFRyYWNraW5nVGVzdC5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgc3RhdGljIHZvaWQgbG9h
ZENoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQg
bG9hZEV2ZW4KIHN0YXRpYyB2b2lkIGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJ
LCBHRXJyb3IqIGVycm9yLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogewogICAgIHRlc3QtPm1f
bG9hZEZhaWxlZCA9IHRydWU7CisgICAgdGVzdC0+bV9lcnJvci5zZXQoZ19lcnJvcl9jb3B5KGVy
cm9yKSk7CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewogICAgIGNhc2UgV0VCS0lUX0xPQURf
U1RBUlRFRDoKQEAgLTE1Myw2ICsxNTQsNyBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRV
UkkoY29uc3QgY2hhciogdXJpKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1f
ZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOworICAgIG1fZXJyb3IuY2xlYXIoKTsKICAgICBXZWJWaWV3
VGVzdDo6bG9hZFVSSSh1cmkpOwogfQogCkBAIC0xNjAsNiArMTYyLDcgQEAgdm9pZCBMb2FkVHJh
Y2tpbmdUZXN0Ojpsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJ
KQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3Mg
PSAwOworICAgIG1fZXJyb3IuY2xlYXIoKTsKICAgICBXZWJWaWV3VGVzdDo6bG9hZEh0bWwoaHRt
bCwgYmFzZVVSSSk7CiB9CiAKQEAgLTE2Nyw2ICsxNzAsNyBAQCB2b2lkIExvYWRUcmFja2luZ1Rl
c3Q6OmxvYWRQbGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0KQogewogICAgIG1fbG9hZEV2
ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOworICAgIG1fZXJyb3Iu
Y2xlYXIoKTsKICAgICBXZWJWaWV3VGVzdDo6bG9hZFBsYWluVGV4dChwbGFpblRleHQpOwogfQog
CkBAIC0xNzQsNiArMTc4LDcgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkUmVxdWVzdChX
ZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwog
ICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOworICAgIG1fZXJyb3IuY2xlYXIoKTsKICAgICBX
ZWJWaWV3VGVzdDo6bG9hZFJlcXVlc3QocmVxdWVzdCk7CiB9CiAKQEAgLTE4MSw2ICsxODYsNyBA
QCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OnJlbG9hZCgpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNs
ZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7CisgICAgbV9lcnJvci5jbGVhcigp
OwogICAgIHdlYmtpdF93ZWJfdmlld19yZWxvYWQobV93ZWJWaWV3KTsKIH0KIApAQCAtMTg4LDYg
KzE5NCw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6Z29CYWNrKCkKIHsKICAgICBtX2xvYWRF
dmVudHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKKyAgICBtX2Vycm9y
LmNsZWFyKCk7CiAgICAgV2ViVmlld1Rlc3Q6OmdvQmFjaygpOwogfQogCkBAIC0xOTUsNSArMjAy
LDYgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQoKQogewogICAgIG1fbG9hZEV2
ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOworICAgIG1fZXJyb3Iu
Y2xlYXIoKTsKICAgICBXZWJWaWV3VGVzdDo6Z29Gb3J3YXJkKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
LmgKaW5kZXggNTYyZjdmMDM4ZmEzMGM0ZDc2YWUzZGNhMzk5MDcxMzQzOTM0MGI3Mi4uYTNjZjc4
NDNkOTI3MTRiNjlhZTBhYzIyYTZmZmVhY2VkYjg2ZjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaApA
QCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBib29sIG1fcnVuTG9hZFVudGls
Q29tcGxldGlvbjsKICAgICBib29sIG1fbG9hZEZhaWxlZDsKKyAgICBHT3duUHRyPEdFcnJvcj4g
bV9lcnJvcjsKICAgICBWZWN0b3I8TG9hZEV2ZW50cz4gbV9sb2FkRXZlbnRzOwogICAgIGZsb2F0
IG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAgICAgQ1N0cmluZyBtX3JlZGlyZWN0VVJJOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDE4NWMwNmNmZWI0NDQ5MTY1YzYzYmJlZDhhYzQz
Njc0MjYxZjM3NTcuLjc4YTdlNmUyZjRiYzhmMDQ4NzcxNDIwYThlNjYyMjJhMTZhMTk0M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTExNCw2ICsxMTQsOSBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBrQmFySFRNTCA9ICI8aHRtbD48Ym9keT5CYXI8
L2JvZHk+PC9odG1sPiI7CiBzdGF0aWMgY29uc3QgY2hhcioga0VjaG9IVE1MRm9ybWF0ID0gIjxo
dG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIqIGVycm9yRG9t
YWluID0gInRlc3QiOworc3RhdGljIGNvbnN0IGludCBlcnJvckNvZGUgPSAxMDsKK3N0YXRpYyBj
b25zdCBjaGFyKiBlcnJvck1lc3NhZ2UgPSAiRXJyb3IgbWVzc2FnZS4iOwogCiBjbGFzcyBVUklT
Y2hlbWVUZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CkBAIC0xMjIsMjIg
KzEyNSwxOSBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFVSSVNjaGVtZUhhbmRsZXIgewogICAgICAg
ICBVUklTY2hlbWVIYW5kbGVyKCkKICAgICAgICAgICAgIDogcmVwbHlMZW5ndGgoMCkKLSAgICAg
ICAgICAgICwgcmVwbHlXaXRoUGF0aChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgVVJJU2NoZW1lSGFuZGxlcihjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3Ro
LCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgYm9vbCByZXBseVdpdGhQYXRoID0gZmFsc2UpCisgICAg
ICAgIFVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hhciogcmVwbHksIGludCByZXBseUxlbmd0aCwg
Y29uc3QgY2hhciogbWltZVR5cGUpCiAgICAgICAgICAgICA6IHJlcGx5KHJlcGx5KQogICAgICAg
ICAgICAgLCByZXBseUxlbmd0aChyZXBseUxlbmd0aCkKICAgICAgICAgICAgICwgbWltZVR5cGUo
bWltZVR5cGUpCi0gICAgICAgICAgICAsIHJlcGx5V2l0aFBhdGgocmVwbHlXaXRoUGF0aCkKICAg
ICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgQ1N0cmluZyByZXBseTsKICAgICAgICAgaW50
IHJlcGx5TGVuZ3RoOwogICAgICAgICBDU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBib29sIHJl
cGx5V2l0aFBhdGg7CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lkIHVyaVNjaGVtZVJlcXVlc3RD
YWxsYmFjayhXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBncG9pbnRlciB1c2VyRGF0
YSkKQEAgLTE1MSwyMiArMTUxLDMwIEBAIHB1YmxpYzoKICAgICAgICAgR1JlZlB0cjxHSW5wdXRT
dHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXco
KSk7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoaW5wdXRTdHJlYW0uZ2V0KCkpKTsKIAotICAgICAgICBTdHJpbmcgc2NoZW1lKFN0
cmluZzo6ZnJvbVVURjgod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVl
c3QpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFzY2hlbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgZ19h
c3NlcnQodGVzdC0+bV9oYW5kbGVyc01hcC5jb250YWlucyhzY2hlbWUpKTsKLSAgICAgICAgY29u
c3QgVVJJU2NoZW1lSGFuZGxlciYgaGFuZGxlciA9IHRlc3QtPm1faGFuZGxlcnNNYXAuZ2V0KHNj
aGVtZSk7CisgICAgICAgIGNvbnN0IGNoYXIqIHNjaGVtZSA9IHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KTsKKyAgICAgICAgZ19hc3NlcnQoc2NoZW1lKTsKKyAg
ICAgICAgZ19hc3NlcnQodGVzdC0+bV9oYW5kbGVyc01hcC5jb250YWlucyhTdHJpbmc6OmZyb21V
VEY4KHNjaGVtZSkpKTsKIAotICAgICAgICBpZiAoaGFuZGxlci5yZXBseVdpdGhQYXRoKSB7Cisg
ICAgICAgIGlmICghZ19zdHJjbXAwKHNjaGVtZSwgImVycm9yIikpIHsKKyAgICAgICAgICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJp
bmcoZXJyb3JEb21haW4pLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAg
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdCwgZXJyb3IuZ2V0
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgVVJJ
U2NoZW1lSGFuZGxlciYgaGFuZGxlciA9IHRlc3QtPm1faGFuZGxlcnNNYXAuZ2V0KFN0cmluZzo6
ZnJvbVVURjgoc2NoZW1lKSk7CisKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAoc2NoZW1lLCAiZWNo
byIpKSB7CiAgICAgICAgICAgICBjaGFyKiByZXBseUhUTUwgPSBnX3N0cmR1cF9wcmludGYoaGFu
ZGxlci5yZXBseS5kYXRhKCksIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgocmVx
dWVzdCkpOwogICAgICAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVN
T1JZX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbS5nZXQoKSksIHJlcGx5SFRNTCwgc3RybGVuKHJl
cGx5SFRNTCksIGdfZnJlZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWhhbmRsZXIucmVwbHkuaXNO
dWxsKCkpCiAgICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEoR19NRU1P
UllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwgaGFuZGxlci5yZXBseS5kYXRhKCks
IGhhbmRsZXIucmVwbHkubGVuZ3RoKCksIDApOworCiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1l
X3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIGlucHV0U3RyZWFtLmdldCgpLCBoYW5kbGVyLnJlcGx5
TGVuZ3RoLCBoYW5kbGVyLm1pbWVUeXBlLmRhdGEoKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWdp
c3RlclVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hhciogc2NoZW1lLCBjb25zdCBjaGFyKiByZXBs
eSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgYm9vbCByZXBseVdpdGhQ
YXRoID0gZmFsc2UpCisgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoY29uc3QgY2hh
ciogc2NoZW1lLCBjb25zdCBjaGFyKiByZXBseSwgaW50IHJlcGx5TGVuZ3RoLCBjb25zdCBjaGFy
KiBtaW1lVHlwZSkKICAgICB7Ci0gICAgICAgIG1faGFuZGxlcnNNYXAuc2V0KFN0cmluZzo6ZnJv
bVVURjgoc2NoZW1lKSwgVVJJU2NoZW1lSGFuZGxlcihyZXBseSwgcmVwbHlMZW5ndGgsIG1pbWVU
eXBlLCByZXBseVdpdGhQYXRoKSk7CisgICAgICAgIG1faGFuZGxlcnNNYXAuc2V0KFN0cmluZzo6
ZnJvbVVURjgoc2NoZW1lKSwgVVJJU2NoZW1lSGFuZGxlcihyZXBseSwgcmVwbHlMZW5ndGgsIG1p
bWVUeXBlKSk7CiAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlfc2NoZW1l
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVl
c3RDYWxsYmFjaywgdGhpcywgMCk7CiAgICAgfQogCkBAIC0xODQsNyArMTkyLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJU2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBz
dHJsZW4oa0JhckhUTUwpKTsKICAgICBnX2Fzc2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRh
LCBrQmFySFRNTCwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKIAotICAgIHRlc3QtPnJlZ2lzdGVy
VVJJU2NoZW1lSGFuZGxlcigiZWNobyIsIGtFY2hvSFRNTEZvcm1hdCwgLTEsICJ0ZXh0L2h0bWwi
LCB0cnVlKTsKKyAgICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVjaG8iLCBrRWNo
b0hUTUxGb3JtYXQsIC0xLCAidGV4dC9odG1sIik7CiAgICAgdGVzdC0+bG9hZFVSSSgiZWNobzpo
ZWxsbyB3b3JsZCIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIEdP
d25QdHI8Y2hhcj4gZWNob0hUTUwoZ19zdHJkdXBfcHJpbnRmKGtFY2hvSFRNTEZvcm1hdCwgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0aCh0ZXN0LT5tX3VyaVNjaGVtZVJlcXVlc3Qu
Z2V0KCkpKSk7CkBAIC0yMDUsNiArMjEzLDE1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0
VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50
cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKICAg
ICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRGYWlsZWQpKTsKKworICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZXJy
b3IiLCAwLCAwLCAwKTsKKyAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKKyAgICB0ZXN0
LT5sb2FkVVJJKCJlcnJvcjplcnJvciIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tp
bmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2xv
YWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIGdfcXVh
cmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNvZGUpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXN0LT5tX2Vycm9yLT5tZXNzYWdlLCA9PSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogc3Rh
dGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA3ZjJmZDMxYTJjNDk5M2NlY2ZjZTk5
ZWZmMjA2Nzg5ZTZiNDcwNjAyLi5jNWU2YzYwOTZmOWQyMjg0N2ZiYTFhYjM4OWJlZjE4NGZkODlj
NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMTYsNCArMTE2LDEzIEBAIHZvaWQg
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHVpbnQ2
NF90IHJlcXVlc3RJRCkKICAgICBtX2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0aGlz
LCByZXF1ZXN0SUQpOwogfQogCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRG
YWlsVVJJUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0
X3QgcmVxdWVzdElEKQoreworICAgIGlmICghY29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2xvYWRGYWlsZWQgPSB0cnVlOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxVUklSZXF1ZXN0KGVy
cm9yLCByZXF1ZXN0SUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHkuaAppbmRleCA3ZWMzODNkODNlYzU0NjQxY2QyMDJjZmVmYjM1YmNjOGM4MzA1ZGQxLi5m
NzhiOTY3ZWQ2MmNlMTlmMGVlYzZlNDg5ZTk5NzVlNDg1YmQ4ZDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlVVJJUmVx
dWVzdChjb25zdCBXZWJEYXRhKiwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVVUklS
ZXF1ZXN0RGF0YShjb25zdCBXZWJEYXRhKiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVVUklSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJpU3RyaW5nLCBXZWJQYWdlUHJv
eHkqLCB1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkRmFpbFVSSVJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFVSSVNjaGVtZXMoKSBjb25zdCB7IHJldHVy
biBtX3JlZ2lzdGVyZWRVUklTY2hlbWVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggNDFlODRk
MzRmNDM2ODJkNjI5NWI1OWViMTY5YjNiODBkMGRiNDM3ZC4uZjkzYzU5Y2M3ZWNkYzM0YmM1Yjll
NTRmYTI5OTFlYzA5OGU3MzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTE2Myw2ICsxNjMsMjIg
QEAgdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0YShj
b25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmMKICAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShy
ZXF1ZXN0SUQpOwogfQogCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFVSSVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKK3sKKyAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fcmVxdWVzdE1h
cC5nZXQocmVxdWVzdElEKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgR1JlZlB0cjxHU2ltcGxl
QXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGRhdGEtPnJlbGVhc2VSZXN1bHQoKTsKKyAgICBBU1NFUlQo
cmVzdWx0LmdldCgpKTsKKworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJl
c3VsdC5nZXQoKSwKKyAgICAgICAgZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3Ry
aW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAgZXJyb3IuZXJy
b3JDb2RlKCksCisgICAgICAgICAgICBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpKTsKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0Lmdl
dCgpKTsKKworICAgIG1fcmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKK30KKwogdm9pZCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIEdD
YW5jZWxsYWJsZSogY2FuY2VsbGFibGUpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklD
KGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdCkp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyLmgKaW5kZXggNjMxODUzMTFkZmFhMmZmNDkwNWFkMTFkNmNlMmMwYjg0YmY5
NWE5Mi4uMDhjZDM0MzQxZWQxMzA2MzY4ZGFjODlhMzdhZTRkNGYxMjcxNWJjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXIuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTMsNiArNTQsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRIYW5kbGVVUklSZXF1ZXN0KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50
NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKGNvbnN0
IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQg
ZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90
IHJlcXVlc3RJRCk7CiAKICAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CiAgICAgR1JlZlB0cjxH
UHRyQXJyYXk+IG1fc2NoZW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4
IDBhMzg2NGIwNDA1ZWNiNjZiNTJhZGVmMTkyNmY2NDkxMTk1MmFkMTQuLmIxNTg4MDU1MjM0NDhl
ZjlhZjNkZmVmNTYxOWUwOGQzMmIzZjIwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNCArMjQsNSBAQCBtZXNzYWdlcyAtPiBXZWJTb3VwUmVxdWVzdE1hbmFnZXIg
ewogICAgIFJlZ2lzdGVyVVJJU2NoZW1lKFdURjo6U3RyaW5nIHVyaVNjaGVtZSk7CiAgICAgRGlk
SGFuZGxlVVJJUmVxdWVzdChDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoLCBXVEY6OlN0cmluZyBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVz
dElEKTsKICAgICBEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSByZXF1ZXN0RGF0YSwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICBEaWRGYWlsVVJJUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyYzZj
ZjI5NDEyOThkOGQxZWExODEwYTBjZDZmZjBjNDYyNDk5YzMuLjM4OWNjN2UxNGRhNTg0ZTBkODM4
YmYxZTIyYmYzZDM1YjExYzcyM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNC0xMCAgTWFudWVsIFJlZ28g
Q2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAg
ICAobWluaUJyb3dzZXJFcnJvclF1YXJrKTogQWRkIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGdsb2Jh
bCBxdWFyayBmb3IKKyAgICAgICAgTWluaUJyb3dzZXIuCisgICAgICAgIChhYm91dFVSSVNjaGVt
ZVJlcXVlc3RDYWxsYmFjayk6IFVwZGF0ZSBNaW5pQnJvd3NlciB0byB1c2UgdGhlIG5ldworICAg
ICAgICBmdW5jdGlvbiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcigpLgor
CiAyMDEzLTA0LTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSByZXN0IG9mIFNWR19ET01fT0JKQ19CSU5ESU5HUwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMKaW5kZXggMzdjOTJjMTZkZDZlNTBjMjQyM2JkYjI5MjE5NWY5YmNjMGZmZWE5Ny4uNDU5MmQ3
NmJiOGQ1ZmJjNGY1M2ViODc1NjgyMDY5MDlhOTBjYmNhYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBA
IC0zMSw5ICszMSwyMCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
d2Via2l0Mi5oPgogCisjZGVmaW5lIE1JTklfQlJPV1NFUl9FUlJPUiAobWluaUJyb3dzZXJFcnJv
clF1YXJrKCkpCisKIHN0YXRpYyBjb25zdCBnY2hhciAqKnVyaUFyZ3VtZW50cyA9IE5VTEw7CiBz
dGF0aWMgY29uc3QgY2hhciAqbWluaUJyb3dzZXJBYm91dFNjaGVtZSA9ICJtaW5pYnJvd3Nlci1h
Ym91dCI7CiAKK3R5cGVkZWYgZW51bSB7CisgICAgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURf
QUJPVVRfUEFUSAorfSBNaW5pQnJvd3NlckVycm9yOworCitzdGF0aWMgR1F1YXJrIG1pbmlCcm93
c2VyRXJyb3JRdWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdHJpbmcoIm1pbmli
cm93c2VyLXF1YXJrIik7Cit9CisKIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChjb25zdCBj
aGFyICpmaWxlbmFtZSkKIHsKICAgICBHRmlsZSAqZ2ZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9jb21t
YW5kbGluZV9hcmcoZmlsZW5hbWUpOwpAQCAtMjA2LDIxICsyMTcsMjQgQEAgYWJvdXRVUklTY2hl
bWVSZXF1ZXN0Q2FsbGJhY2soV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVxdWVzdCwgZ3BvaW50
ZXIgdXNlckRhdGEKICAgICBnc2l6ZSBzdHJlYW1MZW5ndGg7CiAgICAgY29uc3QgZ2NoYXIgKnBh
dGg7CiAgICAgZ2NoYXIgKmNvbnRlbnRzOworICAgIEdFcnJvciAqZXJyb3I7CiAKICAgICBwYXRo
ID0gd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0aChyZXF1ZXN0KTsKLSAgICBpZiAo
IWdfc3RyY21wMChwYXRoLCAibWluaWJyb3dzZXIiKSkKKyAgICBpZiAoIWdfc3RyY21wMChwYXRo
LCAibWluaWJyb3dzZXIiKSkgewogICAgICAgICBjb250ZW50cyA9IGdfc3RyZHVwX3ByaW50Zigi
PGh0bWw+PGJvZHk+PGgxPldlYktpdEdUSysgTWluaUJyb3dzZXI8L2gxPjxwPlRoZSBXZWJLaXQy
IHRlc3QgYnJvd3NlciBvZiB0aGUgR1RLKyBwb3J0LjwvcD48cD5XZWJLaXQgdmVyc2lvbjogJWQu
JWQuJWQ8L3A+PC9ib2R5PjwvaHRtbD4iLAogICAgICAgICAgICAgd2Via2l0X2dldF9tYWpvcl92
ZXJzaW9uKCksCiAgICAgICAgICAgICB3ZWJraXRfZ2V0X21pbm9yX3ZlcnNpb24oKSwKICAgICAg
ICAgICAgIHdlYmtpdF9nZXRfbWljcm9fdmVyc2lvbigpKTsKLSAgICBlbHNlCi0gICAgICAgIGNv
bnRlbnRzID0gZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48Ym9keT48cD5JbnZhbGlkIGFib3V0OiVz
IHBhZ2UuPC9wPjwvYm9keT48L2h0bWw+IiwgcGF0aCk7Ci0KLSAgICBzdHJlYW1MZW5ndGggPSBz
dHJsZW4oY29udGVudHMpOwotICAgIHN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdf
ZnJvbV9kYXRhKGNvbnRlbnRzLCBzdHJlYW1MZW5ndGgsIGdfZnJlZSk7Ci0KLSAgICB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaChyZXF1ZXN0LCBzdHJlYW0sIHN0cmVhbUxlbmd0aCwg
InRleHQvaHRtbCIpOwotICAgIGdfb2JqZWN0X3VucmVmKHN0cmVhbSk7CisgICAgICAgIHN0cmVh
bUxlbmd0aCA9IHN0cmxlbihjb250ZW50cyk7CisgICAgICAgIHN0cmVhbSA9IGdfbWVtb3J5X2lu
cHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGNvbnRlbnRzLCBzdHJlYW1MZW5ndGgsIGdfZnJlZSk7
CisKKyAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgc3Ry
ZWFtLCBzdHJlYW1MZW5ndGgsICJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYo
c3RyZWFtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvciA9IGdfZXJyb3JfbmV3KE1JTklf
QlJPV1NFUl9FUlJPUiwgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURfQUJPVVRfUEFUSCwgIklu
dmFsaWQgYWJvdXQ6JXMgcGFnZS4iLCBwYXRoKTsKKyAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdCwgZXJyb3IpOworICAgICAgICBnX2Vycm9yX2Zy
ZWUoZXJyb3IpOworICAgIH0KIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>