<?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>120160</bug_id>
          
          <creation_ts>2013-08-22 06:20:59 -0700</creation_ts>
          <short_desc>[GTK] Add WebKit2 API for TLS errors</short_desc>
          <delta_ts>2013-10-30 01:10:55 -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>
          <dependson>118520</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Holt">brian.holt</reporter>
          <assigned_to name="Brian Holt">brian.holt</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mario</cc>
    
    <cc>mathstuf</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>919837</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-08-22 06:20:59 -0700</bug_when>
    <thetext>Add support to deal with SSL errors through the WebKit2 API.

See https://bugs.webkit.org/show_bug.cgi?id=90267 for details of the underlying SOUP implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931377</commentid>
    <comment_count>1</comment_count>
      <attachid>212175</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-09-20 09:01:15 -0700</bug_when>
    <thetext>Created attachment 212175
WIP Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931379</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-20 09:02:34 -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>931382</commentid>
    <comment_count>3</comment_count>
      <attachid>212175</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-20 09:07:43 -0700</bug_when>
    <thetext>Comment on attachment 212175
WIP Patch v1

Attachment 212175 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1865193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932050</commentid>
    <comment_count>4</comment_count>
      <attachid>212175</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-23 00:04:45 -0700</bug_when>
    <thetext>Comment on attachment 212175
WIP Patch v1

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

&gt; Source/WebKit2/Shared/APIObject.h:110
&gt; +        TypeSSLPermissionRequest,

What do you need this for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932095</commentid>
    <comment_count>5</comment_count>
      <attachid>212175</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-23 03:01:18 -0700</bug_when>
    <thetext>Comment on attachment 212175
WIP Patch v1

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

I think we should use TLS instead of SSL in the class name, for consistency with glib but also with our current API where we expose TLSErrorsPolicy. I think it should be better documented somewhere that when you set the policy to ASK, the permission-request signal is emitted with a TLS permission request object. I have doubts about the loading progress, but I think the current load should always finish, and a new load should be started when the request is allowed.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:39
&gt; + * of an untrusted certificate.

You should explain here that this is only used when the policy is ASK.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:40
&gt; + */

Since: 2.4

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

This should use WebKit coding style, since it&apos;s private and it&apos;s not generated.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:67
&gt; +    webkitWebContextGetContext(webkit_web_view_get_context(priv-&gt;webView))-&gt;allowSpecificHTTPSCertificateForHost(priv-&gt;certificateInfo, priv-&gt;host);

Add a new private method to WebKitWebContext instead, webkitWebContextAllowSpecificHTTPSCertificateForHost(), it makes it easier to read. I think it&apos;s better to create the WebCertificateInfo here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:68
&gt; +    webkitWebViewEmitLoadChanged(priv-&gt;webView, WEBKIT_LOAD_FINISHED);

This should not change the load progress in my opinion.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:82
&gt; +    webkitWebViewLoadFailed(priv-&gt;webView, WEBKIT_LOAD_STARTED, priv-&gt;failingURI, priv-&gt;error);

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.h:61
&gt; +

We should add API to return TLSErrors and TLSCertificate at least, and probably also the host

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:26
&gt; +#include &quot;WebKitSSLPermissionRequestPrivate.h&quot;

Why is this needed here if you are not adding new code to this file?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:200
&gt; -    priv-&gt;tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_IGNORE;
&gt; +    priv-&gt;tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_ASK;

Why are you changing the default? How does the tls-errors-policy unit tests pass after this?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:68
&gt; + * @WEBKIT_TLS_ERRORS_POLICY_ASK: Ask for permission to load the page on a TLS error.

Since 2.4

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1507
&gt; +    } else if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_ASK) {

Do not use an else after a return.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1509
&gt; +        RefPtr&lt;WebCertificateInfo&gt; webCertificateInfo = WebCertificateInfo::create(platformCerticateInfo);
&gt; +        GRefPtr&lt;WebKitSSLPermissionRequest&gt; request = adoptGRef(webkitSSLPermissionRequestCreate(webView, webCertificateInfo.get(), &quot;&quot;, failingURI, error));

I don&apos;t understand this change, why not just creating the request with certificate flags + certificate instead of allocating this WebCertificateInfo here?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1511
&gt; +        webkitWebViewMakePermissionRequest(webView, WEBKIT_PERMISSION_REQUEST(request.get()));
&gt; +        return;

I think we should finish the load here. The difference is that when policy is ask, the user can show a SSL errors page. So a new load for the error page might happen. The error page would have a button to allow the user to ignore the errors and load the page anyway, but in this case, we call allow() to send the message to allow the certificate for the given host, and then we load again, so it&apos;s actually a new load. This is not like HTTS auth.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:31
&gt; +static const char SSLExpectedSuccessTitle[] = &quot;WebKit2Gtk+ Authentication test&quot;;

Authentication test?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:152
&gt; +        g_signal_connect(m_webView, &quot;permission-request&quot;, G_CALLBACK(permissionRequested), this);

You should also disconnect the signal in the destructor.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:180
&gt; +    g_assert(test-&gt;m_loadFailed);

I think the load should only fail when policy is FAIL, otherwise we would only have IGNORE and ASK.

&gt; Source/WebKit2/UIProcess/WebContext.cpp:1099
&gt; +    sendToAllProcesses(Messages::WebProcess::AllowSpecificHTTPSCertificateForHost(certificate-&gt;platformCertificateInfo(), host));

I think this should be soup specific, since you are implementing the message receiver in WebProcessSoup.cpp only

&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:95
&gt; +#if !ENABLE(NETWORK_PROCESS)
&gt; +    AllowSpecificHTTPSCertificateForHost(WebKit::PlatformCertificateInfo certificate, WTF::String host)
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932096</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-23 03:02:20 -0700</bug_when>
    <thetext>Adding WebKit2 owners for the cross-platforms changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932152</commentid>
    <comment_count>7</comment_count>
      <attachid>212175</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-09-23 08:33:39 -0700</bug_when>
    <thetext>Comment on attachment 212175
WIP Patch v1

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

Thanks for the comments, its been very helpful.  This was a first WIP patch to check whether my proposal was broadly correct and it seems that with the exception of the load handling it was, so I will shortly be uploading a new patch to address the comments.

&gt;&gt; Source/WebKit2/Shared/APIObject.h:110
&gt;&gt; +        TypeSSLPermissionRequest,
&gt; 
&gt; What do you need this for?

I don&apos;t, good catch.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:39
&gt;&gt; + * of an untrusted certificate.
&gt; 
&gt; You should explain here that this is only used when the policy is ASK.

Sure.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:42
&gt;&gt; +static void webkit_permission_request_interface_init(WebKitPermissionRequestIface*);
&gt; 
&gt; This should use WebKit coding style, since it&apos;s private and it&apos;s not generated.

Ok. FWIW I copied this from GeolocationPermissionRequest.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:67
&gt;&gt; +    webkitWebContextGetContext(webkit_web_view_get_context(priv-&gt;webView))-&gt;allowSpecificHTTPSCertificateForHost(priv-&gt;certificateInfo, priv-&gt;host);
&gt; 
&gt; Add a new private method to WebKitWebContext instead, webkitWebContextAllowSpecificHTTPSCertificateForHost(), it makes it easier to read. I think it&apos;s better to create the WebCertificateInfo here.

ok

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.cpp:68
&gt;&gt; +    webkitWebViewEmitLoadChanged(priv-&gt;webView, WEBKIT_LOAD_FINISHED);
&gt; 
&gt; This should not change the load progress in my opinion.

Ok.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSSLPermissionRequest.h:61
&gt;&gt; +
&gt; 
&gt; We should add API to return TLSErrors and TLSCertificate at least, and probably also the host

Sure, will do that in the next round.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:26
&gt;&gt; +#include &quot;WebKitSSLPermissionRequestPrivate.h&quot;
&gt; 
&gt; Why is this needed here if you are not adding new code to this file?

You&apos;re right, it&apos;s not necessary.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:200
&gt;&gt; +    priv-&gt;tlsErrorsPolicy = WEBKIT_TLS_ERRORS_POLICY_ASK;
&gt; 
&gt; Why are you changing the default? How does the tls-errors-policy unit tests pass after this?

Oops, that was test code (while I was developing) that slipped in.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1507
&gt;&gt; +    } else if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_ASK) {
&gt; 
&gt; Do not use an else after a return.

Ok, will refactor that.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1509
&gt;&gt; +        GRefPtr&lt;WebKitSSLPermissionRequest&gt; request = adoptGRef(webkitSSLPermissionRequestCreate(webView, webCertificateInfo.get(), &quot;&quot;, failingURI, error));
&gt; 
&gt; I don&apos;t understand this change, why not just creating the request with certificate flags + certificate instead of allocating this WebCertificateInfo here?

It definitely wasn&apos;t my first choice, I would have done exactly what you suggested except that there is no way of constructing a WebKit::PlatformCertificateInfo (which is part of the message passed to the WebProcess) from the certificate and the flags, but it is possible to get both certificate and flags, and also the PlatformCertificateInfo from WebCertificateInfo.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:31
&gt;&gt; +static const char SSLExpectedSuccessTitle[] = &quot;WebKit2Gtk+ Authentication test&quot;;
&gt; 
&gt; Authentication test?

Copy/paste :/

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:152
&gt;&gt; +        g_signal_connect(m_webView, &quot;permission-request&quot;, G_CALLBACK(permissionRequested), this);
&gt; 
&gt; You should also disconnect the signal in the destructor.

Ok.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:180
&gt;&gt; +    g_assert(test-&gt;m_loadFailed);
&gt; 
&gt; I think the load should only fail when policy is FAIL, otherwise we would only have IGNORE and ASK.

Fair point.

&gt;&gt; Source/WebKit2/UIProcess/WebContext.cpp:1099
&gt;&gt; +    sendToAllProcesses(Messages::WebProcess::AllowSpecificHTTPSCertificateForHost(certificate-&gt;platformCertificateInfo(), host));
&gt; 
&gt; I think this should be soup specific, since you are implementing the message receiver in WebProcessSoup.cpp only

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935421</commentid>
    <comment_count>8</comment_count>
      <attachid>213171</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-02 09:56:52 -0700</bug_when>
    <thetext>Created attachment 213171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935764</commentid>
    <comment_count>9</comment_count>
      <attachid>213171</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-03 06:48:52 -0700</bug_when>
    <thetext>Comment on attachment 213171
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp:61
&gt; +        PlatformCertificateInfo certificateInfo(resourceError);
&gt; +        webkitWebViewLoadFailedWithTLSErrors(WEBKIT_WEB_VIEW(clientInfo), resourceError.failingURL().utf8().data(), webError.get(), certificateInfo);

I still don&apos;t see the point of using this PlatformCertificateInfo object here instead of passing certificate + flags like we currently do. If we need to add new API to PlatformCertificateInfo to create it with certificate + flags we can always add it. In any case, hopefully this is going to change soon, see bug #118520.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:44
&gt; + * the permission-request signal is emitted with this WebKitTLSPermissionRequest.

#WebKitWebView::permission-request

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:99
&gt; +    request-&gt;priv-&gt;webView = webView;

It seems we only want the view to get its web context, why not passing the context instead since it&apos;s what we actually want?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:118
&gt; +GTlsCertificate* webkit_tls_permission_request_get_certificate(WebKitTLSPermissionRequest *request)

This should be documented.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:125
&gt; +GTlsCertificateFlags webkit_tls_permission_request_get_tls_errors(WebKitTLSPermissionRequest *request)

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:132
&gt; +const gchar* webkit_tls_permission_request_get_host(WebKitTLSPermissionRequest *request)

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.h:61
&gt; +webkit_tls_permission_request_get_type (void);

Parameters should be lined up with all other methods.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:908
&gt; +    context-&gt;priv-&gt;context-&gt;allowSpecificHTTPSCertificateForHost(certificate, String(host));

I think we should allocate the WebCertificateInfo here, right before using it. host is utf8, you should use String::fromUTF8() here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1522
&gt; +        WebCore::URL uri(ParsedURLString, String(failingURI));

failingURI is UTF8, you should use String::fromUTF8(). Or you could create a SoupURI for the given failingURI and pass soup_uri-&gt;host directly to avoid charset conversions.

&gt; Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt:869
&gt;  webkit_uri_scheme_request_get_scheme

You should also add the new type (webkit_tls_permission_request_get_type) to the file webkit2gtk.types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935765</commentid>
    <comment_count>10</comment_count>
      <attachid>213171</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-03 07:14:41 -0700</bug_when>
    <thetext>Comment on attachment 213171
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935828</commentid>
    <comment_count>11</comment_count>
      <attachid>213272</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-03 09:46:18 -0700</bug_when>
    <thetext>Created attachment 213272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936154</commentid>
    <comment_count>12</comment_count>
      <attachid>213272</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-04 03:07:28 -0700</bug_when>
    <thetext>Comment on attachment 213272
Patch

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

I&apos;m sorry I was not clear enough in previous reviews about the use of WebCertificateInfo and PlatformCertificateInfo. May only concern was about unnecessary allocating a WebCertificate object. Patch looks good to me, except for the minor details I commented and the lack of WebKitTLSRequest API test. It would be great if other GTK+ reviewers could review the public API and a WebKit2 owner the cross-platform changes.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:55
&gt; +    GTlsCertificateFlags tlsErrors;
&gt; +    GRefPtr&lt;GTlsCertificate&gt; certificate;

We could use a stack allocated PlatformCertificateInfo here and set the certificate/flags in the init, that way we don&apos;t need the new PlatformCertificateInfo constructor, but only the set methods added in bug #118520. May main concern was allocating the WebCertificate object here, because it&apos;s only used internally

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:74
&gt; +    webkitWebContextAllowSpecificHTTPSCertificateForHost(priv-&gt;context, priv-&gt;tlsErrors, priv-&gt;certificate.get(), priv-&gt;host.data());

Then you could pass the internal PlatformCertificateInfo here as a const reference

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:103
&gt; +    request-&gt;priv-&gt;tlsErrors = tlsErrors;
&gt; +    request-&gt;priv-&gt;certificate = certificate;

Here you would call certificateInfo.setCertificate and  certificateInfo.setTLSErrors

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:125
&gt; + * Get the #GTlsCertificate certificate associated with this

the #GTlsCertificate certificate sounds a bit redundant

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequestPrivate.h:23
&gt; +#include &quot;WebCertificateInfo.h&quot;

You don&apos;t need this here anymore.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequestPrivate.h:26
&gt; +#include &quot;WebKitWebView.h&quot;

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:24
&gt; +#include &quot;PlatformCertificateInfo.h&quot;
&gt; +#include &quot;WebCertificateInfo.h&quot;

WebCertificateInfo.h already includes PlatformCertificateInfo.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1521
&gt; +        GOwnPtr&lt;SoupURI&gt; soup_uri(soup_uri_new(failingURI));

soup_uri -&gt; soupURI

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:206
&gt; +}

I have just realized we are not testing the WebKitPermissionRequest API here, you should check that get_certificate returns a valid certificate (and even that it&apos;s deleted when test finishes), that tls_errors returns the expected errors and get_host returns the expected host.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:273
&gt; +    // In this case the order of the tests does matter because tls-errors-policy tests the default policy.
&gt; +    SSLTest::add(&quot;WebKitWebView&quot;, &quot;tls-errors-policy&quot;, testTLSErrorsPolicy);

If any other test changes the default value, it should ensure that when the test finishes the value is set to the default again, so that it doesn&apos;t affect to other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936158</commentid>
    <comment_count>13</comment_count>
      <attachid>213272</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-04 03:19:27 -0700</bug_when>
    <thetext>Comment on attachment 213272
Patch

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

Thanks again for the review.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:55
&gt;&gt; +    GRefPtr&lt;GTlsCertificate&gt; certificate;
&gt; 
&gt; We could use a stack allocated PlatformCertificateInfo here and set the certificate/flags in the init, that way we don&apos;t need the new PlatformCertificateInfo constructor, but only the set methods added in bug #118520. May main concern was allocating the WebCertificate object here, because it&apos;s only used internally

Aha.  That makes sense, and I&apos;ll update the patch to that (and make it depend on #118520).

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:103
&gt;&gt; +    request-&gt;priv-&gt;certificate = certificate;
&gt; 
&gt; Here you would call certificateInfo.setCertificate and  certificateInfo.setTLSErrors

Ok, will do that

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequest.cpp:125
&gt;&gt; + * Get the #GTlsCertificate certificate associated with this
&gt; 
&gt; the #GTlsCertificate certificate sounds a bit redundant

sure

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTLSPermissionRequestPrivate.h:26
&gt;&gt; +#include &quot;WebKitWebView.h&quot;
&gt; 
&gt; Ditto.

Good catch

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:24
&gt;&gt; +#include &quot;WebCertificateInfo.h&quot;
&gt; 
&gt; WebCertificateInfo.h already includes PlatformCertificateInfo.h

ok

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:206
&gt;&gt; +}
&gt; 
&gt; I have just realized we are not testing the WebKitPermissionRequest API here, you should check that get_certificate returns a valid certificate (and even that it&apos;s deleted when test finishes), that tls_errors returns the expected errors and get_host returns the expected host.

Good point, sorry about that!

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:273
&gt;&gt; +    SSLTest::add(&quot;WebKitWebView&quot;, &quot;tls-errors-policy&quot;, testTLSErrorsPolicy);
&gt; 
&gt; If any other test changes the default value, it should ensure that when the test finishes the value is set to the default again, so that it doesn&apos;t affect to other tests.

Hrm.  Maybe I should improve on that comment by stating that we need to check the default policy first because once we&apos;ve allowed an exception for this host (127.0.0.1) it won&apos;t return a TLS error.  So the order will still matter (a bit like authentication success).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936177</commentid>
    <comment_count>14</comment_count>
      <attachid>213272</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-10-04 06:31:54 -0700</bug_when>
    <thetext>Comment on attachment 213272
Patch

So, here&apos;s my opinion after understanding how this works: the permission request APIs we currently have are also in a way actions - when you allow a geolocation request webcore will go ahead and provide proceed with obtaining the location, when you deny it, webcore will tell the backend it&apos;s denied, and the content will be able to show an error. I think it would be bad to reuse these methods with such a different meaning and requiring the API user to take a second action after using them.

So I think I would prefer if we add public API to WebContext to let the browser add specific certificates for a host (so the method allow is currently calling) and use a model that&apos;s more a notification than a permission request, which is more consistent with how this works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937059</commentid>
    <comment_count>15</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 08:34:29 -0700</bug_when>
    <thetext>Cross platform WK2 parts look fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937565</commentid>
    <comment_count>16</comment_count>
      <attachid>213695</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-08 10:04:54 -0700</bug_when>
    <thetext>Created attachment 213695
New Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937573</commentid>
    <comment_count>17</comment_count>
      <attachid>213695</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-08 10:11:30 -0700</bug_when>
    <thetext>Comment on attachment 213695
New Patch

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

&gt; Source/WebKit2/Shared/soup/PlatformCertificateInfo.h:52
&gt; +    void setCertificate(GTlsCertificate* certificate) {m_certificate = certificate; }

This is only while we&apos;re waiting for #118520 to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937831</commentid>
    <comment_count>18</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-09 01:06:24 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 213695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213695&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/soup/PlatformCertificateInfo.h:52
&gt; &gt; +    void setCertificate(GTlsCertificate* certificate) {m_certificate = certificate; }
&gt; 
&gt; This is only while we&apos;re waiting for #118520 to land.

Also, I only removed &quot;r?&quot; because of this, but I&apos;m still very interested in feedback and comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937854</commentid>
    <comment_count>19</comment_count>
      <attachid>213695</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-10-09 02:35:58 -0700</bug_when>
    <thetext>Comment on attachment 213695
New Patch

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

&gt; Source/WebKit2/Shared/soup/PlatformCertificateInfo.h:53
&gt; +    void setCertificate(GTlsCertificate* certificate) {m_certificate = certificate; }
&gt; +    void setTLSErrors(GTlsCertificateFlags tlsErrors) {m_tlsErrors = tlsErrors; }

In case it&apos;s not obvious, Brian just explained to me that all the changes to this file will go away after that patch for bug 118520 land.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:125
&gt; +    LOAD_FAILED_WITH_TLS_ERRORS,

I would move this up, together with LOAD_FAILED

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:631
&gt; +    webViewClass-&gt;load_failed_with_tls_errors = webkitWebViewLoadFailedWithTLSErrorsDefaultHandler;

I would probably move this up too together with the default handler of load-failed.

Also, I would rename the default handler to webkitWebViewLoadFailWithTLSErrors, for consistency with the naming of the default handler for that other signal (and also because introducing a new suffix here will be IMHO more confusing than helpful). BUT, this is probably not needed anyway if you get rid of this default handler (see below)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1435
&gt; +     * GTlsCertificateFlags and the host.  To allow an exception for this

GTlsCertificateFlags -&gt; #GTlsCertificateFlags

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1439
&gt; +     * The default signal handler frees the WebKitCertificateInfo object.

WebKitCertificateInfo -&gt; #WebKitCertificateInfo

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1446
&gt; +    signals[LOAD_FAILED_WITH_TLS_ERRORS] =

For consistency with my previous comments, I would move this up.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1563
&gt; +        WebKitCertificateInfo* info = webkit_certificate_info_new(tlsErrors, certificate, soupURI-&gt;host);
&gt; +        gboolean returnValue;
&gt; +        g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, info, &amp;returnValue);

I think you should create the WebKitCertificateInfo instance in the stack instead of the heap and then pass the reference to it, since that way neither the default handler that you have now (and that would disappear anyway) nor the specific handler an app might be providing would need to free the memory themselves. It will just get released after the call to g_signal_emit() finishes, when leaving the scope.

You probably have to move the definition of the struct from the cpp file to the private header.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:35
&gt; +static const char TLSSuccessHTMLString[] =
&gt; +    &quot;&lt;html&gt;&quot;
&gt; +    &quot;&lt;head&gt;&lt;title&gt;WebKit2Gtk+ TLS permission test&lt;/title&gt;&lt;/head&gt;&quot;
&gt; +    &quot;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;&quot;;

You can put this in a single line if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937862</commentid>
    <comment_count>20</comment_count>
      <attachid>213695</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-09 03:34:02 -0700</bug_when>
    <thetext>Comment on attachment 213695
New Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:23
&gt; +#include &quot;PlatformCertificateInfo.h&quot;

This is already included by WebKitCertificateInfoPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:32
&gt; +    _WebKitCertificateInfo(const PlatformCertificateInfo&amp; certificateInfo, const gchar* host)
&gt; +        : certificateInfo(certificateInfo)
&gt; +        , host(host)

I think WebKitCertificateInfo should simply wrap PlatformCertificateInfo, do we really need to keep the host in the WebKitCertificateInfo object?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:67
&gt; +WebKitCertificateInfo* webkit_certificate_info_new(GTlsCertificateFlags tlsErrors, GTlsCertificate *certificate, const gchar *host)

Why is this public? I don&apos;t think the user needs to create a WebKitCertificateInfo

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:113
&gt; + * webkit_certificate_info_get_certificate:

get_tls_certificate, maybe?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:819
&gt; +void webkit_web_context_allow_specific_tls_certificate(WebKitWebContext* context, WebKitCertificateInfo* info)

I would pass the host as a parameter here, and possibly rename it as something like webkit_web_context_allow_tls_certificate_for_host

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:69
&gt; + * @WEBKIT_TLS_ERRORS_POLICY_ASK: Ask for permission to load the page on a TLS error. Since 2.4

It&apos;s not exactly asking permission to load the page, because the page load finishes in any case. Maybe we should rename this as NOTIFY. Or maybe we don&apos;t even need a new policy for this, if we always emit the signal load-failed-with-tls-errors when load-failed, and if not handled we fallback to load-failed making the load fail. If handled, we just finish the load.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:631
&gt;&gt; +    webViewClass-&gt;load_failed_with_tls_errors = webkitWebViewLoadFailedWithTLSErrorsDefaultHandler;
&gt; 
&gt; I would probably move this up too together with the default handler of load-failed.
&gt; 
&gt; Also, I would rename the default handler to webkitWebViewLoadFailWithTLSErrors, for consistency with the naming of the default handler for that other signal (and also because introducing a new suffix here will be IMHO more confusing than helpful). BUT, this is probably not needed anyway if you get rid of this default handler (see below)

You can also get rid of the default handler by freeing the certificate info after emitting the signal.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1430
&gt; +     * @info: a #WebKitCertificateInfo

We could pass the host here as a signal argument.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1432
&gt; +     * Emitted when a tls error occurs during a load operation and the tls

tls -&gt; TLS

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1433
&gt; +     * policy is WEBKIT_TLS_ERRORS_POLICY_ASK. The @info object contains

WEBKIT_TLS_ERRORS_POLICY_ASK -&gt; %WEBKIT_TLS_ERRORS_POLICY_ASK

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1559
&gt; +    } else if (tlsErrorsPolicy == WEBKIT_TLS_ERRORS_POLICY_ASK) {

Do not use an else after a return;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1561
&gt; +        WebKitCertificateInfo* info = webkit_certificate_info_new(tlsErrors, certificate, soupURI-&gt;host);

You should use webkitCertificateInfoCreate here.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1563
&gt;&gt; +        g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, info, &amp;returnValue);
&gt; 
&gt; I think you should create the WebKitCertificateInfo instance in the stack instead of the heap and then pass the reference to it, since that way neither the default handler that you have now (and that would disappear anyway) nor the specific handler an app might be providing would need to free the memory themselves. It will just get released after the call to g_signal_emit() finishes, when leaving the scope.
&gt; 
&gt; You probably have to move the definition of the struct from the cpp file to the private header.

We should document in the signal api doc that to handle this asynchronously you should copy the given WebKitCertificateInfo (with webkit_certificate_info_copy()), we should not expect the user have to free the object unless it&apos;s copied. Using a stack allocated certificate info as Mario suggests, in case of handling this synchronously we would avoid a heap allocation here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:154
&gt; +    static gboolean runLoadFailedWithTlsErrorsCallback(WebKitWebView*, WebKitCertificateInfo* info, TLSErrorsTest* test)

Tls -&gt; TLS

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:160
&gt; +    void runLoadFailedWithTlsErrors(WebKitCertificateInfo* info)

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:166
&gt; +    WebKitCertificateInfo* waitForLoadFailedWithTlsErrors()

Ditto. waitUntilLoadFailedWithTlsErrors? for consistency with other waitUntil methods that we have.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:179
&gt; +    WebKitWebContext* context = webkit_web_view_get_context(test-&gt;m_webView);
&gt; +    webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_ASK);

Before changing the policy, we might also test that load-failed-with-tls-errors is not emitted.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:181
&gt; +    // Test the WebKitTLSPermissionRequest API

Nit: Finish the comment with a period.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:184
&gt; +    g_assert(webkit_certificate_info_get_certificate(info));

You could use G_IS_TLS_CERTIFICATE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937869</commentid>
    <comment_count>21</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-09 03:55:08 -0700</bug_when>
    <thetext>Thanks for all the comments, I&apos;ll do another patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937917</commentid>
    <comment_count>22</comment_count>
      <attachid>213777</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-09 07:51:26 -0700</bug_when>
    <thetext>Created attachment 213777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937939</commentid>
    <comment_count>23</comment_count>
      <attachid>213777</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-10-09 09:20:00 -0700</bug_when>
    <thetext>Comment on attachment 213777
Patch

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

I&apos;m mostly ok with this patch (regardless of the nitpicking), but at least Carlos should take a look to it anyway

&gt; Source/WebKit2/Shared/soup/PlatformCertificateInfo.h:53
&gt; +    void setCertificate(GTlsCertificate* certificate) {m_certificate = certificate; }
&gt; +    void setTLSErrors(GTlsCertificateFlags tlsErrors) {m_tlsErrors = tlsErrors; }

Missing blank after {

(Why doesn&apos;t the style checker pick this up?)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.h:28
&gt; +#include &lt;glib-object.h&gt;
&gt; +#include &lt;gio/gio.h&gt;

Wrong alphabetical order

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:854
&gt; +     * @host: the host on whch the error occurred

whch -&gt; which

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:858
&gt; +     * and the #GTlsCertificateFlags.To allow an exception for this certificate

.To -&gt; &quot;. To&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:35
&gt; +static const char TLSSuccessHTMLString[] =
&gt; +    &quot;&lt;html&gt;&quot;
&gt; +    &quot;&lt;head&gt;&lt;title&gt;WebKit2Gtk+ TLS permission test&lt;/title&gt;&lt;/head&gt;&quot;
&gt; +    &quot;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;&quot;;

You like multiple lines, huh? :)

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:165
&gt; +        if (m_certificateInfo)
&gt; +            webkit_certificate_info_free(info);

free m_certificateInfo here

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:182
&gt; +static void testLoadFailedWithTlsErrors(TLSErrorsTest* test, gconstpointer)

testLoadFailedWithTlsErrors -&gt; testLoadFailedWithTLSErrors

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:278
&gt; +

Extra line unneeded

&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:87
&gt; +#if !ENABLE(NETWORK_PROCESS)
&gt; +#if USE(SOUP)

#if !ENABLE(NETWORK_PROCESS) &amp;&amp; USE(SOUP) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937941</commentid>
    <comment_count>24</comment_count>
      <attachid>213777</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-10-09 09:25:01 -0700</bug_when>
    <thetext>Comment on attachment 213777
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:87
&gt;&gt; +#if USE(SOUP)
&gt; 
&gt; #if !ENABLE(NETWORK_PROCESS) &amp;&amp; USE(SOUP) ?

It should be one because currently nested #if-s are not supported by the generate-message-receiver.py. There is patch waiting to signal such error: https://bugs.webkit.org/show_bug.cgi?id=121877 till correct handling of nested #if-s are implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938255</commentid>
    <comment_count>25</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-10 02:30:09 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; [...]
&gt; It should be one because currently nested #if-s are not supported by the generate-message-receiver.py. There is patch waiting to signal such error: https://bugs.webkit.org/show_bug.cgi?id=121877 till correct handling of nested #if-s are implemented.

Thanks for the link.  Strangely, the patch provided for TLS errors works and the unit test passes, so I&apos;m a bit surprised to hear that nested #if-s are not supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938263</commentid>
    <comment_count>26</comment_count>
      <attachid>213777</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-10 03:30:43 -0700</bug_when>
    <thetext>Comment on attachment 213777
Patch

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

API looks good to me, except what I comment below about the load-failed and load-failed-with-tls-errors signals. Gustavo?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:32
&gt; + * @See_also: #WebKitWebView

Add #WebKitWebContext here too, since it uses the certificate info.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:35
&gt; + * WebKit will fire a #WebKitWebView::load-failed-with-tls-errors with a

a #WebKitWebView::load-failed-with-tls-errors signal

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfo.cpp:39
&gt; + * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
&gt; + * with #WebKitCertificateInfo::webkit_certificate_info_copy.

#WebKitCertificateInfo::webkit_certificate_info_copy -&gt; webkit_certificate_info_copy()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:862
&gt; +     * with #webkit_certificate_info_copy.

#webkit_certificate_info_copy -&gt; webkit_certificate_info_copy() and return %TRUE.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1550
&gt;          webkitWebViewLoadFailed(webView, WEBKIT_LOAD_STARTED, failingURI, error);

This will emit the failed signal. I think this should be the fallback when the new signal is not handled. Imagine an application handling both failed and filed-with-tls-errors, if we emit failed first, the app doesn&apos;t know that with-tls will be mitted later, and will show an error page with the error. And apps handling with-tls-errors, are not interested in handling the error again in load-failed. This is the way we avoid the new policy.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1555
&gt; +        PlatformCertificateInfo certificateInfo;
&gt; +        certificateInfo.setCertificate(certificate);
&gt; +        certificateInfo.setTLSErrors(tlsErrors);

For this particular case I think it makes sense to add a PlatformCertificateInfo constructor taking certificate + tls errors.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1556
&gt; +        WebKitCertificateInfo info(certificateInfo);

Or maybe it would be better to add a WebKitCertificateInfo taking the certificate + flags instead. That way we avoid creating the temporary PlatformCertificateInfo here. The constructor would call setCertificate and setTLSErrors on its PlatformCertificateInfo

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:249
&gt; +    gboolean   (* load_failed_with_tls_errors) (WebKitWebView               *web_view,
&gt; +                                                WebKitCertificateInfo       *info);

The host parameter is missing here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:174
&gt; +        return;

Useless return here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:179
&gt; +

Extra line here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:191
&gt; +    g_assert(G_IS_TLS_CERTIFICATE(webkit_certificate_info_get_tls_certificate(test-&gt;m_certificateInfo)));

Better add getters for certificate and host</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938305</commentid>
    <comment_count>27</comment_count>
      <attachid>213877</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-10 06:03:14 -0700</bug_when>
    <thetext>Created attachment 213877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938316</commentid>
    <comment_count>28</comment_count>
      <attachid>213877</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-10 06:37:19 -0700</bug_when>
    <thetext>Comment on attachment 213877
Patch

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

This looks much better, there&apos;s just still a minor issue with the signal emission. Note also that PlatformCertificateInfo will be renamed as CertificateInfo in bug #118520.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:31
&gt; +        : certificateInfo(tlsErrors, certificate)
&gt; +    {
&gt; +    }

I actually meant calling setCertificate and setTLSErrors here so that we don&apos;t need the new PlatformCertificateInfo constructor, but in any case the new constructor makes sense to me.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:859
&gt; +     * and this host use #webkit_web_context_allow_tls_certificate_for_host.

#webkit_web_context_allow_tls_certificate_for_host -&gt; webkit_web_context_allow_tls_certificate_for_host()

I guess missed this one in previous review, but the rule is the same, simply use foo() for functions. #Foo for classes and %FOO for enum values

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1556
&gt; +        gboolean returnValue;
&gt; +        if (g_signal_has_handler_pending(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, TRUE)) {
&gt; +            GOwnPtr&lt;SoupURI&gt; soupURI(soup_uri_new(failingURI));
&gt; +            WebKitCertificateInfo info(tlsErrors, certificate);
&gt; +            g_signal_emit(webView, signals[LOAD_FAILED_WITH_TLS_ERRORS], 0, &amp;info, soupURI-&gt;host, &amp;returnValue);
&gt; +        } else
&gt; +            g_signal_emit(webView, signals[LOAD_FAILED], 0, WEBKIT_LOAD_STARTED, failingURI, error, &amp;returnValue);

Emit the signal and check the return value. If return value is FALSE (unhandled) you emit the load-failed signal. I think the default value is FALSE in case nobody connects to the signal, but you can always add a default handler that simply returns FALSE to be extra sure.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:250
&gt; +                                                const gchar                 host);

Nit: host should be lined up with info, not with the *</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938320</commentid>
    <comment_count>29</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-10-10 06:51:36 -0700</bug_when>
    <thetext>Thanks for the heads up here. I&apos;ll take a whack at implementing this in uzbl tonight to see how it works out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938328</commentid>
    <comment_count>30</comment_count>
      <attachid>213881</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-10 07:15:51 -0700</bug_when>
    <thetext>Created attachment 213881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938777</commentid>
    <comment_count>31</comment_count>
      <attachid>213881</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-10-11 05:55:38 -0700</bug_when>
    <thetext>Comment on attachment 213881
Patch

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

I&apos;m happy with the API, bit worried with the slight change in behaviour at the emission site.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1555
&gt; +            g_signal_emit(webView, signals[LOAD_FAILED], 0, WEBKIT_LOAD_STARTED, failingURI, error, &amp;returnValue);

Why not keep using webkitWebViewLoadFailed here? It seems to do some useful work cancelling auth and setting IsLoading to false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938780</commentid>
    <comment_count>32</comment_count>
      <attachid>213881</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-11 06:06:52 -0700</bug_when>
    <thetext>Comment on attachment 213881
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1555
&gt;&gt; +            g_signal_emit(webView, signals[LOAD_FAILED], 0, WEBKIT_LOAD_STARTED, failingURI, error, &amp;returnValue);
&gt; 
&gt; Why not keep using webkitWebViewLoadFailed here? It seems to do some useful work cancelling auth and setting IsLoading to false.

Because the same work is already done at the beginning of this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939945</commentid>
    <comment_count>33</comment_count>
      <attachid>214254</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-15 06:31:31 -0700</bug_when>
    <thetext>Created attachment 214254
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939956</commentid>
    <comment_count>34</comment_count>
      <attachid>214254</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-15 07:12:11 -0700</bug_when>
    <thetext>Comment on attachment 214254
Rebased patch

Attachment 214254 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4097015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939958</commentid>
    <comment_count>35</comment_count>
      <attachid>214254</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-15 07:26:33 -0700</bug_when>
    <thetext>Comment on attachment 214254
Rebased patch

Attachment 214254 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4097016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939963</commentid>
    <comment_count>36</comment_count>
      <attachid>214258</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-15 07:46:43 -0700</bug_when>
    <thetext>Created attachment 214258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940328</commentid>
    <comment_count>37</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-16 01:54:04 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Thanks for the heads up here. I&apos;ll take a whack at implementing this in uzbl tonight to see how it works out.

Did you give it a try? Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940335</commentid>
    <comment_count>38</comment_count>
      <attachid>214258</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-10-16 02:28:17 -0700</bug_when>
    <thetext>Comment on attachment 214258
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:68
&gt; + * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors make the load finish with an error and a notification signal.

I think you should add a cross-rerefence to the signal here. #WebKitWebView::load-failed-with-tls-errors and make it explicit it&apos;s emitted *before* the load is finished. How about:

TLS errors will emit #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled, finish the load. In case the signal is not handled, #WebKitWebView::load-failed is emitted before the load finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940336</commentid>
    <comment_count>39</comment_count>
      <attachid>214258</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-16 02:32:37 -0700</bug_when>
    <thetext>Comment on attachment 214258
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:68
&gt;&gt; + * @WEBKIT_TLS_ERRORS_POLICY_FAIL: TLS errors make the load finish with an error and a notification signal.
&gt; 
&gt; I think you should add a cross-rerefence to the signal here. #WebKitWebView::load-failed-with-tls-errors and make it explicit it&apos;s emitted *before* the load is finished. How about:
&gt; 
&gt; TLS errors will emit #WebKitWebView::load-failed-with-tls-errors and, if the signal is handled, finish the load. In case the signal is not handled, #WebKitWebView::load-failed is emitted before the load finishes.

Good idea, I&apos;ll be  happy to do that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941107</commentid>
    <comment_count>40</comment_count>
      <attachid>214258</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-18 00:50:09 -0700</bug_when>
    <thetext>Comment on attachment 214258
Patch

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

&gt; Source/WebCore/platform/network/CertificateInfo.h:47
&gt; +    explicit CertificateInfo(GTlsCertificateFlags, GTlsCertificate*);

I think it would be better to pass the certificate as a first argument instead. That way if we eventually use the CertificateInfo to wrap a certificate with no tls errors, we could make the flags argument optional by giving it a default value of 0 (which means no errors)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:28
&gt; +    _WebKitCertificateInfo(GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate)

And we might change the order here too

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:861
&gt; +     *

We should also document here what happens when the user returns TRUE/FALSE (load finishes/load-failed is emitted and load finishes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941145</commentid>
    <comment_count>41</comment_count>
      <attachid>214557</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-18 04:08:17 -0700</bug_when>
    <thetext>Created attachment 214557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941146</commentid>
    <comment_count>42</comment_count>
      <attachid>214557</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-18 04:14:43 -0700</bug_when>
    <thetext>Comment on attachment 214557
Patch for landing

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:863
&gt; +     * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
&gt; +     * with webkit_certificate_info_copy() and return %TRUE in which case the load

I would use a different paragraph, because the return value has nothing to do with whether the signal is handled synchronously or asynchronously. I mean TRUE and FALSE will do the same in both cases.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:864
&gt; +     * will finish. If %FALSE is returned, #load-failed is emitted and and the

#load-failed -&gt; #WebKitWebView::load-failed

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:866
&gt; +     *

Remove this extra line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941152</commentid>
    <comment_count>43</comment_count>
      <attachid>214557</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-18 04:44:48 -0700</bug_when>
    <thetext>Comment on attachment 214557
Patch for landing

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:863
&gt;&gt; +     * with webkit_certificate_info_copy() and return %TRUE in which case the load
&gt; 
&gt; I would use a different paragraph, because the return value has nothing to do with whether the signal is handled synchronously or asynchronously. I mean TRUE and FALSE will do the same in both cases.

What about:

     * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
     * with webkit_certificate_info_copy() and return %TRUE.
     *
     * If %FALSE is returned, #WebKitWebView::load-failed will be emitted. The load
     * will finish regardless of the returned value.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:864
&gt;&gt; +     * will finish. If %FALSE is returned, #load-failed is emitted and and the
&gt; 
&gt; #load-failed -&gt; #WebKitWebView::load-failed

Ah, I didn&apos;t realise that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941788</commentid>
    <comment_count>44</comment_count>
      <attachid>214720</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-21 02:50:16 -0700</bug_when>
    <thetext>Created attachment 214720
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941843</commentid>
    <comment_count>45</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-21 07:52:51 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 214557 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214557&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:863
&gt; [...]
&gt; 
&gt; What about:
&gt; 
&gt;      * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
&gt;      * with webkit_certificate_info_copy() and return %TRUE.
&gt;      *
&gt;      * If %FALSE is returned, #WebKitWebView::load-failed will be emitted. The load
&gt;      * will finish regardless of the returned value.
&gt; 

I didn&apos;t properly address the point that handling this signal asynchronously has nothing to do with the load.  This proposed text should be clearer: 

     * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
     * with webkit_certificate_info_copy().
     *
     * If %FALSE is returned, #WebKitWebView::load-failed will be emitted. The load
     * will finish regardless of the returned value, emitting #WebKitWebView::load-changed
     * with %WEBKIT_LOAD_FINISHED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941853</commentid>
    <comment_count>46</comment_count>
      <attachid>214557</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-10-21 08:23:57 -0700</bug_when>
    <thetext>Comment on attachment 214557
Patch for landing

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:863
&gt;&gt;&gt;&gt; +     * with webkit_certificate_info_copy() and return %TRUE in which case the load
&gt;&gt;&gt; 
&gt;&gt;&gt; I would use a different paragraph, because the return value has nothing to do with whether the signal is handled synchronously or asynchronously. I mean TRUE and FALSE will do the same in both cases.
&gt;&gt; 
&gt;&gt; What about:
&gt;&gt; 
&gt;&gt;      * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
&gt;&gt;      * with webkit_certificate_info_copy() and return %TRUE.
&gt;&gt;      *
&gt;&gt;      * If %FALSE is returned, #WebKitWebView::load-failed will be emitted. The load
&gt;&gt;      * will finish regardless of the returned value.
&gt; 
&gt; I didn&apos;t properly address the point that handling this signal asynchronously has nothing to do with the load.  This proposed text should be clearer: 
&gt; 
&gt;      * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
&gt;      * with webkit_certificate_info_copy().
&gt;      *
&gt;      * If %FALSE is returned, #WebKitWebView::load-failed will be emitted. The load
&gt;      * will finish regardless of the returned value, emitting #WebKitWebView::load-changed
&gt;      * with %WEBKIT_LOAD_FINISHED.

What about this? (first part is the same):

     * To handle this signal asynchronously you should copy the #WebKitCertificateInfo
     * with webkit_certificate_info_copy().
     *
     * If the signal is not handled or %FALSE is returned in the callback, 
     * #WebKitWebView::load-failed will be emitted too. 
     *
     * Finally, since a load error causes the load operation to finish, the signal
     * WebKitWebView::load-changed will always be emitted with
     * %WEBKIT_LOAD_FINISHED event right after this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942191</commentid>
    <comment_count>47</comment_count>
      <attachid>214720</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-22 01:43:09 -0700</bug_when>
    <thetext>Comment on attachment 214720
Patch for landing

I think we have iterated enough here. Feel free to improve the documentation in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942193</commentid>
    <comment_count>48</comment_count>
      <attachid>214720</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 02:07:54 -0700</bug_when>
    <thetext>Comment on attachment 214720
Patch for landing

Clearing flags on attachment: 214720

Committed r157781: &lt;http://trac.webkit.org/changeset/157781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942194</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 02:08:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942602</commentid>
    <comment_count>50</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-23 00:11:13 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 214720 [details])
&gt; Clearing flags on attachment: 214720
&gt; 
&gt; Committed r157781: &lt;http://trac.webkit.org/changeset/157781&gt;

Reopen, because the base of this patch was rolled out 
by Anders and the GTK build is now broken. :(

See https://bugs.webkit.org/show_bug.cgi?id=118520 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942622</commentid>
    <comment_count>51</comment_count>
      <attachid>214939</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-10-23 01:56:19 -0700</bug_when>
    <thetext>Created attachment 214939
Revert CertificateInfo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942625</commentid>
    <comment_count>52</comment_count>
      <attachid>214939</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-10-23 02:05:32 -0700</bug_when>
    <thetext>Comment on attachment 214939
Revert CertificateInfo

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

Looks good to me. I&apos;ll land it manually so I can fix the small typo in the ChangeLog

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Revert back to using PlatformCertificateInfo folloing the rollout

folloing -&gt; following</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942626</commentid>
    <comment_count>53</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-10-23 02:16:12 -0700</bug_when>
    <thetext>Committed r157853: &lt;http://trac.webkit.org/changeset/157853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944745</commentid>
    <comment_count>54</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-10-29 20:35:28 -0700</bug_when>
    <thetext>One question: shouldn&apos;t the &apos;host&apos; parameter on the &quot;load-failed-with-tls-errors&quot; signal be a const gchar *?

I&apos;m also seeing that GTlsCertificate is kind of bare and only gives a PEM string that needs to be manually pulled apart, but that isn&apos;t webkit&apos;s problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944751</commentid>
    <comment_count>55</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-10-29 20:57:46 -0700</bug_when>
    <thetext>Also, it looks like webkit_web_context_allow_tls_certificate_for_host is missing @since 2.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944814</commentid>
    <comment_count>56</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-30 01:10:02 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; One question: shouldn&apos;t the &apos;host&apos; parameter on the &quot;load-failed-with-tls-errors&quot; signal be a const gchar *?

It&apos;s const gchar *. It&apos;s gtk-doc that doesn&apos;t use the const in the generated doc, probably because it can&apos;t know it. When defining the signal you pass a GType, G_TYPE_STRING in this case.

&gt; I&apos;m also seeing that GTlsCertificate is kind of bare and only gives a PEM string that needs to be manually pulled apart, but that isn&apos;t webkit&apos;s problem.

Nothing we can do in WebKit, fee free to file a bug report in GNOME bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944816</commentid>
    <comment_count>57</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-30 01:10:55 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; Also, it looks like webkit_web_context_allow_tls_certificate_for_host is missing @since 2.4.

Please, don&apos;t reuse this bug for new issues, I&apos;ve already opened bug #123499 with the trivial patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212175</attachid>
            <date>2013-09-20 09:01:15 -0700</date>
            <delta_ts>2013-10-02 09:56:45 -0700</delta_ts>
            <desc>WIP Patch v1</desc>
            <filename>bug-120160-20130920170210.patch</filename>
            <type>text/plain</type>
            <size>29713</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI5YzI0MTQwYjM4ODg1
ZjFmNzAxYTljOGRmNmY5YTY1ZmE1M2VjZS4uYTlmMTJlYjA0ODM1OTVlOTQ5OTAyMmJhODFjNjBh
NTI3MzFiM2U1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA5LTIwICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFNTTCBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgU1NMIGVy
cm9ycy4gVGhpcyBpbmNsdWRlcyBhIG5ldworICAgICAgICBwb2xpY3kgZW51bWVyYXRpb24gdG8g
YWxsb3cgdXNlcnMgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpc2ggdG8gYmUKKyAgICAgICAgYXNr
ZWQgaWYgdGhlcmUgaXMgYW4gU1NMIGVycm9yLCBhbmQgYSBuZXcgbWVzc2FnZSB0byB0aGUKKyAg
ICAgICAgV2ViUHJvY2VzcyB0byBhZGQgYW4gZXhjZXB0aW9uIGZvciBhIHNwZWNpZmljIGNlcnRp
ZmljYXRlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0
Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0QWxsb3cpOgorICAgICAgICAod2Via2l0U1NMUGVy
bWlzc2lvblJlcXVlc3REZW55KToKKyAgICAgICAgKHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3Rf
aW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0U1NMUGVybWlzc2lvblJlcXVlc3REaXNw
b3NlKToKKyAgICAgICAgKHdlYmtpdF9zc2xfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQp
OgorICAgICAgICAod2Via2l0U1NMUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVu
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6
CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0VtaXRMb2FkQ2hhbmdl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFNTTC5jcHA6CisgICAgICAgICh0ZXN0U1NMUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoaHR0cHNTZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KToKKwogMjAxMy0wOS0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW3drMl0gUkVHUkVTU0lPTiAocjE1NDY3Myk6
IFBERiBzY3JvbGxpbmcgbW92ZXMgdmVyeSBzbG93bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDU3NWVjMjdlMWVlOTFiMzRlMTk0MzJiZWYxMjFjYmY5ZGFkMWRjOTEuLjAyNDM1
MTE1NmU2MmIyZTM3M2Q2MjQyZTg4YTk0ODhiMTk1OTJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNzU2LDYgKzc1Niw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNz
aW9uUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
U0xQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VGV4dENoZWNrZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA2YTdhYTYxODNlOWUxZjU0YWRjMDAxNzM5YWVlOTc0Y2VkMGZjZGI0Li4zNThlYTc4MzM5
YmQxMDlkZDFjZjg4MmMyMmYwMDE2ZjJhYWVjNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMjAzLDYgKzIwMyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1By
aXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0
LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0LmgK
KyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRleHRDaGVja2VyLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFRleHRDaGVja2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKQEAgLTI4MCw2ICsyODMsNyBAQCBzZXQoV2ViS2l0Ml9JTlNUQUxM
RURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNj
cmlwdERpYWxvZy5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlNYW5hZ2VyLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U1NMUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aAppbmRleCA0NDFlMDVlOTg3ZjY3M2MyYzc0YTZjYzdhNzBlNGE3YzRlNDczMmY4Li5jMmI5OGRh
MWZhMmNlMzk0ZDUwNzdhYTUzNTQ2N2ZlMjUwZGRmMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlUGFnZUdyb3Vw
LAogICAgICAgICBUeXBlUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLAogICAgICAgICBUeXBlUHJlZmVy
ZW5jZXMsCisgICAgICAgIFR5cGVTU0xQZXJtaXNzaW9uUmVxdWVzdCwKICAgICAgICAgVHlwZVRl
eHRDaGVja2VyLAogICAgICAgICBUeXBlVmlicmF0aW9uLAogICAgICAgICBUeXBlVmlld3BvcnRB
dHRyaWJ1dGVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdExvYWRlckNsaWVudC5jcHAKaW5kZXggYzNjNGEyM2IyY2NmYWFjYzZjOWFiYTAyMzMw
ZDZlN2ZlNjRiNjkyYS4uODhkNzFiN2YzMGMyNDk4MWNiMjgwZGFmMjZiMzJmMzhlYzYyMGM4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRM
b2FkZXJDbGllbnQuY3BwCkBAIC01Nyw4ICs1Nyw4IEBAIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VFcnJvci5lcnJvckNvZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIGlmIChyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSB7Ci0gICAgICAg
IHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXRUJLSVRfV0VCX1ZJRVcoY2xp
ZW50SW5mbyksIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIHdlYkVy
cm9yLmdldCgpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+
KHJlc291cmNlRXJyb3IudGxzRXJyb3JzKCkpLCByZXNvdXJjZUVycm9yLmNlcnRpZmljYXRlKCkp
OworICAgICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8ocmVzb3Vy
Y2VFcnJvcik7CisgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhX
RUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0
ZjgoKS5kYXRhKCksIHdlYkVycm9yLmdldCgpLCBjZXJ0aWZpY2F0ZUluZm8pOwogICAgIH0gZWxz
ZQogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50
SW5mbyksIFdFQktJVF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0
ZjgoKS5kYXRhKCksIHdlYkVycm9yLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWUxNjc2NzFjNWZkNjA1MTI4MmZjNDIwZGQ3YTc1YTQ1N2UxZWFi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U1NMUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0U1NMUGVybWlzc2lvblJl
cXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFNTTFBl
cm1pc3Npb25SZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcGVybWlzc2lvbiByZXF1
ZXN0IGZvciBTU0wgZXJyb3JzCisgKiBAVGl0bGU6IFdlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0
CisgKiBAU2VlX2Fsc286ICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCwgI1dlYktpdFdlYlZpZXcK
KyAqCisgKiBXZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBm
b3IKKyAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBjb250aW51
ZSBuYXZpZ2F0aW9uCisgKiB0byBhIHdlYnNpdGUgd2hlbiB0aGVyZSB3ZXJlIFNTTCBlcnJvcnMs
IGZvciBleGFtcGxlIGJlY2F1c2UKKyAqIG9mIGFuIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZS4KKyAq
LworCitzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0
KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKKworc3RydWN0IF9XZWJLaXRTU0xQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUgeworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAg
V2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm87CisgICAgU3RyaW5nIGhvc3Q7Cisg
ICAgY29uc3QgY2hhciogZmFpbGluZ1VSSTsKKyAgICBHRXJyb3IqIGVycm9yOworICAgIGJvb2wg
bWFkZURlY2lzaW9uOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAgICBX
ZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X3NzbF9wZXJtaXNzaW9uX3JlcXVlc3Qs
IEdfVFlQRV9PQkpFQ1QsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9UWVBFX1BF
Uk1JU1NJT05fUkVRVUVTVCwgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5p
dCkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0
UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19TU0xf
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdFNTTFBlcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9TU0xfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpLT5wcml2OworCisgICAgLy8gT25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlm
IChwcml2LT5tYWRlRGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRDb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChwcml2LT53ZWJWaWV3
KSktPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChwcml2LT5jZXJ0aWZpY2F0
ZUluZm8sIHByaXYtPmhvc3QpOworICAgIHdlYmtpdFdlYlZpZXdFbWl0TG9hZENoYW5nZWQocHJp
di0+d2ViVmlldywgV0VCS0lUX0xPQURfRklOSVNIRUQpOworICAgIHByaXYtPm1hZGVEZWNpc2lv
biA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0RGVu
eShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoV0VCS0lU
X0lTX1NTTF9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0U1NMUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX1NTTF9QRVJNSVNTSU9OX1JFUVVF
U1QocmVxdWVzdCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBhIHRpbWUu
CisgICAgaWYgKHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Vi
a2l0V2ViVmlld0xvYWRGYWlsZWQocHJpdi0+d2ViVmlldywgV0VCS0lUX0xPQURfU1RBUlRFRCwg
cHJpdi0+ZmFpbGluZ1VSSSwgcHJpdi0+ZXJyb3IpOworICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJm
YWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjZSogaWZhY2UpCit7CisgICAgaWZh
Y2UtPmFsbG93ID0gd2Via2l0U1NMUGVybWlzc2lvblJlcXVlc3RBbGxvdzsKKyAgICBpZmFjZS0+
ZGVueSA9IHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0RGVueTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0U1NMUGVybWlzc2lvblJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICAvLyBEZWZhdWx0IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMg
ZGVueWluZyB0aGUgcmVxdWVzdC4KKyAgICB3ZWJraXRTU0xQZXJtaXNzaW9uUmVxdWVzdERlbnko
V0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfc3NsX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVj
dCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zc2xfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNz
X2luaXQoV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09i
amVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmpl
Y3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKK30K
KworV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdFNTTFBlcm1pc3Npb25SZXF1ZXN0
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlm
aWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdF
cnJvciAqZXJyb3IpCit7CisgICAgV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3QqIHNzbFBlcm1p
c3Npb25SZXF1ZXN0ID0gV0VCS0lUX1NTTF9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1NTTF9QRVJNSVNTSU9OX1JFUVVFU1QsIE5VTEwpKTsKKyAgICBzc2xQZXJt
aXNzaW9uUmVxdWVzdC0+cHJpdi0+d2ViVmlldyA9IHdlYlZpZXc7CisgICAgc3NsUGVybWlzc2lv
blJlcXVlc3QtPnByaXYtPmNlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsKKyAgICBz
c2xQZXJtaXNzaW9uUmVxdWVzdC0+cHJpdi0+aG9zdCA9IGhvc3Q7CisgICAgc3NsUGVybWlzc2lv
blJlcXVlc3QtPnByaXYtPmZhaWxpbmdVUkkgPSBmYWlsaW5nVVJJOworICAgIHNzbFBlcm1pc3Np
b25SZXF1ZXN0LT5wcml2LT5lcnJvciA9IGVycm9yOworICAgIHJldHVybiBzc2xQZXJtaXNzaW9u
UmVxdWVzdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzM3MzQw
OGJmZWVkZDI3NTNjYzZjNTE2NDQ3OTQ5Mzk5ZjUwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdC5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25s
eSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYK
KworI2lmbmRlZiBXZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdFNT
TFBlcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9TU0xfUEVSTUlTU0lPTl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9zc2xf
cGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9TU0xfUEVSTUlT
U0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1Qo
KG9iaiksIFdFQktJVF9UWVBFX1NTTF9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdFNTTFBlcm1p
c3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1NTTF9QRVJNSVNTSU9OX1JFUVVFU1RfQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZ
UEVfU1NMX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3RDbGFz
cykpCisjZGVmaW5lIFdFQktJVF9JU19TU0xfUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1NTTF9QRVJN
SVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfU1NMX1BFUk1JU1NJT05fUkVRVUVT
VF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
VFlQRV9TU0xfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1NTTF9QRVJNSVNT
SU9OX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfU1NMX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0U1NMUGVybWlz
c2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTU0xQZXJtaXNzaW9u
UmVxdWVzdCAgICAgICAgV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3RDbGFzcyAgIFdlYktpdFNTTFBlcm1pc3Npb25S
ZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlIFdlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJL
aXRTU0xQZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwg
cHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MgeworICAgIEdP
YmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDAp
ICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9zc2xfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NzRhOGM0YWY5
ZTA1OTBkMTFjNWFhMzZlNzc2YzM4NmI5MjYzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdFByaXZh
dGUuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcg
RWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFNTTFBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFNTTFBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0U1NMUGVybWlzc2lvblJlcXVlc3Qu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisKK1dlYktpdFNTTFBlcm1pc3Npb25SZXF1
ZXN0KiB3ZWJraXRTU0xQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm8qLCBjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiwgR0Vy
cm9yKik7CisKKyNlbmRpZiAvLyBXZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwCmluZGV4IDA4OTliODU2Mzg5NGE0MDA1YTEyODMxZjY1ZTNmOWViMmI2NzI4YzguLjdkYmVh
YjdhOWY4OWUzODYyMWYyNmNiOWNlZDljOTc3NmIwZWZlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIzLDYgKzIz
LDcgQEAKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0U1NMUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9w
ZXJ0aWVzUHJpdmF0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBkMmM4YmJkZjliNTQ0Y2ViNDUyMThmMDNl
OTM2ZTcyNTQwY2Y3ZDVlLi5hMWZlODk2Y2I2NGE3MjY3MjA3YmIwYjYxNDVlNjNhY2VmZmVhNjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBncG9pbnRlciBjcmVhdGVE
ZWZhdWx0V2ViQ29udGV4dChncG9pbnRlcikKICAgICBwcml2LT5jb250ZXh0ID0gV2ViQ29udGV4
dDo6Y3JlYXRlKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoaW5qZWN0ZWRCdW5kbGVGaWxlbmFt
ZSgpLmRhdGEoKSkpOwogICAgIHByaXYtPnJlcXVlc3RNYW5hZ2VyID0gd2ViQ29udGV4dC0+cHJp
di0+Y29udGV4dC0+c3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKTsKICAg
ICBwcml2LT5jb250ZXh0LT5zZXRDYWNoZU1vZGVsKENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nl
cik7Ci0gICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZ
X0lHTk9SRTsKKyAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExTX0VSUk9SU19Q
T0xJQ1lfQVNLOwogCiAgICAgYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQod2Vi
Q29udGV4dC5nZXQoKSk7CiAgICAgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQod2ViQ29u
dGV4dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggZGQzOGMxZDM3NWJlOTY1MGI5NGI4NTNmZDMxMTI4YWEy
NzM3YTZhZi4uMTNlMmMyNzgxYjYyZjBmNjc5N2RlNDRkNzkyYzNlMmEyMDhkN2IwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
aApAQCAtNjUsMTIgKzY1LDE0IEBAIHR5cGVkZWYgZW51bSB7CiAgKiBXZWJLaXRUTFNFcnJvcnNQ
b2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRTogSWdub3JlIFRMUyBl
cnJvcnMuCiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFr
ZSB0aGUgbG9hZCB0byBmaW5pc2ggd2l0aCBhbiBlcnJvci4KKyAqIEBXRUJLSVRfVExTX0VSUk9S
U19QT0xJQ1lfQVNLOiBBc2sgZm9yIHBlcm1pc3Npb24gdG8gbG9hZCB0aGUgcGFnZSBvbiBhIFRM
UyBlcnJvci4KICAqCiAgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgVExTIGVycm9y
cyBwb2xpY3kuCiAgKi8KIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRSwKLSAgICBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTAorICAgIFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9GQUlMLAorICAgIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9B
U0sKIH0gV2ViS2l0VExTRXJyb3JzUG9saWN5OwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZGQ1ZThkZWU4MzRk
MDhkMzczMGNhMzJlMDViZWQ0MDNjZjdlNTNhNS4uMjhjNmFhNjA3YjI3NDA5ZjJlYWI5NGNmNmNm
MzMzM2RjOTIxYzRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIyLDggKzIyLDYgQEAKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3LmgiCiAKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKLSNpbmNsdWRlICJQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mby5oIgotI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bURhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCkBAIC00Nyw2ICs0NSw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaCIKKyNpbmNsdWRl
ICJXZWJLaXRTU0xQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRT
Y3JpcHREaWFsb2dQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgpAQCAtMTQzMCw3ICsxNDI5LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld1NldElzTG9hZGluZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBib29sIGlzTG9hZGluZykKICAgICBnX29iamVjdF90aGF3X25vdGlmeShHX09CSkVDVCh3ZWJW
aWV3KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdFbWl0TG9hZENoYW5nZWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKK3ZvaWQgd2Vi
a2l0V2ViVmlld0VtaXRMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRM
b2FkRXZlbnQgbG9hZEV2ZW50KQogewogICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURf
U1RBUlRFRCkgewogICAgICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIHRy
dWUpOwpAQCAtMTQ5Nyw3ICsxNDk2LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9B
RF9GSU5JU0hFRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJy
b3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciAqZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRl
KiBjZXJ0aWZpY2F0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3Jz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAq
ZXJyb3IsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBwbGF0Zm9ybUNlcnRpY2F0ZUlu
Zm8pCiB7CiAgICAgd2Via2l0V2ViVmlld1NldElzTG9hZGluZyh3ZWJWaWV3LCBmYWxzZSk7CiAK
QEAgLTE1MDUsNiArMTUwNCwxMSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQogICAgIGlmICh0
bHNFcnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwpIHsKICAgICAg
ICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQod2ViVmlldywgV0VCS0lUX0xPQURfU1RBUlRFRCwg
ZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmICh0bHNF
cnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0FTSykgeworICAgICAgICBS
ZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZp
Y2F0ZUluZm86OmNyZWF0ZShwbGF0Zm9ybUNlcnRpY2F0ZUluZm8pOworICAgICAgICBHUmVmUHRy
PFdlYktpdFNTTFBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFNT
TFBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKHdlYlZpZXcsIHdlYkNlcnRpZmljYXRlSW5mby5nZXQo
KSwgIiIsIGZhaWxpbmdVUkksIGVycm9yKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVy
bWlzc2lvblJlcXVlc3Qod2ViVmlldywgV0VCS0lUX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0
LmdldCgpKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0KHdl
YlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdQcml2YXRlLmgKaW5kZXggZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJh
MS4uMjEyMzczOTYxYzg4ZTIzZDVjZTNjZGJmNTkyOTFiY2Q4MTQ0NDNlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCkBAIC0yNywxMyArMjcsMTUgQEAKICNpZm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAog
I2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlldy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordm9pZCB3ZWJraXRXZWJW
aWV3RW1pdExvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQpOwogdm9p
ZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVu
dCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRM
b2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwotdm9pZCB3ZWJraXRX
ZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIq
IGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2VydGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmlj
YXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRX
ZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiwgY29uc3QgV2ViS2l0OjpQ
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVk
TG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBkb3VibGUgZXN0aW1hdGVkTG9hZFByb2dyZXNz
KTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3Ry
aW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0V2ViVmlldyopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcApp
bmRleCBkYjZjY2M4NTIyZDE1MWNiOWM0OTVkOWQ0M2YzZTk2ZjY1MjUyYTZlLi40Yjk4ZmU1NmY1
NjAxNWI5NDg1ZjkyYTk5YjYwYzQ0MTZhYzk5OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcApAQCAtMjgsNiArMjgsMTYgQEAg
c3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtIdHRwU2VydmVyOwogCiBzdGF0aWMgY29uc3QgY2hh
ciogaW5kZXhIVE1MID0gIjxodG1sPjxib2R5PlRlc3RpbmcgV2ViS2l0MkdUSysgU1NMPC9ib2R5
PjwvaHRtbGw+IjsKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNlY3VyZUNvbnRlbnRIVE1MID0gIjxo
dG1sPjxzY3JpcHQgc3JjPVwiJXNcIj48L3NjcmlwdD48Ym9keT48cD5UZXh0ICsgaW1hZ2UgPGlt
ZyBzcmM9XCIlc1wiIGFsaWduPVwicmlnaHRcIi8+PC9wPjwvYm9keT48L2h0bWw+IjsKK3N0YXRp
YyBjb25zdCBjaGFyIFNTTEV4cGVjdGVkU3VjY2Vzc1RpdGxlW10gPSAiV2ViS2l0Mkd0aysgQXV0
aGVudGljYXRpb24gdGVzdCI7CitzdGF0aWMgY29uc3QgY2hhciBTU0xFeHBlY3RlZEZhaWx1cmVU
aXRsZVtdID0gIlVudHJ1c3RlZCBDb25uZWN0aW9uIjsKK3N0YXRpYyBjb25zdCBjaGFyIFNTTFN1
Y2Nlc3NIVE1MU3RyaW5nW10gPQorICAgICI8aHRtbD4iCisgICAgIjxoZWFkPjx0aXRsZT5XZWJL
aXQyR3RrKyBTU0wgdGVzdDwvdGl0bGU+PC9oZWFkPiIKKyAgICAiPGJvZHk+PC9ib2R5PjwvaHRt
bD4iOworc3RhdGljIGNvbnN0IGNoYXIgU1NMRmFpbHVyZUhUTUxTdHJpbmdbXSA9CisgICAgIjxo
dG1sPiIKKyAgICAiPGhlYWQ+PHRpdGxlPlVudHJ1c3RlZCBDb25uZWN0aW9uPC90aXRsZT48L2hl
YWQ+IgorICAgICI8Ym9keT48L2JvZHk+PC9odG1sPiI7CiAKIGNsYXNzIFNTTFRlc3Q6IHB1Ymxp
YyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKQEAgLTEzMiw2ICsxNDIsNTkgQEAgc3RhdGlj
IHZvaWQgdGVzdFRMU0Vycm9yc1BvbGljeShTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVz
dDo6TG9hZENvbW1pdHRlZCkpOwogfQogCitjbGFzcyBTU0xQZXJtaXNzaW9uVGVzdDogcHVibGlj
IExvYWRUcmFja2luZ1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
U1NMUGVybWlzc2lvblRlc3QpOworCisgICAgU1NMUGVybWlzc2lvblRlc3QoKQorICAgICAgICA6
IG1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMoZmFsc2UpCisgICAgeworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fd2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVy
bWlzc2lvblJlcXVlc3RlZCksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiBw
ZXJtaXNzaW9uUmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dCogcmVxdWVzdCwgU1NMUGVybWlzc2lvblRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fz
c2VydChXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgdGVz
dC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0
KSk7CisKKyAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCisgICAg
ICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVlc3QpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2RlbnkocmVxdWVz
dCk7CisKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgYm9vbCBtX2FsbG93UGVy
bWlzc2lvblJlcXVlc3RzOworfTsKKworc3RhdGljIHZvaWQgdGVzdFNTTFBlcm1pc3Npb25SZXF1
ZXN0KFNTTFBlcm1pc3Npb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+
bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5
KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9BU0spOworCisgICAgLy8gVGVzdCBk
ZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9u
UmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL3Rlc3Qtc3NsLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9u
YWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFNTTEV4cGVj
dGVkRmFpbHVyZVRpdGxlKTsKKworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24g
cmVxdWVzdC4KKyAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAg
ICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qtc3NsLyIp
LmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3Nl
cnQoIXRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9h
ZEV2ZW50c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQp
OworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJh
Y2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9s
b2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcp
LCA9PSwgU1NMRXhwZWN0ZWRTdWNjZXNzVGl0bGUpOworfQorCisKIHN0YXRpYyB2b2lkIGh0dHBz
U2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
Y29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50
ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAg
LTE0OCw2ICsyMTEsOSBAQCBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNvdXBTZXJ2
ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0CiAgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9DT1BZ
LCByZXNwb25zZUhUTUwuZ2V0KCksIHN0cmxlbihyZXNwb25zZUhUTUwuZ2V0KCkpKTsKICAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogICAg
ICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsK
KyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdGVzdC1zc2wvIikpIHsKKyAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAg
ICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09V
UF9NRU1PUllfU1RBVElDLCBTU0xTdWNjZXNzSFRNTFN0cmluZywgc3RybGVuKFNTTFN1Y2Nlc3NI
VE1MU3RyaW5nKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CiB9CkBAIC0xOTIsNiArMjU4LDcgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wi
LCB0ZXN0U1NMKTsKICAgICBJbnNlY3VyZUNvbnRlbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiaW5zZWN1cmUtY29udGVudCIsIHRlc3RJbnNlY3VyZUNvbnRlbnQpOwogICAgIFNTTFRlc3Q6
OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJv
cnNQb2xpY3kpOworICAgIFNTTFBlcm1pc3Npb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
c3NsLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RTU0xQZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAK
IHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGEyOTI4NDEzZjk1OTRlZTJjYTAxYmQ2MjA0OTIwODM2N2Y5NmUwM2EuLjZmZDgxYzNiMjdh
Yjc5NGI5MDg4ZjU2MWQ2ZTk5N2UyYWNiMDY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTEwOTYsMTEgKzEwOTYsOCBAQCB2b2lkIFdlYkNvbnRleHQ6OmFs
bG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUlu
Zm8qCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjZXJ0
aWZpY2F0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGhvc3QpOworICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KGNlcnRpZmljYXRlLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLCBob3N0KSk7CiAjZW5k
aWYKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIHdoZXRoZXIgd2Ugd2FudCB0aGlzIFNQSSB0
byBiZSBleHBvc2VkIGFuZCB1c2VkIGZvciBjbGllbnRzIHRoYXQgZG9uJ3QgdXNlIHRoZSBOZXR3
b3JrUHJvY2Vzcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBXZWJDb250
ZXh0OjpzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBhNzg0ZTRkZjUwMGM5NWZhNzA0ZjQwYzgzMmI1
ZTI5YTYyMjkyYzI3Li40YWFkOThjYjY1NzMyNzQ4OWFiYjUzOGMzMGFhYTI4ODk0ZDNmM2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
by5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1
ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKQEAgLTE3MCw2ICsxNzEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQ
YWdlcygpOwogCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYgVVNFKFNPVVApCisg
ICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOworI2VuZGlmCisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5NjAyYTJlODJjYjI2ZDg0NDA1
OTRmNTFkMTRjNjc5NzNjZjgyZmIzLi5iZGYyNTg0MTAxZDdmNDAwYjMyOWI3N2VkYTFkOTczYTBj
NmQ5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC04OSw0ICs4OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKGJvb2wgZmxhZyk7CiAjZW5kaWYKKworI2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQorICAgIEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6OlBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlLCBXVEY6OlN0cmluZyBob3N0KQorI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcAppbmRleCBjN2JlYTkyODY0ZjFjMjhhNzYwMGM2NTNmMDE5Zjg2NWFjZTdlMjlkLi40MDQ1
Y2RlZGQ4OWJjODVhNGYwYzMyN2E1YmQ5ZDRkODg5MWI4NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTIwOCw0ICsyMDgs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNF
cnJvcnMpCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhp
Z25vcmVUTFNFcnJvcnMpOwogfQogCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lk
IFdlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQ
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhv
c3QpCit7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRl
KGhvc3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKK30KKyNlbmRpZgogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213171</attachid>
            <date>2013-10-02 09:56:52 -0700</date>
            <delta_ts>2013-10-03 09:46:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131002175652.patch</filename>
            <type>text/plain</type>
            <size>33598</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWJlMTEyMjNkMmUxYTRi
NjkzYTNlYmY3OTM1ZDIzZDRhMzk3OGI5NS4uYjBlNWY4ZTMyMjZmZTQ1ZWY2NWRiZWQ1ZWU4OTUx
OGMxNTZiOGRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTEwLTAyICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgVExTIGVy
cm9ycy4gVGhpcyBpbmNsdWRlcyBhIG5ldworICAgICAgICBwb2xpY3kgZW51bWVyYXRpb24gdG8g
YWxsb3cgdXNlcnMgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpc2ggdG8gYmUKKyAgICAgICAgYXNr
ZWQgaWYgdGhlcmUgaXMgYSBUTFMgZXJyb3IsIGFuZCBhIG5ldyBtZXNzYWdlIHRvIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIHRvIGFkZCBhbiBleGNlcHRpb24gZm9yIGEgc3BlY2lmaWMgY2VydGlm
aWNhdGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KToKKyAgICAgICAgKHdlYmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6CisgICAgICAgICh3
ZWJraXRQZXJtaXNzaW9uUmVxdWVzdEludGVyZmFjZUluaXQpOgorICAgICAgICAod2Via2l0VExT
UGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0VExTUGVybWlzc2lvblJl
cXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2Ns
YXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3Rsc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Nl
cnRpZmljYXRlKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90
bHNfZXJyb3JzKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9o
b3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0QWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHA6CisgICAg
ICAgICh0ZXN0VExTUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoaHR0cHNTZXJ2ZXJDYWxs
YmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCk6CisKIDIwMTMtMTAtMDEgIEdhYm9yIEFicmFo
YW0gIDxhYnJobUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XVtXSzJdIEZpeCBidWls
ZCBhZnRlciByMTU2Njg4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWI3YzI2
OTUyOGNmMDFhMzMwZjYyY2E1MTE1Zjc5MTU0NTBkMjAwOC4uNGNjY2UwNWE5ZTVhMDQwMGViMzA1
MTU0MGM1ZThlYTY1NjljODUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0x
MjcsNiArMTI3LDcgQEAgd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRTY3JpcHREaWFsb2cuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVJlc3BvbnNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oIFwKQEAgLTc2Nyw2ICs3NjgsOSBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdz
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0
Q2hlY2tlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRl
eHRDaGVja2VyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRM
U1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBjMGJkMGZhNDRmMTQ5OTdiMTM1ODg3MTQ3ZDRmNDkxZGU3NTA5
MTM1Li4zZjE0MTk5NzdmYmFhYjExYjgzNDA5NjExY2EzYWMxZmYzMDg0YjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTc2LDYgKzE3Niw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5nc1ByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Bl
cm1pc3Npb25SZXF1ZXN0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1p
c3Npb25SZXF1ZXN0LmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRleHRDaGVja2Vy
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRleHRDaGVja2VyLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTMxMiw2ICszMTUsNyBAQCBzZXQo
V2ViS2l0Ml9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNjcmlwdERpYWxvZy5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGMzYzRhMjNiMmNjZmFhY2M2YzlhYmEwMjMzMGQ2ZTdmZTY0YjY5MmEuLjg4ZDcx
YjdmMzBjMjQ5ODFjYjI4MGRhZjI2YjMyZjM4ZWM2MjBjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcApAQCAt
NTcsOCArNTcsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBpZiAo
cmVzb3VyY2VFcnJvci50bHNFcnJvcnMoKSkgewotICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSwKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPihyZXNvdXJjZUVycm9yLnRsc0Vy
cm9ycygpKSwgcmVzb3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKTsKKyAgICAgICAgUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKHJlc291cmNlRXJyb3IpOworICAgICAgICB3
ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV0VCS0lUX1dFQl9WSUVXKGNsaWVu
dEluZm8pLCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJv
ci5nZXQoKSwgY2VydGlmaWNhdGVJbmZvKTsKICAgICB9IGVsc2UKICAgICAgICAgd2Via2l0V2Vi
Vmlld0xvYWRGYWlsZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfTE9BRF9T
VEFSVEVELCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJv
ci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVl
YmRhMjI4OWY2MmQzYmQ1MmMzODVmYzAxZWYwMmEyMzgwYjhmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0LmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmgiCisKKyNpbmNsdWRl
ICJXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFRMU1Blcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBUTFMg
ZXJyb3JzCisgKiBAVGl0bGU6IFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0CisgKiBAU2VlX2Fs
c286ICNXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCwgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXZWJL
aXRUTFNQZXJtaXNzaW9uUmVxdWVzdCByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IKKyAqIHBlcm1p
c3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3VsZCBjb250aW51ZSBuYXZpZ2F0aW9u
CisgKiB0byBhIHdlYnNpdGUgd2hlbiB0aGVyZSB3ZXJlIFRMUyBlcnJvcnMsIGZvciBleGFtcGxl
IGJlY2F1c2UKKyAqIG9mIGFuIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZS4KKyAqCisgKiBXaGVuIHRo
ZSAjV2ViS2l0VExTRXJyb3JzUG9saWN5IGlzIHNldCB0byAjV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0FTSywKKyAqIHRoZSBwZXJtaXNzaW9uLXJlcXVlc3Qgc2lnbmFsIGlzIGVtaXR0ZWQgd2l0
aCB0aGlzIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LgorICoKKyAqIFNpbmNlIDIuNAorICov
CisKK3N0YXRpYyB2b2lkIHdlYmtpdFBlcm1pc3Npb25SZXF1ZXN0SW50ZXJmYWNlSW5pdChXZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKik7CisKK3N0cnVjdCBfV2ViS2l0VExTUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlIHsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIFJlZlB0
cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKKyAgICBDU3RyaW5nIGhvc3Q7
CisgICAgYm9vbCBtYWRlRGVjaXNpb247Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEVfV0lUSF9D
T0RFKAorICAgIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdCwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VC
S0lUX1RZUEVfUEVSTUlTU0lPTl9SRVFVRVNULCB3ZWJraXRQZXJtaXNzaW9uUmVxdWVzdEludGVy
ZmFjZUluaXQpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRf
SVNfVExTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRUTFNQZXJt
aXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfVExTX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4K
KyAgICBpZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJr
aXRXZWJDb250ZXh0QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYmtpdF93
ZWJfdmlld19nZXRfY29udGV4dChwcml2LT53ZWJWaWV3KSwgcHJpdi0+Y2VydGlmaWNhdGVJbmZv
LmdldCgpLCBwcml2LT5ob3N0LmRhdGEoKSk7CisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1
ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VExTUGVybWlzc2lvblJlcXVlc3REZW55KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRfSVNfVExT
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRUTFNQZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfVExTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1
ZXN0KS0+cHJpdjsKKworICAgIC8vIE9ubHkgb25lIGRlY2lzaW9uIGF0IGEgdGltZS4KKyAgICBp
ZiAocHJpdi0+bWFkZURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEZW55IHRo
ZSByZXF1ZXN0IGJ5IGRvaW5nIG5vdGhpbmcuCisgICAgcHJpdi0+bWFkZURlY2lzaW9uID0gdHJ1
ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0UGVybWlzc2lvblJlcXVlc3RJbnRlcmZhY2VJbml0
KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqIGlmYWNlKQoreworICAgIGlmYWNlLT5hbGxv
dyA9IHdlYmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0QWxsb3c7CisgICAgaWZhY2UtPmRlbnkgPSB3
ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdERlbnk7Cit9CisKK1dlYktpdFRMU1Blcm1pc3Npb25S
ZXF1ZXN0KiB3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5n
JiBob3N0KQoreworICAgIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VC
S0lUX1RMU19QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1RMU19Q
RVJNSVNTSU9OX1JFUVVFU1QsIE5VTEwpKTsKKyAgICByZXF1ZXN0LT5wcml2LT53ZWJWaWV3ID0g
d2ViVmlldzsKKyAgICByZXF1ZXN0LT5wcml2LT5jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0
ZUluZm87CisgICAgcmVxdWVzdC0+cHJpdi0+aG9zdCA9IGhvc3QudXRmOCgpOworICAgIHJldHVy
biByZXF1ZXN0OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdERp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIC8vIERlZmF1bHQgYmVoYXZpb3VyIHdoZW4g
bm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBpcyBkZW55aW5nIHRoZSByZXF1ZXN0LgorICAgIHdl
YmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKG9i
amVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0
X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
X3Rsc19wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRUTFNQZXJtaXNzaW9uUmVx
dWVzdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19P
QkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0VExT
UGVybWlzc2lvblJlcXVlc3REaXNwb3NlOworfQorCitHVGxzQ2VydGlmaWNhdGUqIHdlYmtpdF90
bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9jZXJ0aWZpY2F0ZShXZWJLaXRUTFNQZXJtaXNzaW9u
UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
VExTX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVz
dC0+cHJpdi0+Y2VydGlmaWNhdGVJbmZvLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLmNlcnRp
ZmljYXRlKCk7Cit9CisKK0dUbHNDZXJ0aWZpY2F0ZUZsYWdzIHdlYmtpdF90bHNfcGVybWlzc2lv
bl9yZXF1ZXN0X2dldF90bHNfZXJyb3JzKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpyZXF1
ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19UTFNfUEVSTUlTU0lP
Tl9SRVFVRVNUKHJlcXVlc3QpLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkp
OworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNlcnRpZmljYXRlSW5mby0+cGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8oKS50bHNFcnJvcnMoKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF90
bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9ob3N0KFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0
ICpyZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19UTFNfUEVS
TUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2
LT5ob3N0LmRhdGEoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJj
NTM1MWM5MDk0ODcwN2FiYzE0NzI1YTZhNmY2YjMxZTc2MWU1ZmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVx
dWVzdC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dF
QktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJv
ciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisj
ZW5kaWYKKworI2lmbmRlZiBXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdF9oCisjZGVmaW5lIFdl
YktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVExTX1BFUk1JU1NJT05fUkVR
VUVTVCAgICAgICAgICAgICh3ZWJraXRfdGxzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfVExTX1BFUk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9UTFNfUEVSTUlT
U0lPTl9SRVFVRVNULCBXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJ
VF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1RMU19QRVJNSVNTSU9OX1JFUVVFU1QsIFdl
YktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfVExTX1BF
Uk1JU1NJT05fUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1RMU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVExTX1BFUk1JU1NJT05fUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1RMU19QRVJNSVNT
SU9OX1JFUVVFU1QsIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QgICAgICAgIFdlYktpdFRMU1Blcm1p
c3Npb25SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0
Q2xhc3MgICBXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSBXZWJLaXRUTFNQZXJtaXNzaW9uUmVx
dWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QgeworICAg
IEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0VExTUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRUTFNQZXJt
aXNzaW9uUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfdGxzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZSAodm9pZCk7CisK
K1dFQktJVF9BUEkgR1Rsc0NlcnRpZmljYXRlICoKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1
ZXN0X2dldF9jZXJ0aWZpY2F0ZSAoV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3Qp
OworCitXRUJLSVRfQVBJIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzCit3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfdGxzX2Vycm9ycyAgKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfaG9zdCAgICAgICAgKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWIxOTA5YThhYjU0M2QzN2YyNDdkYmJjMTA3
YjU4NzViYjc0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDMw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3LmgiCisKK1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRUTFNQZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJDZXJ0aWZpY2F0
ZUluZm8qLCBjb25zdCBXVEY6OlN0cmluZyYpOworCisjZW5kaWYgLy8gV2ViS2l0VExTUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZDJjOGJiZGY5YjU0NGNlYjQ1MjE4
ZjAzZTkzNmU3MjU0MGNmN2Q1ZS4uMWU0NmUyNDJmNTkzYmNjYzQ1NDMzMTBlMWY2MWY5ODFmZjc4
ZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKQEAgLTkwMiwzICs5MDIsOCBAQCBXZWJLaXRXZWJWaWV3R3JvdXAq
IHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3VwKFdlYktpdFdlYkNvbnRleHQq
IGNvbgogewogICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5kZWZhdWx0V2ViVmlld0dyb3VwLmdl
dCgpOwogfQorCit2b2lkIHdlYmtpdFdlYkNvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZp
Y2F0ZUZvckhvc3QoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgV2ViQ2VydGlmaWNh
dGVJbmZvKiBjZXJ0aWZpY2F0ZSwgY29uc3QgY2hhciogaG9zdCkKK3sKKyAgICBjb250ZXh0LT5w
cml2LT5jb250ZXh0LT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY2VydGlm
aWNhdGUsIFN0cmluZyhob3N0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggZGQzOGMxZDM3NWJlOTY1MGI5NGI4
NTNmZDMxMTI4YWEyNzM3YTZhZi4uYTE5NDU4YzA1ZGFhN2NkNjI5ODUwOWI5ZTM5NDgxYWIzMDZi
MzYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuaApAQCAtNjUsMTIgKzY1LDE0IEBAIHR5cGVkZWYgZW51bSB7CiAgKiBXZWJL
aXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRTog
SWdub3JlIFRMUyBlcnJvcnMuCiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRM
UyBlcnJvcnMgbWFrZSB0aGUgbG9hZCB0byBmaW5pc2ggd2l0aCBhbiBlcnJvci4KKyAqIEBXRUJL
SVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLOiBBc2sgZm9yIHBlcm1pc3Npb24gdG8gbG9hZCB0aGUg
cGFnZSBvbiBhIFRMUyBlcnJvci4gU2luY2UgMi40CiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0
byBkZW5vdGUgdGhlIFRMUyBlcnJvcnMgcG9saWN5LgogICovCiB0eXBlZGVmIGVudW0gewogICAg
IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUsCi0gICAgV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0ZBSUwKKyAgICBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCwKKyAgICBXRUJL
SVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLCiB9IFdlYktpdFRMU0Vycm9yc1BvbGljeTsKIAogLyoq
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCA4MWM0NzNjNTYxZDhjM2NjMmYzNTVhYjI0MWU4MDli
MGQ4N2ZhYzAyLi4xNmMyZjZhODMzZWI2NmE0MTMzOWQ5OTRlNzk4ZGNjNWEzMGQ3ZjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHRQcml2YXRlLmgKQEAgLTQ3LDUgKzQ3LDYgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBX
ZWIKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRleHRHZXRX
ZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsK
IFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4dEdldERlZmF1bHRXZWJWaWV3R3Jv
dXAoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0QWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBXZWJLaXQ6
OldlYkNlcnRpZmljYXRlSW5mbyosIGNvbnN0IGNoYXIqKTsKIAogI2VuZGlmIC8vIFdlYktpdFdl
YkNvbnRleHRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNDQ2MjllY2ZmZGE2MjUzNmQ4OGFmMWNmNTgzMTYx
OTU2N2FkOTUxNS4uZjNiZTdjMmU4ODQ1OWM4Y2E1NjFjMzVhYzU3NjkyYjU3MzJlYTk1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTIyLDggKzIyLDYgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKICNpbmNs
dWRlICJJbWFnZU9wdGlvbnMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5o
IgotI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRl
ICJXZWJEYXRhLmgiCkBAIC00OCw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJX
ZWJLaXRTY3JpcHREaWFsb2dQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VExTUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNl
UHJpdmF0ZS5oIgpAQCAtMTUwOSw3ICsxNTA4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZh
aWxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAog
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJL
SVRfTE9BRF9GSU5JU0hFRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkks
IEdFcnJvciAqZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRp
ZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExT
RXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdF
cnJvciAqZXJyb3IsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBwbGF0Zm9ybUNlcnRp
Y2F0ZUluZm8pCiB7CiAgICAgd2Via2l0V2ViVmlld1NldElzTG9hZGluZyh3ZWJWaWV3LCBmYWxz
ZSk7CiAgICAgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3
KTsKQEAgLTE1MTgsNiArMTUxNywxMSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0
aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQogICAgIGlm
ICh0bHNFcnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwpIHsKICAg
ICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQod2ViVmlldywgV0VCS0lUX0xPQURfU1RBUlRF
RCwgZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmICh0
bHNFcnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0FTSykgeworICAgICAg
ICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0
aWZpY2F0ZUluZm86OmNyZWF0ZShwbGF0Zm9ybUNlcnRpY2F0ZUluZm8pOworICAgICAgICBXZWJD
b3JlOjpVUkwgdXJpKFBhcnNlZFVSTFN0cmluZywgU3RyaW5nKGZhaWxpbmdVUkkpKTsKKyAgICAg
ICAgR1JlZlB0cjxXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSh3ZWJWaWV3LCB3ZWJDZXJ0aWZpY2F0
ZUluZm8uZ2V0KCksIHVyaS5ob3N0KCkpKTsKKyAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJt
aXNzaW9uUmVxdWVzdCh3ZWJWaWV3LCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9B
RF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXgg
ZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uMzBhMjJmZjE3MjRjNjYz
Nzk1YWM1ZGM0MzBlYzQ1NjMyNGMyMDc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNywxMyArMjcs
MTQgQEAKICNpZm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJW
aWV3UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2Vi
S2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFp
bGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdV
UkksIEdFcnJvciopOwotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMo
V2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2Vy
dGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2Fk
RmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VS
SSwgR0Vycm9yKiwgY29uc3QgV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYpOwogdm9p
ZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBk
b3VibGUgZXN0aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxl
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRh
dGVVUkkoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEwNDEy
NjgyZTg3ZjRmN2M5MzE5YWNmMzRjZDUwMmVlMTM2NC4uZTlhNGE0NGFiZmUxYjA3MDkzODFjOGMx
OTc4MTIxODgyZDE1ZmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0zNiw2ICszNiw3IEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1hbmFnZXIueG1sIi8+CiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViSW5zcGVjdG9yLnhtbCIvPgorICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0VmVyc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0Q29udGV4dE1lbnUueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApp
bmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMyMmUzOTk5NzgzY2RiZTM4Li4yMGYwMDU4OWUy
NWU3MzJhY2JkMDM1MTQ1MjA2NWJkYWNlYjYwZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQKQEAgLTg0Myw2ICs4NDMsMjcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZQogPC9TRUNU
SU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0PC9GSUxF
PgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1
ZXN0X2dldF9jZXJ0aWZpY2F0ZQord2Via2l0X3Rsc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3Rs
c19lcnJvcnMKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9ob3N0CisKKzxTVUJT
RUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VCS0lU
X1RZUEVfVExTX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1RMU19QRVJNSVNTSU9OX1JFUVVF
U1QKK1dFQktJVF9JU19UTFNfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfVExTX1BFUk1JU1NJ
T05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0lTX1RMU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1MK
K1dFQktJVF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQ
cml2YXRlPgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfdGxzX3Bl
cm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxF
PldlYktpdFVSSVNjaGVtZVJlcXVlc3Q8L0ZJTEU+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0CiB3
ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKaW5kZXggZGI2Y2NjODUyMmQx
NTFjYjljNDk1ZDlkNDNmM2U5NmY2NTI1MmE2ZS4uZWQwY2JlNDNjNDZjNDhiMGY0NDM0YTJhYTI5
N2U2ZDFlZGU3MjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFNTTC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFNTTC5jcHAKQEAgLTI4LDYgKzI4LDExIEBAIHN0YXRpYyBXZWJLaXRUZXN0
U2VydmVyKiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4SFRNTCA9ICI8
aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0bWxsPiI7CiBzdGF0
aWMgY29uc3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48c2NyaXB0IHNyYz1c
IiVzXCI+PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3JjPVwiJXNcIiBhbGln
bj1cInJpZ2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhciBUTFNF
eHBlY3RlZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Qi
Oworc3RhdGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9CisgICAgIjxodG1s
PiIKKyAgICAiPGhlYWQ+PHRpdGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Q8L3Rp
dGxlPjwvaGVhZD4iCisgICAgIjxib2R5PjwvYm9keT48L2h0bWw+IjsKIAogY2xhc3MgU1NMVGVz
dDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgpAQCAtMTMyLDYgKzEzNyw3NSBA
QCBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJh
Y2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CiB9CiAKK2NsYXNzIFRMU1Blcm1pc3Npb25UZXN0
OiBwdWJsaWMgU1NMVGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShU
TFNQZXJtaXNzaW9uVGVzdCk7CisKKyAgICBUTFNQZXJtaXNzaW9uVGVzdCgpCisgICAgeworICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdf
Q0FMTEJBQ0socnVuUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayksIHRoaXMpOworICAgIH0KKwor
ICAgIH5UTFNQZXJtaXNzaW9uVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJWaWV3LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAw
LCAwLCAwLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qq
IHJlcXVlc3QsIFRMU1Blcm1pc3Npb25UZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+
cnVuUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAg
IH0KKworICAgIHZvaWQgcnVuUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QqIHJlcXVlc3QpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKKyAgICAgICAgbV9wZXJtaXNzaW9uUmVxdWVz
dCA9IHJlcXVlc3Q7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAg
fQorCisgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHdhaXRGb3JQZXJtaXNzaW9uUmVxdWVz
dCgpCisgICAgeworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAg
IHJldHVybiBtX3Blcm1pc3Npb25SZXF1ZXN0LmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBHUmVmUHRyPFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0PiBtX3Blcm1pc3Npb25SZXF1ZXN0Owor
fTsKKworc3RhdGljIHZvaWQgdGVzdFRMU1Blcm1pc3Npb25SZXF1ZXN0KFRMU1Blcm1pc3Npb25U
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9U
TFNfRVJST1JTX1BPTElDWV9BU0spOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lv
biByZXF1ZXN0LgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvdGVzdC10bHMvIikuZGF0YSgpKTsKKyAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVx
dWVzdCA9IHRlc3QtPndhaXRGb3JQZXJtaXNzaW9uUmVxdWVzdCgpOworICAgIC8vIExvYWQgb25s
eSBmYWlscyB3aGVuIHRoZSBwb2xpY3kgaXMgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwu
CisgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfY21waW50
KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0s
ID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworCisgICAgd2Via2l0X3Blcm1p
c3Npb25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOworICAgIC8vIEFmdGVyIGRlbnlpbmcgdGhlIHJl
cXVlc3QsIGEgc2Vjb25kIGxvYWQgd2lsbCBnZW5lcmF0ZSBhIG5ldyBwZXJtaXNzaW9uIHJlcXVl
c3QuCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0
LXRscy8iKS5kYXRhKCkpOworICAgIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yUGVybWlzc2lvblJl
cXVlc3QoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwg
TG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRG
aW5pc2hlZCk7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0Lgor
ICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CisgICAgLy8gVGhl
IHBhZ2Ugc2hvdWxkIG5vdyBsb2FkIHdpdGhvdXQgZXJyb3JzLgorICAgIHRlc3QtPmxvYWRVUkko
a0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC10bHMvIikuZGF0YSgpKTsKKyAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+
bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0
LT5tX2xvYWRFdmVudHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxlKHRlc3QtPm1fd2Vi
VmlldyksID09LCBUTFNFeHBlY3RlZFN1Y2Nlc3NUaXRsZSk7Cit9CisKKwogc3RhdGljIHZvaWQg
aHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBn
cG9pbnRlcikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkg
ewpAQCAtMTQ4LDYgKzIyMiwxMCBAQCBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0CiAgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9DT1BZLCByZXNwb25zZUhUTUwuZ2V0KCksIHN0cmxlbihyZXNwb25zZUhUTUwuZ2V0KCkpKTsK
ICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0sp
OwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9i
b2R5KTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdGVzdC10bHMvIikpIHsK
KyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0sp
OworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSwgU09VUF9NRU1PUllfU1RBVElDLCBUTFNTdWNjZXNzSFRNTFN0cmluZywgc3RybGVuKFRMU1N1
Y2Nlc3NIVE1MU3RyaW5nKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgIH0gZWxzZQogICAgICAgICBzb3VwX21lc3NhZ2Vf
c2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQpAQCAtMTkyLDYg
KzI3MCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBTU0xUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAic3NsIiwgdGVzdFNTTCk7CiAgICAgSW5zZWN1cmVDb250ZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImluc2VjdXJlLWNvbnRlbnQiLCB0ZXN0SW5zZWN1cmVDb250ZW50KTsKICAg
ICBTU0xUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAidGxzLWVycm9ycy1wb2xpY3kiLCB0
ZXN0VExTRXJyb3JzUG9saWN5KTsKKyAgICBUTFNQZXJtaXNzaW9uVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgInRscy1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0VExTUGVybWlzc2lvblJlcXVl
c3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAppbmRleCA3MGUzYjQzMzA1OTNlZjZkMGZkNzg4YmEyZTkzMzFmNDIwZjg5
Nzg2Li5lYTNhYjJhNzY3OTc5MGVkZGI2OWIyMjhhMDJmMDcxMzhlZmQyY2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC01Miw2ICs1Miw3IEBACiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHREaWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFNlY3VyaXR5TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGlu
Z3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDc3YTlm
MDhjNDkzNWMzZTQzNTkzOGExZjU2MmNhMGI1ODhmN2NiZDQuLjBkZTI3MThmZDA1MDQ2MDMwMjhk
MjY2MzJiYTk3MTk2Njk5OTg4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKQEAgLTEwNzYsMTAgKzEwNzYsMTUgQEAgdm9pZCBXZWJDb250ZXh0OjphbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKKyNpZiBVU0UoU09VUCkKKyAgICBtX3Byb2Nlc3Nl
c1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLCBob3N0
KSwgMCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUp
OwogICAgIFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBJdCdzIHVu
Y2xlYXIgd2hldGhlciB3ZSB3YW50IHRoaXMgU1BJIHRvIGJlIGV4cG9zZWQgYW5kIHVzZWQgZm9y
IGNsaWVudHMgdGhhdCBkb24ndCB1c2UgdGhlIE5ldHdvcmtQcm9jZXNzLgorI2VuZGlmCisKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCA2ZDQ3M2MzZTRkNTdhOTUzYTc5YTk4Mzg4ODNkNzY4NDc4NGQzYTIyLi4x
ZDJkMDQwZGQ3YzljMmI4YTBjZDM3ZTcwNTgxZDI5MzBmZTRiZWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hl
TW9kZWwuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2Fj
aGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE3MCw2ICsx
NzEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQYWdlcygpOwogCisjaWYg
IUVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBhbGxvd1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOworI2VuZGlmCisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXZWJQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5ODEyNjg0Njc4MGZiZTYyZjY2YTc3N2RlZDdlZTJiY2Fm
ZmYxNTAzLi5lZTA0OTk1YjE1ZDc2YjBhMWNkZDQ2MWE4ZWFiMDliYTE2YjVmMGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04
NSw0ICs4NSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZs
YWcpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBVU0UoU09V
UCkKKyAgICBBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViS2l0OjpQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSwgV1RGOjpTdHJpbmcgaG9zdCkKKyNlbmRp
ZgorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcAppbmRleCBjN2JlYTkyODY0ZjFjMjhhNzYwMGM2NTNmMDE5Zjg2NWFjZTdl
MjlkLi40MDQ1Y2RlZGQ4OWJjODVhNGYwYzMyN2E1YmQ5ZDRkODg5MWI4NDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTIw
OCw0ICsyMDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBp
Z25vcmVUTFNFcnJvcnMpCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNT
TEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwogfQogCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NF
U1MpCit2b2lkIFdlYlByb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBT
dHJpbmcmIGhvc3QpCit7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENl
cnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKK30KKyNlbmRp
ZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213272</attachid>
            <date>2013-10-03 09:46:18 -0700</date>
            <delta_ts>2013-10-08 10:04:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131003174618.patch</filename>
            <type>text/plain</type>
            <size>35620</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWJlMTEyMjNkMmUxYTRi
NjkzYTNlYmY3OTM1ZDIzZDRhMzk3OGI5NS4uOTczNGY4ZWYzNjcyMmYwZDdkNzljMWFiNjUxNzlh
ZWQ0YWQxNmI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTEwLTAzICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgVExTIGVy
cm9ycy4gVGhpcyBpbmNsdWRlcyBhIG5ldworICAgICAgICBwb2xpY3kgZW51bWVyYXRpb24gdG8g
YWxsb3cgdXNlcnMgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IHdpc2ggdG8gYmUKKyAgICAgICAgYXNr
ZWQgaWYgdGhlcmUgaXMgYSBUTFMgZXJyb3IsIGFuZCBhIG5ldyBtZXNzYWdlIHRvIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIHRvIGFkZCBhbiBleGNlcHRpb24gZm9yIGEgc3BlY2lmaWMgY2VydGlm
aWNhdGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1p
c3Npb25SZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRUTFNQZXJtaXNzaW9uUmVx
dWVzdEFsbG93KToKKyAgICAgICAgKHdlYmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0RGVueSk6Cisg
ICAgICAgICh3ZWJraXRQZXJtaXNzaW9uUmVxdWVzdEludGVyZmFjZUluaXQpOgorICAgICAgICAo
d2Via2l0VExTUGVybWlzc2lvblJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0VExTUGVy
bWlzc2lvblJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9y
ZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3Rsc19wZXJtaXNzaW9uX3JlcXVl
c3RfZ2V0X2NlcnRpZmljYXRlKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1
ZXN0X2dldF90bHNfZXJyb3JzKToKKyAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1
ZXN0X2dldF9ob3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJt
aXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRUTFNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVk
V2l0aFRMU0Vycm9ycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LnR5cGVzOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgor
ICAgICAgICAodGVzdFRMU1Blcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKGh0dHBzU2VydmVy
Q2FsbGJhY2spOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorCiAyMDEzLTEwLTAxICBHYWJvciBB
YnJhaGFtICA8YWJyaG1AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF1bV0syXSBGaXgg
YnVpbGQgYWZ0ZXIgcjE1NjY4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDli
N2MyNjk1MjhjZjAxYTMzMGY2MmNhNTExNWY3OTE1NDUwZDIwMDguLjRjY2NlMDVhOWU1YTA0MDBl
YjMwNTE1NDBjNWU4ZWE2NTY5Yzg1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMTI3LDYgKzEyNyw3IEBAIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2NyaXB0RGlhbG9nLmggXAogCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklSZXNwb25zZS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaCBcCkBAIC03NjcsNiArNzY4LDkgQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0
aW5nc1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VGV4dENoZWNrZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRUZXh0Q2hlY2tlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRUTFNQZXJtaXNzaW9uUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYzBiZDBmYTQ0ZjE0OTk3YjEzNTg4NzE0N2Q0ZjQ5MWRl
NzUwOTEzNS4uM2YxNDE5OTc3ZmJhYWIxMWI4MzQwOTYxMWNhM2FjMWZmMzA4NGIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE3Niw2ICsxNzYsOSBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCiAgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRU
TFNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQ
ZXJtaXNzaW9uUmVxdWVzdC5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VExTUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hl
Y2tlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oCiAgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zMTIsNiArMzE1LDcgQEAg
c2V0KFdlYktpdDJfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRTY3JpcHREaWFsb2cuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5m
by5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5m
by5jcHAKaW5kZXggYzY5MDRiNGFlNmU1YjUzMmIwMzlkZDVjZmRhNmU3ZWViYTY3MTRlYi4uYjNk
MWJmMGExNjAyZWI2ZDY3ODZkY2JlNmI4NGQ1ODEwYWNhZmQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcApAQCAt
NTQsNiArNTQsMTIgQEAgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXIKIHsKIH0KIAorUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0aWZpY2F0ZUZs
YWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICA6IG1fY2Vy
dGlmaWNhdGUoY2VydGlmaWNhdGUpCisgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJvcnMpCit7Cit9
CisKIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjp+UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvLmgKaW5kZXggOGMyMzFmMzZkYjMyZjhkOGI0MDI2N2I2ZGI0NWMxNDdmNjFjMDU1
MC4uMDY3NTljNDMxNjRlYjVlODFiOWYyZjYwNDBlNmU4NDk0NWJjMmUyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwog
ICAgIGV4cGxpY2l0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogICAgIH5Q
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogCiAgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1p
c3Npb25SZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWNjY2VhNmI0OTcyOGVmNjAwOTJkZWY4MmRm
ODA4ZmQ4NDY0OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VExT
UGVybWlzc2lvblJlcXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdFBlcm1pc3Npb25SZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICog
U0VDVElPTjogV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlv
bjogQSBwZXJtaXNzaW9uIHJlcXVlc3QgZm9yIFRMUyBlcnJvcnMKKyAqIEBUaXRsZTogV2ViS2l0
VExTUGVybWlzc2lvblJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFBlcm1pc3Npb25SZXF1
ZXN0LCAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0IHJl
cHJlc2VudHMgYSByZXF1ZXN0IGZvcgorICogcGVybWlzc2lvbiB0byBkZWNpZGUgd2hldGhlciBX
ZWJLaXQgc2hvdWxkIGNvbnRpbnVlIG5hdmlnYXRpb24KKyAqIHRvIGEgd2Vic2l0ZSB3aGVuIHRo
ZXJlIHdlcmUgVExTIGVycm9ycywgZm9yIGV4YW1wbGUgYmVjYXVzZQorICogb2YgYW4gdW50cnVz
dGVkIGNlcnRpZmljYXRlLgorICoKKyAqIFdoZW4gdGhlICNXZWJLaXRUTFNFcnJvcnNQb2xpY3kg
aXMgc2V0IHRvICNXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLLAorICogdGhlICNXZWJLaXRX
ZWJWaWV3OjpwZXJtaXNzaW9uLXJlcXVlc3Qgc2lnbmFsIGlzIGVtaXR0ZWQgd2l0aCB0aGlzCisg
KiBXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC4KKyAqCisgKiBTaW5jZSAyLjQKKyAqLworCitz
dGF0aWMgdm9pZCB3ZWJraXRQZXJtaXNzaW9uUmVxdWVzdEludGVyZmFjZUluaXQoV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3RJZmFjZSopOworCitzdHJ1Y3QgX1dlYktpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSB7CisgICAgV2ViS2l0V2ViQ29udGV4dCogY29udGV4dDsKKyAgICBHVGxzQ2Vy
dGlmaWNhdGVGbGFncyB0bHNFcnJvcnM7CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNl
cnRpZmljYXRlOworICAgIENTdHJpbmcgaG9zdDsKKyAgICBib29sIG1hZGVEZWNpc2lvbjsKK307
CisKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoCisgICAgV2ViS2l0VExTUGVybWlzc2lv
blJlcXVlc3QsIHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAor
ICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1Qs
IHdlYmtpdFBlcm1pc3Npb25SZXF1ZXN0SW50ZXJmYWNlSW5pdCkpCisKK3N0YXRpYyB2b2lkIHdl
YmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKHJl
cXVlc3QpKTsKKworICAgIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLT5wcml2OworCisgICAgLy8g
T25seSBvbmUgZGVjaXNpb24gYXQgYSB0aW1lLgorICAgIGlmIChwcml2LT5tYWRlRGVjaXNpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYkNvbnRleHRBbGxvd1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QocHJpdi0+Y29udGV4dCwgcHJpdi0+dGxzRXJyb3JzLCBwcml2
LT5jZXJ0aWZpY2F0ZS5nZXQoKSwgcHJpdi0+aG9zdC5kYXRhKCkpOworICAgIHByaXYtPm1hZGVE
ZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFRMU1Blcm1pc3Npb25SZXF1
ZXN0RGVueShXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQo
V0VCS0lUX0lTX1RMU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0
VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX1RMU19QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCktPnByaXY7CisKKyAgICAvLyBPbmx5IG9uZSBkZWNpc2lvbiBhdCBh
IHRpbWUuCisgICAgaWYgKHByaXYtPm1hZGVEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRGVueSB0aGUgcmVxdWVzdCBieSBkb2luZyBub3RoaW5nLgorICAgIHByaXYtPm1hZGVE
ZWNpc2lvbiA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFBlcm1pc3Npb25SZXF1ZXN0
SW50ZXJmYWNlSW5pdChXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdElmYWNlKiBpZmFjZSkKK3sKKyAg
ICBpZmFjZS0+YWxsb3cgPSB3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdEFsbG93OworICAgIGlm
YWNlLT5kZW55ID0gd2Via2l0VExTUGVybWlzc2lvblJlcXVlc3REZW55OworfQorCitXZWJLaXRU
TFNQZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0VExTUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV2Vi
S2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3Jz
LCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBjb25zdCBjaGFyKiBob3N0KQoreworICAg
IFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1RMU19QRVJNSVNT
SU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1RMU19QRVJNSVNTSU9OX1JFUVVF
U1QsIE5VTEwpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5jb250ZXh0ID0gd2ViQ29udGV4dDsKKyAg
ICByZXF1ZXN0LT5wcml2LT50bHNFcnJvcnMgPSB0bHNFcnJvcnM7CisgICAgcmVxdWVzdC0+cHJp
di0+Y2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKKyAgICByZXF1ZXN0LT5wcml2LT5ob3N0ID0g
aG9zdDsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VExTUGVy
bWlzc2lvblJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICAvLyBEZWZhdWx0
IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0aGUg
cmVxdWVzdC4KKyAgICB3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0VCS0lUX1BFUk1J
U1NJT05fUkVRVUVTVChvYmplY3QpKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdGxzX3Bl
cm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0
VExTUGVybWlzc2lvblJlcXVlc3RDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBv
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZGlz
cG9zZSA9IHdlYmtpdFRMU1Blcm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKK30KKworLyoqCisgKiB3
ZWJraXRfdGxzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfY2VydGlmaWNhdGU6CisgKiBAcmVxdWVz
dDogYSAjV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBHZXQgdGhlICNHVGxzQ2Vy
dGlmaWNhdGUgY2VydGlmaWNhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRUTFNQ
ZXJtaXNzaW9uUmVxdWVzdC4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IFRoZSBj
ZXJ0aWZpY2F0ZSBvZiBAcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dUbHNDZXJ0
aWZpY2F0ZSogd2Via2l0X3Rsc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2NlcnRpZmljYXRlKFdl
YktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKwor
ICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jZXJ0aWZpY2F0ZS5nZXQoKTsKK30KKworLyoqCisg
KiB3ZWJraXRfdGxzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdGxzX2Vycm9yczoKKyAqIEByZXF1
ZXN0OiBhICNXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdAorICoKKyAqIEdldCB0aGUgI0dUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHZlcmlmaWNhdGlvbiBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMK
KyAqICNXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC4KKyAqCisgKiBSZXR1cm5zOiBUaGUgdmVy
aWZpY2F0aW9uIHN0YXR1cyBvZiBAcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90bHNf
ZXJyb3JzKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
LCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpOworCisgICAgcmV0dXJuIHJl
cXVlc3QtPnByaXYtPnRsc0Vycm9yczsKK30KKworLyoqCisgKiB3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfaG9zdDoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRUTFNQZXJtaXNzaW9u
UmVxdWVzdAorICoKKyAqIEdldCB0aGUgaG9zdCBhc3NvY2lhdGVkIHdpdGggdGhpcyAjV2ViS2l0
VExTUGVybWlzc2lvblJlcXVlc3QuCisgKgorICogUmV0dXJuczogVGhlIGhvc3Qgb2YgQHJlcXVl
c3QuCisgKgorICogU2luY2U6IDIuNAorICovCitjb25zdCBnY2hhciogd2Via2l0X3Rsc19wZXJt
aXNzaW9uX3JlcXVlc3RfZ2V0X2hvc3QoV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QgKnJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1RMU19QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCksIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmhvc3Qu
ZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyYzQ5MjM5
YzIxMzc4N2JhNGJjOTIwMjg1MDZjMTNmYzQzMWM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0LmgK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0
cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgor
CisjaWZuZGVmIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0VExT
UGVybWlzc2lvblJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRl
IDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVH
SU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUICAg
ICAgICAgICAgKHdlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1RMU19QRVJNSVNTSU9OX1JF
UVVFU1QsIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1RMU19Q
RVJNSVNTSU9OX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVExTX1BFUk1JU1NJT05fUkVRVUVTVCwgV2ViS2l0VExT
UGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19UTFNfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1RMU19QRVJNSVNTSU9OX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNf
VExTX1BFUk1JU1NJT05fUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUKSkKKyNkZWZp
bmUgV0VCS0lUX1RMU19QRVJNSVNTSU9OX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfVExTX1BFUk1JU1NJT05fUkVR
VUVTVCwgV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgV2ViS2l0VExTUGVybWlzc2lvblJl
cXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RDbGFzcyAg
IFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZTsKKworc3RydWN0IF9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdCB7CisgICAgR09iamVj
dCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRUTFNQZXJtaXNzaW9u
UmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFRMU1Blcm1pc3Npb25S
ZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgR1Rsc0NlcnRpZmljYXRlICoKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1
ZXN0X2dldF9jZXJ0aWZpY2F0ZSAoV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3Qp
OworCitXRUJLSVRfQVBJIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzCit3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfdGxzX2Vycm9ycyAgKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfdGxzX3Blcm1pc3Np
b25fcmVxdWVzdF9nZXRfaG9zdCAgICAgICAgKFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRMU1Blcm1pc3Npb25S
ZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MzY1NjBiNGM2MTg1NTRmOTZlZGQ3NGM1MmMy
MmE4ZGIwMzY0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDMw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3LmgiCisKK1dlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRUTFNQZXJt
aXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXRXZWJDb250ZXh0KiwgR1Rsc0NlcnRpZmljYXRlRmxh
Z3MsIEdUbHNDZXJ0aWZpY2F0ZSosIGNvbnN0IGNoYXIqKTsKKworI2VuZGlmIC8vIFdlYktpdFRM
U1Blcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGQyYzhiYmRmOWI1NDRj
ZWI0NTIxOGYwM2U5MzZlNzI1NDBjZjdkNWUuLmFlNzcyNWI3YTZjMTllMGFhMTA2ZmNjYTY5MTc1
NjZhZTNkMTZmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgi
CkBAIC05MDIsMyArOTA0LDEwIEBAIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4
dEdldERlZmF1bHRXZWJWaWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCogY29uCiB7CiAgICAgcmV0
dXJuIGNvbnRleHQtPnByaXYtPmRlZmF1bHRXZWJWaWV3R3JvdXAuZ2V0KCk7CiB9CisKK3ZvaWQg
d2Via2l0V2ViQ29udGV4dEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMsIEdU
bHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIGNvbnN0IGNoYXIqIGhvc3QpCit7CisgICAgUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8odGxzRXJyb3JzLCBj
ZXJ0aWZpY2F0ZSk7CisgICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4gd2ViQ2VydGlmaWNh
dGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUocGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8pOworICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgo
aG9zdCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oCmluZGV4IGRkMzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjcz
N2E2YWYuLmExOTQ1OGMwNWRhYTdjZDYyOTg1MDliOWUzOTQ4MWFiMzA2YjM2MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgK
QEAgLTY1LDEyICs2NSwxNCBAQCB0eXBlZGVmIGVudW0gewogICogV2ViS2l0VExTRXJyb3JzUG9s
aWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJy
b3JzLgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIG1ha2Ug
dGhlIGxvYWQgdG8gZmluaXNoIHdpdGggYW4gZXJyb3IuCisgKiBAV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0FTSzogQXNrIGZvciBwZXJtaXNzaW9uIHRvIGxvYWQgdGhlIHBhZ2Ugb24gYSBUTFMg
ZXJyb3IuIFNpbmNlIDIuNAogICoKICAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIHRoZSBU
TFMgZXJyb3JzIHBvbGljeS4KICAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfVExTX0VS
Uk9SU19QT0xJQ1lfSUdOT1JFLAotICAgIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMCisg
ICAgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwsCisgICAgV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0FTSwogfSBXZWJLaXRUTFNFcnJvcnNQb2xpY3k7CiAKIC8qKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2
YXRlLmgKaW5kZXggODFjNDczYzU2MWQ4YzNjYzJmMzU1YWIyNDFlODA5YjBkODdmYWMwMi4uY2M4
NmJhZDAxNDcyODc0OGY3ZGU5ODE1ZTExMDdkNGQzYjhkODU4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oCkBAIC00Nyw1ICs0Nyw2IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViCiB2b2lkIHdlYmtp
dFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJW
aWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2Uo
V2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBXZWJLaXRXZWJWaWV3
R3JvdXAqIHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3VwKFdlYktpdFdlYkNv
bnRleHQqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmlj
YXRlRm9ySG9zdChXZWJLaXRXZWJDb250ZXh0KiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHND
ZXJ0aWZpY2F0ZSosIGNvbnN0IGNoYXIqKTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYkNvbnRleHRQ
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggNDQ2MjllY2ZmZGE2MjUzNmQ4OGFmMWNmNTgzMTYxOTU2N2FkOTUx
NS4uNDliYWUzOWJlYTJlNThiNjZlYjkxMjFmMDYzNTliNGRiZDRhMzIzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIy
LDggKzIyLDYgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKICNpbmNsdWRlICJJbWFn
ZU9wdGlvbnMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgotI2luY2x1
ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRh
LmgiCkBAIC00OCw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRTY3Jp
cHREaWFsb2dQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRV
UklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZS5o
IgpAQCAtMTUwOSw3ICsxNTA4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9G
SU5JU0hFRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3Jz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAq
ZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJy
b3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0
aWZpY2F0ZSkKIHsKICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIGZhbHNl
KTsKICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KHdlYlZpZXcp
OwpAQCAtMTUxOCw2ICsxNTE3LDEwIEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhCiAgICAgaWYg
KHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkgewogICAg
ICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVE
LCBmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHRs
c0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLKSB7CisgICAgICAg
IEdPd25QdHI8U291cFVSST4gc291cF91cmkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsKKyAg
ICAgICAgR1JlZlB0cjxXZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0
R1JlZih3ZWJraXRUTFNQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSh3ZWJWaWV3LT5wcml2LT5jb250
ZXh0LCB0bHNFcnJvcnMsIGNlcnRpZmljYXRlLCBzb3VwX3VyaS0+aG9zdCkpOworICAgICAgICB3
ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KHdlYlZpZXcsIFdFQktJVF9QRVJNSVNT
SU9OX1JFUVVFU1QocmVxdWVzdC5nZXQoKSkpOwogICAgIH0KIAogICAgIGdfc2lnbmFsX2VtaXQo
d2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAppbmRleCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0
YmExLi5mZDBhZWQyMTBhNDdjYWExOTcyZDFjMzYyMWRhZDZjNzZmZmEzN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2Fk
RmFpbGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxp
bmdVUkksIEdFcnJvciopOwotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJv
cnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxz
Q2VydGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdM
b2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGlu
Z1VSSSwgR0Vycm9yKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwog
dm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcq
LCBkb3VibGUgZXN0aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRp
dGxlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdV
cGRhdGVVUkkoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEw
NDEyNjgyZTg3ZjRmN2M5MzE5YWNmMzRjZDUwMmVlMTM2NC4uZTlhNGE0NGFiZmUxYjA3MDkzODFj
OGMxOTc4MTIxODgyZDE1ZmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0zNiw2ICszNiw3
IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1hbmFnZXIueG1sIi8+
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpbi54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViSW5zcGVjdG9yLnhtbCIvPgorICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRUTFNQZXJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0VmVyc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0Q29udGV4dE1lbnUueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAppbmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMyMmUzOTk5NzgzY2RiZTM4Li4yMGYwMDU4
OWUyNWU3MzJhY2JkMDM1MTQ1MjA2NWJkYWNlYjYwZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKQEAgLTg0Myw2ICs4NDMsMjcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZQogPC9T
RUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0PC9G
SUxFPgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3QKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9y
ZXF1ZXN0X2dldF9jZXJ0aWZpY2F0ZQord2Via2l0X3Rsc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0
X3Rsc19lcnJvcnMKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF9ob3N0CisKKzxT
VUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RDbGFzcworV0VC
S0lUX1RZUEVfVExTX1BFUk1JU1NJT05fUkVRVUVTVAorV0VCS0lUX1RMU19QRVJNSVNTSU9OX1JF
UVVFU1QKK1dFQktJVF9JU19UTFNfUEVSTUlTU0lPTl9SRVFVRVNUCitXRUJLSVRfVExTX1BFUk1J
U1NJT05fUkVRVUVTVF9DTEFTUworV0VCS0lUX0lTX1RMU19QRVJNSVNTSU9OX1JFUVVFU1RfQ0xB
U1MKK1dFQktJVF9UTFNfUEVSTUlTU0lPTl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElP
TiBQcml2YXRlPgorV2ViS2l0VExTUGVybWlzc2lvblJlcXVlc3RQcml2YXRlCit3ZWJraXRfdGxz
X3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPldlYktpdFVSSVNjaGVtZVJlcXVlc3Q8L0ZJTEU+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
CiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwppbmRleCA1
YjFlYTNjMWZkZTQ2ZDNmMTY3Y2Y3MDEzMjNmOGZjMDA4NDBmMjllLi4zYmM1OGEwMjVhMzJlMDY0
MDg4MTM3YzM1YmY3MzFmMWRjNTgzY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yNywzICsyNyw0IEBA
IHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Z2V0X3R5cGUKIHdlYmtpdF9jcmVkZW50aWFsX2dldF90eXBlCiB3ZWJraXRfZnJhbWVfZ2V0X3R5
cGUKK3dlYmtpdF90bHNfcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCmluZGV4IGRiNmNj
Yzg1MjJkMTUxY2I5YzQ5NWQ5ZDQzZjNlOTZmNjUyNTJhNmUuLmI0NjcwY2Y4MTQ4NzEzNzFkNGQ5
N2RjNmNjOTllNjdlZDUzNGRkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCkBAIC0yOCw2ICsyOCwxMSBAQCBzdGF0aWMgV2Vi
S2l0VGVzdFNlcnZlcioga0h0dHBTZXJ2ZXI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEhU
TUwgPSAiPGh0bWw+PGJvZHk+VGVzdGluZyBXZWJLaXQyR1RLKyBTU0w8L2JvZHk+PC9odG1sbD4i
Owogc3RhdGljIGNvbnN0IGNoYXIqIGluc2VjdXJlQ29udGVudEhUTUwgPSAiPGh0bWw+PHNjcmlw
dCBzcmM9XCIlc1wiPjwvc2NyaXB0Pjxib2R5PjxwPlRleHQgKyBpbWFnZSA8aW1nIHNyYz1cIiVz
XCIgYWxpZ249XCJyaWdodFwiLz48L3A+PC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNo
YXIgVExTRXhwZWN0ZWRTdWNjZXNzVGl0bGVbXSA9ICJXZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lv
biB0ZXN0IjsKK3N0YXRpYyBjb25zdCBjaGFyIFRMU1N1Y2Nlc3NIVE1MU3RyaW5nW10gPQorICAg
ICI8aHRtbD4iCisgICAgIjxoZWFkPjx0aXRsZT5XZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lvbiB0
ZXN0PC90aXRsZT48L2hlYWQ+IgorICAgICI8Ym9keT48L2JvZHk+PC9odG1sPiI7CiAKIGNsYXNz
IFNTTFRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKQEAgLTEzMiw2ICsx
MzcsNzUgQEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9yc1BvbGljeShTU0xUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMo
TG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOwogfQogCitjbGFzcyBUTFNQZXJtaXNz
aW9uVGVzdDogcHVibGljIFNTTFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJ
WFRVUkUoVExTUGVybWlzc2lvblRlc3QpOworCisgICAgVExTUGVybWlzc2lvblRlc3QoKQorICAg
IHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVl
c3QiLCBHX0NBTExCQUNLKHJ1blBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spLCB0aGlzKTsKKyAg
ICB9CisKKyAgICB+VExTUGVybWlzc2lvblRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFU
QSwgMCwgMCwgMCwgMCwgdGhpcyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHJ1blBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0KiByZXF1ZXN0LCBUTFNQZXJtaXNzaW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IHRlc3QtPnJ1blBlcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFBlcm1pc3Np
b25SZXF1ZXN0KiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7CisgICAgICAgIG1fcGVybWlzc2lv
blJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3Ap
OworICAgIH0KKworICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiB3YWl0Rm9yUGVybWlzc2lv
blJlcXVlc3QoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwor
ICAgICAgICByZXR1cm4gbV9wZXJtaXNzaW9uUmVxdWVzdC5nZXQoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgR1JlZlB0cjxXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdD4gbV9wZXJtaXNzaW9uUmVx
dWVzdDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RUTFNQZXJtaXNzaW9uUmVxdWVzdChUTFNQZXJt
aXNzaW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7
CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBX
RUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLKTsKKworICAgIC8vIFRlc3QgZGVueWluZyBhIHBl
cm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7CisgICAgV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QqIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yUGVybWlzc2lvblJlcXVlc3QoKTsKKyAgICAvLyBM
b2FkIG9ubHkgZmFpbHMgd2hlbiB0aGUgcG9saWN5IGlzIFdFQktJVF9UTFNfRVJST1JTX1BPTElD
WV9GQUlMLgorICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0
X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92
aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZl
bnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKworICAgIHdlYmtp
dF9wZXJtaXNzaW9uX3JlcXVlc3RfZGVueShyZXF1ZXN0KTsKKyAgICAvLyBBZnRlciBkZW55aW5n
IHRoZSByZXF1ZXN0LCBhIHNlY29uZCBsb2FkIHdpbGwgZ2VuZXJhdGUgYSBuZXcgcGVybWlzc2lv
biByZXF1ZXN0LgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvdGVzdC10bHMvIikuZGF0YSgpKTsKKyAgICByZXF1ZXN0ID0gdGVzdC0+d2FpdEZvclBlcm1p
c3Npb25SZXF1ZXN0KCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sw
XSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdf
YXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkRmluaXNoZWQpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVx
dWVzdC4KKyAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93KHJlcXVlc3QpOworICAg
IC8vIFRoZSBwYWdlIHNob3VsZCBub3cgbG9hZCB3aXRob3V0IGVycm9ycy4KKyAgICB0ZXN0LT5s
b2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7
CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRfY21waW50
KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0s
ID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlz
aGVkKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0
LT5tX3dlYlZpZXcpLCA9PSwgVExTRXhwZWN0ZWRTdWNjZXNzVGl0bGUpOworfQorCisKIHN0YXRp
YyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250
ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhP
RF9HRVQpIHsKQEAgLTE0OCw2ICsyMjIsMTAgQEAgc3RhdGljIHZvaWQgaHR0cHNTZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdAogICAg
ICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09V
UF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdl
dCgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3Rlc3QtdGxz
LyIpKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgVExTU3VjY2Vzc0hUTUxTdHJpbmcsIHN0cmxl
bihUTFNTdWNjZXNzSFRNTFN0cmluZykpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21w
bGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKICAgICB9IGVsc2UKICAgICAgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIH0KQEAg
LTE5MSw3ICsyNjksMTAgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAgICAgU1NMVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRlc3RTU0wpOwogICAgIEluc2VjdXJlQ29udGVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnNlY3VyZS1jb250ZW50IiwgdGVzdEluc2VjdXJlQ29u
dGVudCk7Ci0gICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInRscy1lcnJvcnMt
cG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBv
cmRlciBvZiB0aGUgdGVzdHMgZG9lcyBtYXR0ZXIgYmVjYXVzZSB0bHMtZXJyb3JzLXBvbGljeSB0
ZXN0cyB0aGUgZGVmYXVsdCBwb2xpY3kuCisgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgVExTUGVy
bWlzc2lvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtcGVybWlzc2lvbi1yZXF1ZXN0
IiwgdGVzdFRMU1Blcm1pc3Npb25SZXF1ZXN0KTsKKwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCA3MGUzYjQzMzA1
OTNlZjZkMGZkNzg4YmEyZTkzMzFmNDIwZjg5Nzg2Li5lYTNhYjJhNzY3OTc5MGVkZGI2OWIyMjhh
MDJmMDcxMzhlZmQyY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHRE
aWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5TWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFRMU1Blcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCmluZGV4IDc3YTlmMDhjNDkzNWMzZTQzNTkzOGExZjU2MmNhMGI1ODhm
N2NiZDQuLjBkZTI3MThmZDA1MDQ2MDMwMjhkMjY2MzJiYTk3MTk2Njk5OTg4NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNzYsMTAgKzEwNzYsMTUgQEAg
dm9pZCBXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgV2ViQ2VydGlmaWNhdGVJbmZvKgogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKKyNp
ZiBVU0UoU09VUCkKKyAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLT5wbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwogICAgIFVOVVNFRF9QQVJBTShob3N0KTsKICNl
bmRpZgotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgd2hldGhlciB3ZSB3YW50IHRoaXMgU1BJ
IHRvIGJlIGV4cG9zZWQgYW5kIHVzZWQgZm9yIGNsaWVudHMgdGhhdCBkb24ndCB1c2UgdGhlIE5l
dHdvcmtQcm9jZXNzLgorI2VuZGlmCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA2ZDQ3M2MzZTRkNTdhOTUz
YTc5YTk4Mzg4ODNkNzY4NDc4NGQzYTIyLi4xZDJkMDQwZGQ3YzljMmI4YTBjZDM3ZTcwNTgxZDI5
MzBmZTRiZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKQEAgLTE3MCw2ICsxNzEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCB1
cGRhdGVBY3RpdmVQYWdlcygpOwogCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYg
VVNFKFNPVVApCisgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOworI2Vu
ZGlmCisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5ODEyNjg0
Njc4MGZiZTYyZjY2YTc3N2RlZDdlZTJiY2FmZmYxNTAzLi5lZTA0OTk1YjE1ZDc2YjBhMWNkZDQ2
MWE4ZWFiMDliYTE2YjVmMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04NSw0ICs4NSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0UHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKKyNpZiBVU0UoU09VUCkKKyAgICBBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0
ZSwgV1RGOjpTdHJpbmcgaG9zdCkKKyNlbmRpZgorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCBjN2JlYTkyODY0
ZjFjMjhhNzYwMGM2NTNmMDE5Zjg2NWFjZTdlMjlkLi40MDQ1Y2RlZGQ4OWJjODVhNGYwYzMyN2E1
YmQ5ZDRkODg5MWI4NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTIwOCw0ICsyMDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
OjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwogfQog
CisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lkIFdlYlByb2Nlc3M6OmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRlSW5m
by5jZXJ0aWZpY2F0ZSgpKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213695</attachid>
            <date>2013-10-08 10:04:54 -0700</date>
            <delta_ts>2013-10-09 07:51:17 -0700</delta_ts>
            <desc>New Patch</desc>
            <filename>bug-120160-20131008180457.patch</filename>
            <type>text/plain</type>
            <size>44376</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjQ4ZDEwMWM0NzQzYjIw
NTlhOTI2ZGY5YzA1MTE3NjZiOGYzY2FkNy4uM2YwMjdhNmE0OWFlMmJjYTEzOGU0MDU1MzA2OTRi
MzJiZjYyOTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTEwLTA4ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJy
b3JzIHRoYXQgaXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
IGJveGVkIHR5cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJv
cnMuIEEgbmV3IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFk
ZGVkLgorICAgICAgICAoX1dlYktpdENlcnRpZmljYXRlSW5mbzo6X1dlYktpdENlcnRpZmljYXRl
SW5mbyk6CisgICAgICAgICh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9DcmVhdGUpOgorICAgICAgICAo
d2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAg
ICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZp
Y2F0ZV9pbmZvX2NvcHkpOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSk6
CisgICAgICAgICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfY2VydGlmaWNhdGUpOgorICAg
ICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMpOgorICAgICAgICAo
d2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X2hvc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl9jb250ZXh0X2FsbG93X3NwZWNpZmljX3Rsc19jZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0xv
YWRGYWlsZWRXaXRoVExTRXJyb3JzRGVmYXVsdEhhbmRsZXIpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdExv
YWRGYWlsZWRXaXRoVGxzRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2spOgor
ICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorCiAyMDEzLTEwLTA4ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGRlbGV0ZUFsbFZhbHVlcyBpbiBO
UFJlbW90ZU9iamVjdE1hcDo6cGx1Z2luRGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAxOWZkNTk0MjU4YjI3ODMwMzA1N2FlMGU3MGQxYjZhODg3MmJjMmNlLi5kNTBl
MjIwYWNiYTU0NGFmNzJjMmUzNjI4ZmQyZDJiMDFlYmJiZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9u
cy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRl
bS5oIFwKQEAgLTY3Myw2ICs2NzQsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3
YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IGMwYmQwZmE0NGYxNDk5N2IxMzU4ODcxNDdkNGY0OTFkZTc1
MDkxMzUuLjExYzZkNGU2YjRmYWQ3YzY3YTRjOWNlODg0MmQ2YWFmYmI2ZGRlMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Nyw2ICs4Nyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAg
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAK
QEAgLTI4Niw2ICsyODksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJL
aXQyX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRl
SW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8uaAppbmRleCA4YzIzMWYzNmRiMzJmOGQ4YjQwMjY3YjZkYjQ1YzE0N2Y2MWMwNTUwLi5jOTc1
OWEwYmI3OTI2MjQ4MTMyZjI1MDhmMGU0ZmZmY2QzMWI2ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgKQEAgLTQ5LDYg
KzQ5LDkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB+UGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8oKTsKIAorICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSkge21fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsgfQorICAgIHZvaWQgc2V0VExTRXJy
b3JzKEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycykge21fdGxzRXJyb3JzID0gdGxzRXJy
b3JzOyB9CisKICAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3JzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNmZmRlMDlmMTQ5OGQ0MmQyYzFlODU5ZmM5M2FmZTRlMjE0M2I2MzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgiCisKKyNp
bmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRp
ZmljYXRlSW5mb1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvIHsK
KyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IGdjaGFyKiBob3N0KQorICAgICAgICA6IGNlcnRpZmlj
YXRlSW5mbyhjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICwgaG9zdChob3N0KQorICAgIHsKKyAg
ICB9CisKKyAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CisgICAg
Q1N0cmluZyBob3N0OworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19j
b3B5LCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKQorCitXZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8qIHdlYmtpdENlcnRpZmljYXRlSW5mb0NyZWF0ZShjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBnY2hhciogaG9zdCkKK3sKKyAgICBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8qIGluZm8gPSBnX3NsaWNlX25ldyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8p
OworICAgIG5ldyAoaW5mbykgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlSW5mbywg
aG9zdCk7CisgICAgcmV0dXJuIGluZm87Cit9CisKK2NvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIHJldHVy
biBpbmZvLT5jZXJ0aWZpY2F0ZUluZm87Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fbmV3OgorICogQHRsc0Vycm9yczogVGhlIHRscyBlcnJvcnMgZm9yIHRoZSBuZXcgY2Vy
dGlmaWNhdGUgaW5mbworICogQGNlcnRpZmljYXRlOiBUaGUgY2VydGlmaWNhdGUgZm9yIHRoZSBu
ZXcgY2VydGlmaWNhdGUgaW5mbworICogQGhvc3Q6IFRoZSBob3N0IG9mIHRoZSBuZXcgY2VydGlm
aWNhdGUgaW5mbworICoKKyAqIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBpbmZvIGZyb20gdGhl
IHByb3ZpZGVkIHRscyBlcnJvcnMsIGNlcnRpZmljYXRlIGFuZCBob3N0LgorICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBmdWxsKTogQSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFNp
bmNlOiAyLjQKKyAqLworV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19uZXcoR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUg
KmNlcnRpZmljYXRlLCBjb25zdCBnY2hhciAqaG9zdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjZXJ0aWZpY2F0ZSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaG9zdCwgMCk7
CisKKyAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CisgICAgY2Vy
dGlmaWNhdGVJbmZvLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKKyAgICBjZXJ0aWZpY2F0
ZUluZm8uc2V0VExTRXJyb3JzKHRsc0Vycm9ycyk7CisgICAgcmV0dXJuIHdlYmtpdENlcnRpZmlj
YXRlSW5mb0NyZWF0ZShjZXJ0aWZpY2F0ZUluZm8sIGhvc3QpOworfQorCisvKioKKyAqIHdlYmtp
dF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHk6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvCisgKgorICogTWFrZSBhIGNvcHkgb2YgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisg
KgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOworCisgICAg
cmV0dXJuIHdlYmtpdENlcnRpZmljYXRlSW5mb0NyZWF0ZShpbmZvLT5jZXJ0aWZpY2F0ZUluZm8s
IGluZm8tPmhvc3QuZGF0YSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19mcmVlOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIEZyZWUg
dGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCit2b2lk
IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZv
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5mbyk7CisKKyAgICBpbmZvLT5+V2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKCk7CisgICAgZ19zbGljZV9mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbywg
aW5mbyk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfY2VydGlm
aWNhdGU6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogR2V0IHRo
ZSAjR1Rsc0NlcnRpZmljYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAjV2ViS2l0Q2VydGlm
aWNhdGVJbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIGNlcnRpZmlj
YXRlIG9mIEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLworR1Rsc0NlcnRpZmljYXRlKiB3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfY2VydGlmaWNhdGUoV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvICppbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOworCisgICAg
cmV0dXJuIGluZm8tPmNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpOworfQorCisvKioKKyAq
IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzOgorICogQGluZm86IGEgI1dl
YktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIEdldCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdz
IHZlcmlmaWNhdGlvbiBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJuczogVGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2Yg
QGluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitHVGxzQ2VydGlmaWNhdGVGbGFncyB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8g
KmluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5mbywgc3RhdGljX2Nhc3Q8R1Rs
c0NlcnRpZmljYXRlRmxhZ3M+KDApKTsKKworICAgIHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUlu
Zm8udGxzRXJyb3JzKCk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0
X2hvc3Q6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogR2V0IHRo
ZSBob3N0IGFzc29jaWF0ZWQgd2l0aCB0aGlzICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgor
ICogUmV0dXJuczogVGhlIGhvc3Qgb2YgQGluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitj
b25zdCBnY2hhciogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X2hvc3QoV2ViS2l0Q2VydGlm
aWNhdGVJbmZvICppbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOwor
CisgICAgcmV0dXJuIGluZm8tPmhvc3QuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ODEyMTgxNzg1MzRiYmFkNjY1NzkzNjY4Zjg4ZDgxNjljNmQ1ZmZhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNh
dGVJbmZvLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9f
V0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vy
cm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIK
KyNlbmRpZgorCisjaWZuZGVmIFdlYktpdENlcnRpZmljYXRlSW5mb19oCisjZGVmaW5lIFdlYktp
dENlcnRpZmljYXRlSW5mb19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PGdpby9naW8uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gKHdlYmtpdF9j
ZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDZXJ0
aWZpY2F0ZUluZm8gV2ViS2l0Q2VydGlmaWNhdGVJbmZvOworCitXRUJLSVRfQVBJIEdUeXBlCit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZSAgICAgICAgKHZvaWQpOworCitXRUJLSVRf
QVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19uZXcg
ICAgICAgICAgICAgKEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgdGxzRXJyb3JzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGUgICAgICAgKmNl
cnRpZmljYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAgKmhvc3QpOworCitXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRl
SW5mbyAqCit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5ICAgICAgICAgICAgKFdlYktpdENl
cnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZnJlZSAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pOwor
CitXRUJLSVRfQVBJIEdUbHNDZXJ0aWZpY2F0ZSAqCit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19n
ZXRfY2VydGlmaWNhdGUgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9B
UEkgR1Rsc0NlcnRpZmljYXRlRmxhZ3MKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSBjb25z
dCBnY2hhciAqCit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfaG9zdCAgICAgICAgKFdlYktp
dENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTZiNTY3NTc0NjJhYmVkYWFjNjY3
NjZiOGRiN2UxNWE3M2IxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKQEAgLTAsMCArMSwz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRl
X2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5m
by5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworV2ViS2l0Q2VydGlmaWNhdGVJbmZv
KiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9DcmVhdGUoY29uc3QgV2ViS2l0OjpQbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mbyYsIGNvbnN0IGdjaGFyKik7Citjb25zdCBXZWJLaXQ6OlBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
byhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qKTsKKworI2VuZGlmIC8vIFdlYktpdENlcnRpZmljYXRl
SW5mb1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBkMmM4YmJkZjliNTQ0Y2ViNDUyMThmMDNlOTM2
ZTcyNTQwY2Y3ZDVlLi41MzczYmRhMmJjYWQ3NThmYjA2OWU4ZjE3MmY1MDI5Yjg4MTgyOTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcApAQCAtMjAsOCArMjAsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8u
aCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2
YXRlLmgiCkBAIC04MDcsNiArODA5LDIyIEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3ByZWZl
dGNoX2RucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBob3N0CiAgICAg
Y29udGV4dC0+cHJpdi0+Y29udGV4dC0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFN0cmlu
Zzo6ZnJvbVVURjgoIlByZWZldGNoRE5TIiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1l
c3NhZ2UpLmdldCgpKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfc3Bl
Y2lmaWNfdGxzX2NlcnRpZmljYXRlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQK
KyAqIEBpbmZvOiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogSWdub3JlIGZ1cnRoZXIg
VExTIGVycm9ycyBvbiB0aGUgaG9zdCBhbmQgY2VydGlmaWNhdGUgcHJlc2VudCBpbiBAaW5mby4K
KyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfc3BlY2lmaWNfdGxzX2NlcnRpZmlj
YXRlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5m
bykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0
KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKworICAgIFJlZlB0cjxXZWJDZXJ0aWZp
Y2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRl
KHdlYmtpdENlcnRpZmljYXRlSW5mb0dldFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGluZm8pKTsK
KyAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KHdlYmtp
dF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF9ob3N0KGluZm8pKSk7Cit9CisKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3du
bG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93
bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGRkMzhjMWQzNzViZTk2
NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2YWYuLmI5MmFmNzI3ODQ3NjNmYWFlZjJiYWJiNzNkMzlj
YmRlN2Q3MzhkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgV2ViS2l0V2Vi
Q29udGV4dF9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgpAQCAtNjUsMTIgKzY2LDE0IEBAIHR5cGVkZWYgZW51
bSB7CiAgKiBXZWJLaXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRTogSWdub3JlIFRMUyBlcnJvcnMuCiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFrZSB0aGUgbG9hZCB0byBmaW5pc2ggd2l0aCBhbiBlcnJv
ci4KKyAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLOiBBc2sgZm9yIHBlcm1pc3Npb24g
dG8gbG9hZCB0aGUgcGFnZSBvbiBhIFRMUyBlcnJvci4gU2luY2UgMi40CiAgKgogICogRW51bSB2
YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIFRMUyBlcnJvcnMgcG9saWN5LgogICovCiB0eXBlZGVm
IGVudW0gewogICAgIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUsCi0gICAgV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwKKyAgICBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJ
TCwKKyAgICBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLCiB9IFdlYktpdFRMU0Vycm9yc1Bv
bGljeTsKIAogLyoqCkBAIC0xOTksNiArMjAyLDEwIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChXZWJLaXRXZWJD
b250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAg
KmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3NwZWNpZmljX3Rsc19jZXJ0aWZpY2F0ZSAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAg
ICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8pOworCiBHX0VORF9E
RUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNDQ2MjllY2ZmZGE2MjUzNmQ4OGFmMWNmNTgzMTYxOTU2
N2FkOTUxNS4uZjg0ZWIzMDFkODFjMTY1YmFkMGYwODJjOTJlN2ExZTI3ZmIzMDYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKICNpbmNsdWRl
ICJJbWFnZU9wdGlvbnMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgog
I2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKQEAgLTMwLDYgKzI5
LDcgQEAKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUg
IldlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRC
YWNrRm9yd2FyZExpc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZv
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRl
eHRNZW51UHJpdmF0ZS5oIgpAQCAtMTIyLDYgKzEyMiw4IEBAIGVudW0gewogCiAgICAgQVVUSEVO
VElDQVRFLAogCisgICAgTE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTLAorCiAgICAgTEFTVF9T
SUdOQUwKIH07CiAKQEAgLTQ0Myw2ICs0NDUsMTIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdl
YlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0QXV0aGVudGkK
ICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdMb2Fk
RmFpbGVkV2l0aFRMU0Vycm9yc0RlZmF1bHRIYW5kbGVyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKK3sKKyAgICB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19mcmVlKGluZm8pOworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgdm9pZCBmaWxl
Q2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVz
cG9uc2VJRCwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEdSZWZQ
dHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiBhZG9wdGVkUmVxdWVzdCA9IGFkb3B0R1JlZihy
ZXF1ZXN0KTsKQEAgLTYyMCw2ICs2MjgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3
Q2xhc3MtPnBlcm1pc3Npb25fcmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVz
dDsKICAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9maWxlX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVu
RmlsZUNob29zZXI7CiAgICAgd2ViVmlld0NsYXNzLT5hdXRoZW50aWNhdGUgPSB3ZWJraXRXZWJW
aWV3QXV0aGVudGljYXRlOworICAgIHdlYlZpZXdDbGFzcy0+bG9hZF9mYWlsZWRfd2l0aF90bHNf
ZXJyb3JzID0gd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzRGVmYXVsdEhhbmRs
ZXI7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0OgpAQCAtMTQx
NCw2ICsxNDIzLDM1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfQk9PTEVBTl9fT0JKRUNULAogICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIC8qIG51
bWJlciBvZiBwYXJhbWV0ZXJzICovCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRIRU5USUNB
VElPTl9SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWRfZmFp
bGVkX3dpdGhfdGxzX2Vycm9yczoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmll
dyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAaW5mbzogYSAjV2ViS2l0
Q2VydGlmaWNhdGVJbmZvCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYSB0bHMgZXJyb3Ig
b2NjdXJzIGR1cmluZyBhIGxvYWQgb3BlcmF0aW9uIGFuZCB0aGUgdGxzCisgICAgICogcG9saWN5
IGlzIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9BU0suIFRoZSBAaW5mbyBvYmplY3QgY29udGFp
bnMKKyAgICAgKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3Igc3VjaCBhcyB0aGUgI0dUbHND
ZXJ0aWZpY2F0ZSwgdGhlCisgICAgICogR1Rsc0NlcnRpZmljYXRlRmxhZ3MgYW5kIHRoZSBob3N0
LiAgVG8gYWxsb3cgYW4gZXhjZXB0aW9uIGZvciB0aGlzCisgICAgICogY2VydGlmaWNhdGUgYW5k
IHRoaXMgaG9zdCB1c2UKKyAgICAgKiAjV2ViS2l0V2ViQ29udGV4dDo6d2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3NwZWNpZmljX3Rsc19jZXJ0aWZpY2F0ZS4KKyAgICAgKgorICAgICAqIFRoZSBk
ZWZhdWx0IHNpZ25hbCBoYW5kbGVyIGZyZWVzIHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gb2Jq
ZWN0LgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVy
cyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBw
cm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi40Cisg
ICAgICovCisgICAgc2lnbmFsc1tMT0FEX0ZBSUxFRF9XSVRIX1RMU19FUlJPUlNdID0KKyAgICAg
ICAgZ19zaWduYWxfbmV3KCJsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLAorICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFz
cywgbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAg
ICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fQk9YRUQsCisgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJ
VF9UWVBFX0NFUlRJRklDQVRFX0lORk8gIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGJvb2wgaXNMb2FkaW5nKQpAQCAtMTUwOSw3ICsxNTQ3LDcgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hZEV2ZW50LAogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NI
QU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmll
d0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNo
YXIqIGZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xv
YWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIq
IGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9y
cywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKIHsKICAgICB3ZWJraXRXZWJWaWV3U2V0
SXNMb2FkaW5nKHdlYlZpZXcsIGZhbHNlKTsKICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVu
dGljYXRpb25SZXF1ZXN0KHdlYlZpZXcpOwpAQCAtMTUxOCw2ICsxNTU2LDExIEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IGNoYXIqIGZhCiAgICAgaWYgKHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VS
Uk9SU19QT0xJQ1lfRkFJTCkgewogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJW
aWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVELCBmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9IGVsc2UgaWYgKHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9S
U19QT0xJQ1lfQVNLKSB7CisgICAgICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSShzb3VwX3Vy
aV9uZXcoZmFpbGluZ1VSSSkpOworICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8g
PSB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19uZXcodGxzRXJyb3JzLCBjZXJ0aWZpY2F0ZSwgc291
cFVSSS0+aG9zdCk7CisgICAgICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBnX3Np
Z25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTXSwg
MCwgaW5mbywgJnJldHVyblZhbHVlKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZp
ZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4
IGE0ZDZlNDM5ZWNhNzI2ZTkwNjM3NjEzMjE2YTUxNDc3ZWI3YWU5N2QuLjRmNzJmZmQyZmYwYTUy
ZDUzNGM4YzcxMTNhMTY1N2Y4YjE4MDFkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIwMCw1OCArMjAwLDU5IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7CiAKLSAgICB2b2lkICAgICAgICgqIGxvYWRfY2hh
bmdlZCkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExv
YWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2Fk
X2ZhaWxlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpm
YWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVycm9yKTsKLQotICAgIEd0a1dpZGdldCAq
KCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hvdykgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAg
ICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jv
b2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgKmRpYWxvZykgIDsKLQotICAg
IGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lE
ZWNpc2lvblR5cGUgICAgIHR5cGUpOwotICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1
ZXN0KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lv
blJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOwotICAgIHZvaWQgICAgICAgKCogbW91
c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllcnMpOwotICAgIGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24g
ICAgICAgICpwcmludF9vcGVyYXRpb24pOwotICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9h
ZF9zdGFydGVkKSAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViUmVz
b3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVlc3QpOwot
ICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVs
bHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwotICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0
KTsKLSAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29udGV4
dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdk
a0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRf
dGVzdF9yZXN1bHQpOwotICAgIHZvaWQgICAgICAgKCogY29udGV4dF9tZW51X2Rpc21pc3NlZCkg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAg
ICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKLSAgICB2b2lkICAg
ICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWQpIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAgZXZlbnQpOwotICAgIGdib29sZWFu
ICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBhdXRoZW50aWNhdGUpICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlv
blJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVu
dCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7CisgICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxl
ZCkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpm
YWlsaW5nX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJyb3IpOworCisgICAgR3RrV2lkZ2V0
ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZv
aWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsK
KworICAgIGdib29sZWFuICAgKCogc2NyaXB0X2RpYWxvZykgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlh
bG9nKSAgOworCisgICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAg
ICAgICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAgICAgdHlwZSk7CisgICAgZ2Jvb2xlYW4g
ICAoKiBwZXJtaXNzaW9uX3JlcXVlc3QpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3Qp
OworICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0
X3Rlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworICAgIGdib29s
ZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9u
KTsKKyAgICB2b2lkICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJl
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgq
IGVudGVyX2Z1bGxzY3JlZW4pICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xl
YW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBn
Ym9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVu
dSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2
ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90
ZXN0X3Jlc3VsdCk7CisgICAgdm9pZCAgICAgICAoKiBjb250ZXh0X21lbnVfZGlzbWlzc2VkKSAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAg
ICAgICgqIHN1Ym1pdF9mb3JtKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZv
aWQgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCkgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAgZXZlbnQpOworICAg
IGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKKyAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRp
Y2F0ZSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogbG9h
ZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAqaW5mbyk7CiAgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7
CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQzKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9p
ZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7Ci0gICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQ2KSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaAppbmRleCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi5mZDBh
ZWQyMTBhNDdjYWExOTcyZDFjMzYyMWRhZDZjNzZmZmEzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAg
LTMzLDcgKzMzLDcgQEAKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdF
cnJvciopOwotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0
V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2VydGlmaWNh
dGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVk
V2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vy
cm9yKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogdm9pZCB3ZWJr
aXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBkb3VibGUg
ZXN0aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktp
dFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkko
V2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEwNDEyNjgyZTg3
ZjRmN2M5MzE5YWNmMzRjZDUwMmVlMTM2NC4uZTNjZjlhNjhjNmIzOWQxNzlhZGE1NTljYWE0OGRh
ZmMxMWFmNWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2ICs0Myw3IEBACiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3R3JvdXAueG1sIi8+CisgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENlcnRpZmljYXRlSW5mby54bWwiLz4KICAgPC9j
aGFwdGVyPgogCiAgIDxjaGFwdGVyPgpAQCAtNjEsNiArNjIsMTEgQEAKICAgICA8dGl0bGU+SW5k
ZXggb2YgbmV3IHN5bWJvbHMgaW4gMi4yPC90aXRsZT4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvYXBpLWluZGV4LTIuMi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAgPC9p
bmRleD4gIAotICAKKworICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTQiIHJvbGU9IjIuNCI+Cisg
ICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuNDwvdGl0bGU+CisgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC0yLjQueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmlu
Y2x1ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90YXRpb24t
Z2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMyMmUzOTk5
NzgzY2RiZTM4Li5hNmIzNTAwZGVhNTM1MDY1MTg5MGRhMTViYmMwNjg3MzhjMDkzZWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTQ4LDYgKzQ4LDcgQEAgd2Via2l0X3dlYl9jb250
ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeQogd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0
ZW5zaW9uc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJfY29udGV4
dF9hbGxvd19zcGVjaWZpY190bHNfY2VydGlmaWNhdGUKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVt
ZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMTA5NywzICsxMDk4LDIwIEBA
IFdFQktJVF9TQ1JJUFRfV09STERfR0VUX0NMQVNTCiBXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUK
IHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8
RklMRT5XZWJLaXRDZXJ0aWZpY2F0ZUluZm88L0ZJTEU+CitXZWJLaXRDZXJ0aWZpY2F0ZUluZm8K
K3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX25ldword2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29w
eQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9f
Z2V0X2NlcnRpZmljYXRlCit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycwor
d2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X2hvc3QKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CitXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCmlu
ZGV4IDViMWVhM2MxZmRlNDZkM2YxNjdjZjcwMTMyM2Y4ZmMwMDg0MGYyOWUuLjRiNTgzYmFkOWIw
YTdhNmJhMTAyZjczMjJlNGM3MDdhZjY1YzljNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTI3LDMgKzI3
LDQgQEAgd2Via2l0X3dlYl9wYWdlX2dldF90eXBlCiB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVx
dWVzdF9nZXRfdHlwZQogd2Via2l0X2NyZWRlbnRpYWxfZ2V0X3R5cGUKIHdlYmtpdF9mcmFtZV9n
ZXRfdHlwZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKaW5kZXggZGI2Y2Nj
ODUyMmQxNTFjYjljNDk1ZDlkNDNmM2U5NmY2NTI1MmE2ZS4uM2FjMmYzZGUyZTBlMzU2ZWQzNTZi
NGEwNTIzMWJmN2RkYzg2NzNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKQEAgLTI4LDYgKzI4LDExIEBAIHN0YXRpYyBXZWJL
aXRUZXN0U2VydmVyKiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4SFRN
TCA9ICI8aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0bWxsPiI7
CiBzdGF0aWMgY29uc3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48c2NyaXB0
IHNyYz1cIiVzXCI+PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3JjPVwiJXNc
IiBhbGlnbj1cInJpZ2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hh
ciBUTFNFeHBlY3RlZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9u
IHRlc3QiOworc3RhdGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9CisgICAg
IjxodG1sPiIKKyAgICAiPGhlYWQ+PHRpdGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRl
c3Q8L3RpdGxlPjwvaGVhZD4iCisgICAgIjxib2R5PjwvYm9keT48L2h0bWw+IjsKIAogY2xhc3Mg
U1NMVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgpAQCAtMTMyLDYgKzEz
Nyw3MCBAQCBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhM
b2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CiB9CiAKK2NsYXNzIFRMU0Vycm9yc1Rl
c3Q6IHB1YmxpYyBTU0xUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJF
KFRMU0Vycm9yc1Rlc3QpOworCisgICAgVExTRXJyb3JzVGVzdCgpCisgICAgeworICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIs
IEdfQ0FMTEJBQ0socnVuTG9hZEZhaWxlZFdpdGhUbHNFcnJvcnNDYWxsYmFjayksIHRoaXMpOwor
ICAgIH0KKworICAgIH5UTFNFcnJvcnNUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEs
IDAsIDAsIDAsIDAsIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiBydW5Mb2Fk
RmFpbGVkV2l0aFRsc0Vycm9yc0NhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGluZm8sIFRMU0Vycm9yc1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0
LT5ydW5Mb2FkRmFpbGVkV2l0aFRsc0Vycm9ycyhpbmZvKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgfQorCisgICAgdm9pZCBydW5Mb2FkRmFpbGVkV2l0aFRsc0Vycm9ycyhXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8qIGluZm8pCisgICAgeworICAgICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IGlu
Zm87CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAg
V2ViS2l0Q2VydGlmaWNhdGVJbmZvKiB3YWl0Rm9yTG9hZEZhaWxlZFdpdGhUbHNFcnJvcnMoKQor
ICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICByZXR1
cm4gbV9jZXJ0aWZpY2F0ZUluZm87CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYktpdENlcnRp
ZmljYXRlSW5mbyogbV9jZXJ0aWZpY2F0ZUluZm87Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0TG9h
ZEZhaWxlZFdpdGhUbHNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNf
ZXJyb3JzX3BvbGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfQVNLKTsKKwor
ICAgIC8vIFRlc3QgdGhlIFdlYktpdFRMU1Blcm1pc3Npb25SZXF1ZXN0IEFQSQorICAgIHRlc3Qt
PmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC10bHMvIikuZGF0YSgp
KTsKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8gPSB0ZXN0LT53YWl0Rm9yTG9hZEZh
aWxlZFdpdGhUbHNFcnJvcnMoKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19nZXRfY2VydGlmaWNhdGUoaW5mbykpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2Nl
cnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMoaW5mbyksID09LCBHX1RMU19DRVJUSUZJQ0FU
RV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2NlcnRpZmljYXRlX2lu
Zm9fZ2V0X2hvc3QoaW5mbyksID09LCBzb3VwX3VyaV9nZXRfaG9zdChrSHR0cHNTZXJ2ZXItPmJh
c2VVUkkoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZEZpbmlzaGVkKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYW4gZXhjZXB0aW9uIGZvciB0aGlz
IGNlcnRpZmljYXRlIG9uIHRoaXMgaG9zdC4KKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
c3BlY2lmaWNfdGxzX2NlcnRpZmljYXRlKGNvbnRleHQsIGluZm8pOworICAgIHdlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2ZyZWUoaW5mbyk7CisgICAgLy8gVGhlIHBhZ2Ugc2hvdWxkIG5vdyBsb2Fk
IHdpdGhvdXQgZXJyb3JzLgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvdGVzdC10bHMvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKKworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZENvbW1pdHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFRMU0V4cGVj
dGVkU3VjY2Vzc1RpdGxlKTsKK30KKworCiBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBh
dGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlm
IChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CkBAIC0xNDgsNiArMjE3LDEw
IEBAIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBw
ZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIHJlc3BvbnNlSFRN
TC5nZXQoKSwgc3RybGVuKHJlc3BvbnNlSFRNTC5nZXQoKSkpOwogICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LXRscy8iKSkgeworICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIFRMU1N1Y2Nlc3NIVE1MU3RyaW5nLCBzdHJsZW4oVExTU3VjY2Vzc0hUTUxTdHJpbmcpKTsK
KyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CiB9CkBAIC0xOTEsNyArMjY0LDEyIEBAIHZvaWQgYmVm
b3JlQWxsKCkKIAogICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0
U1NMKTsKICAgICBJbnNlY3VyZUNvbnRlbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5z
ZWN1cmUtY29udGVudCIsIHRlc3RJbnNlY3VyZUNvbnRlbnQpOwotICAgIFNTTFRlc3Q6OmFkZCgi
V2ViS2l0V2ViQ29udGV4dCIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJvcnNQb2xp
Y3kpOworICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgb3JkZXIgb2YgdGhlIHRlc3RzIGRvZXMgbWF0
dGVyIGJlY2F1c2UgdGxzLWVycm9ycy1wb2xpY3kgdGVzdHMgdGhlIGRlZmF1bHQgcG9saWN5LAor
ICAgIC8vIGFuZCBleHBlY3RzIHRoYXQgbm8gZXhjZXB0aW9uIHdpbGwgaGF2ZSBiZWVuIGFkZGVk
IGZvciB0aGlzIGNlcnRpZmljYXRlIGFuZCBob3N0IHBhaXIgYXMgaXMKKyAgICAvLyBkb25lIGlu
IHRoZSB0bHMtcGVybWlzc2lvbi1yZXF1ZXN0IHRlc3QuCisgICAgU1NMVGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7Cisg
ICAgVExTRXJyb3JzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImxvYWQtZmFpbGVkLXdpdGgt
dGxzLWVycm9ycyIsIHRlc3RMb2FkRmFpbGVkV2l0aFRsc0Vycm9ycyk7CisKIH0KIAogdm9pZCBh
ZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5k
ZXggNzBlM2I0MzMwNTkzZWY2ZDBmZDc4OGJhMmU5MzMxZjQyMGY4OTc4Ni4uOGQ4MjE5OTAzOTk4
ZDk1ZjNlNTk5ZTgxNmQwOWNjNDg2MDY3NTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRC
YWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
YzY4MWI5MDNlNDI1ZTQ0OTYxODkxMGUyZjM4YTI5NTRjOTdkNDI4Yi4uZTMyMzM1ODNhMGNlMjc3
ZjkyYTM3YWFlYThiNWE1NWYwZDU5MDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcApAQCAtMTA3MSwxMCArMTA3MSwxNSBAQCB2b2lkIFdlYkNvbnRleHQ6OmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8q
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQorI2lmIFVTRShTT1VQKQorICAgIG1fcHJv
Y2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCks
IGhvc3QpLCAwKTsKKyAgICByZXR1cm47CisjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjZXJ0aWZp
Y2F0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGhvc3QpOwogI2VuZGlmCi0gICAgLy8gRklYTUU6IEl0
J3MgdW5jbGVhciB3aGV0aGVyIHdlIHdhbnQgdGhpcyBTUEkgdG8gYmUgZXhwb3NlZCBhbmQgdXNl
ZCBmb3IgY2xpZW50cyB0aGF0IGRvbid0IHVzZSB0aGUgTmV0d29ya1Byb2Nlc3MuCisjZW5kaWYK
KwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IGJkODgyMDEyMTg5ZTEzZmViMmQzZWM5MDkxYTkwMDRiYjlkOTZk
NGYuLjY3OWYzZDg4YmZiNjFlMGZmNDQzZmM2YjI4MTA5OGI5NmIxZjkxZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTYw
LDYgKzE2MSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2VzKCk7CiAK
KyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGFs
bG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CisjZW5kaWYKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFdlYlByb2Nlc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU5YmNlNjM2MjY4MGM2YjI2MTFjMGUzZTY3YTQ5
OTViYmNkNDdiOGMuLjQwMDVmOTE1MDhmZmM1N2U4ZjhjMjJlYTY0NmU2MmNmMWNlNWFjM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTgyLDQgKzgyLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJv
b2wgZmxhZyk7CiAjZW5kaWYKKworI2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFVT
RShTT1VQKQorICAgIEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6
OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlLCBXVEY6OlN0cmluZyBob3N0KQor
I2VuZGlmCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGM3YmVhOTI4NjRmMWMyOGE3NjAwYzY1M2YwMTlmODY1
YWNlN2UyOWQuLjQwNDVjZGVkZDg5YmM4NWE0ZjBjMzI3YTViZDlkNGQ4ODkxYjg0NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApA
QCAtMjA4LDQgKzIwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhi
b29sIGlnbm9yZVRMU0Vycm9ycykKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdu
b3JlU1NMRXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKKyNpZiAhRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKK3ZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVG
b3JIb3N0KGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOworfQor
I2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213777</attachid>
            <date>2013-10-09 07:51:26 -0700</date>
            <delta_ts>2013-10-10 06:02:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131009155129.patch</filename>
            <type>text/plain</type>
            <size>43289</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjQ4ZDEwMWM0NzQzYjIw
NTlhOTI2ZGY5YzA1MTE3NjZiOGYzY2FkNy4uYzdkZTUyZGZhYjg3YmZmZTlkZTg4ZTViOWZlOWNh
NjU0M2U2NTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTEwLTA5ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJy
b3JzIHRoYXQgaXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
IGJveGVkIHR5cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJv
cnMuIEEgbmV3IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFk
ZGVkLgorICAgICAgICAod2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0UGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8pOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSk6CisgICAgICAg
ICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZp
Y2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAod2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktp
dENlcnRpZmljYXRlSW5mbzo6X1dlYktpdENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KTogU3VwcG9ydCBUTFMKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgYSBnaXZlbiBob3N0LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTog
QWRkZWQgbmV3IHNpZ25hbC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyk6IEVtaXQgbmV3IHNpZ25hbCB3aXRoCisgICAgICAgIFdlYktpdENlcnRpZmljYXRl
SW5mbyBhbmQgaG9zdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVz
dExvYWRGYWlsZWRXaXRoVGxzRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3Q6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QpOiBTZW5kCisgICAgICAgIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyB0byBhbGxvdyBhIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBOZXcgbWVz
c2FnZSB0byB0ZWxsCisgICAgICAgIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBzcGVjaWZpYyBUTFMg
Y2VydGlmaWNhdGUgZm9yIGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOiBBbGxvdworICAgICAgICBjZXJ0aWZpY2F0
ZSBhbmQgaG9zdCBwYWlyLgorCiAyMDEzLTEwLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGRlbGV0ZUFsbFZhbHVlcyBpbiBOUFJlbW90
ZU9iamVjdE1hcDo6cGx1Z2luRGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxOWZkNTk0MjU4YjI3ODMwMzA1N2FlMGU3MGQxYjZhODg3MmJjMmNlLi5kNTBlMjIwYWNi
YTU0NGFmNzJjMmUzNjI4ZmQyZDJiMDFlYmJiZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwK
QEAgLTY3Myw2ICs2NzQsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlz
dFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGMwYmQwZmE0NGYxNDk5N2IxMzU4ODcxNDdkNGY0OTFkZTc1MDkxMzUu
LjExYzZkNGU2YjRmYWQ3YzY3YTRjOWNlODg0MmQ2YWFmYmI2ZGRlMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCkBAIC04Nyw2ICs4Nyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTI4
Niw2ICsyODksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJLaXQyX0lO
U1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaApp
bmRleCA4YzIzMWYzNmRiMzJmOGQ4YjQwMjY3YjZkYjQ1YzE0N2Y2MWMwNTUwLi5jOTc1OWEwYmI3
OTI2MjQ4MTMyZjI1MDhmMGU0ZmZmY2QzMWI2ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgKQEAgLTQ5LDYgKzQ5LDkg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB+UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKTsK
IAorICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkg
e21fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsgfQorICAgIHZvaWQgc2V0VExTRXJyb3JzKEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycykge21fdGxzRXJyb3JzID0gdGxzRXJyb3JzOyB9
CisKICAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9j
ZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycygp
IGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3JzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFlOWMxMWIyZWUzZDVhNmViMDNjMDUyMmFiMTU3NWVjZjI4YmRlMWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgiCisKKyNpbmNsdWRl
ICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdl
YktpdENlcnRpZmljYXRlSW5mbworICogQFNob3J0X2Rlc2NyaXB0aW9uOiBCb3hlZCB0eXBlIHRv
IGVuY2Fwc3VsYXRlIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbgorICogQFRpdGxlOiBXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBX
aGVuIGEgY2xpZW50IGxvYWRzIGEgcGFnZSBvdmVyIEhUVFBTIHdoZXJlIHRoZXJlIGlzIGFuIHVu
ZGVybHlpbmcgVExTIGVycm9yCisgKiBXZWJLaXQgd2lsbCBmaXJlIGEgI1dlYktpdFdlYlZpZXc6
OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyB3aXRoIGEKKyAqICNXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8gYW5kIHRoZSBob3N0IG9mIHRoZSBmYWlsaW5nIFVSSS4KKyAqCisgKiBUbyBoYW5kbGUg
dGhpcyBzaWduYWwgYXN5bmNocm9ub3VzbHkgeW91IHNob3VsZCBjb3B5IHRoZSAjV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvCisgKiB3aXRoICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm86OndlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2NvcHkuCisgKi8KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19jb3B5LCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKQorCitjb25zdCBQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbyYgd2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0UGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvKQoreworICAgIEFTU0VSVChpbmZv
KTsKKyAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvOworfQorCisvKioKKyAqIHdlYmtp
dF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHk6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvCisgKgorICogTWFrZSBhIGNvcHkgb2YgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisg
KgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOworCisgICAg
V2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBjb3B5ID0gZ19zbGljZV9uZXcwKFdlYktpdENlcnRpZmlj
YXRlSW5mbyk7CisgICAgbmV3IChjb3B5KSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8oaW5mbyk7Cisg
ICAgcmV0dXJuIGNvcHk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJl
ZToKKyAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBGcmVlIHRoZSAj
V2ViS2l0Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLwordm9pZCB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworCisgICAgaW5mby0+fldlYktpdENlcnRpZmlj
YXRlSW5mbygpOworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8sIGluZm8p
OworfQorCisvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNh
dGU6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogR2V0IHRoZSAj
R1Rsc0NlcnRpZmljYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAjV2ViS2l0Q2VydGlmaWNh
dGVJbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIGNlcnRpZmljYXRl
IG9mIEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLworR1Rsc0NlcnRpZmljYXRlKiB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlKFdlYktpdENlcnRpZmljYXRl
SW5mbyAqaW5mbykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmZvLCAwKTsKKworICAg
IHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKTsKK30KKworLyoqCisg
KiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9yczoKKyAqIEBpbmZvOiBhICNX
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFn
cyB2ZXJpZmljYXRpb24gc3RhdHVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgKiAjV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLgorICoKKyAqIFJldHVybnM6IFRoZSB2ZXJpZmljYXRpb24gc3RhdHVzIG9m
IEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjQKKyAqLworR1Rsc0NlcnRpZmljYXRlRmxhZ3Mgd2Vi
a2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZv
ICppbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIHN0YXRpY19jYXN0PEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSk7CisKKyAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJ
bmZvLnRsc0Vycm9ycygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDRhYmIyMWJj
ZmFlMzJmOGI5Y2U5YzcwYjJjNmFiZmI0Y2UzNmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lE
RV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJr
aXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZu
ZGVmIFdlYktpdENlcnRpZmljYXRlSW5mb19oCisjZGVmaW5lIFdlYktpdENlcnRpZmljYXRlSW5m
b19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVm
aW5lIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZv
X2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8gV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19nZXRfdHlwZSAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8gKgord2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSAgICAgICAgICAg
ICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlICAgICAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIEdUbHNDZXJ0aWZpY2F0ZSAqCit3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlIChXZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8gKmluZm8pOworCitXRUJLSVRfQVBJIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzCit3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyAgICAgIChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8g
KmluZm8pOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZDY5YWMzYzZlMWRhN2M2YmQ1NTZmYmRhNDAzYzlhYjdiOGNlMzU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktp
dENlcnRpZmljYXRlSW5mb1ByaXZhdGVfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJX
ZWJLaXRQcml2YXRlLmgiCisKK3N0cnVjdCBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvIHsKKyAgICBf
V2ViS2l0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNh
dGVJbmZvKQorICAgIHsKKyAgICB9CisKKyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKFdlYktp
dENlcnRpZmljYXRlSW5mbyogaW5mbykKKyAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+
Y2VydGlmaWNhdGVJbmZvKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKK307CisKK2NvbnN0IFdlYktpdDo6UGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8mIHdlYmtpdENlcnRpZmljYXRlSW5mb0dldFBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyopOworCisjZW5kaWYgLy8gV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGQyYzhiYmRmOWI1NDRjZWI0NTIx
OGYwM2U5MzZlNzI1NDBjZjdkNWUuLmMwMTJlYzNiNmJjM2FmZWMzODRmN2IxYmI5YjA3ZjE5MmVh
OTRmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw4ICsyMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIldlYkNlcnRpZmlj
YXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNh
dGVJbmZvUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3du
bG9hZFByaXZhdGUuaCIKQEAgLTgwNyw2ICs4MDksMjQgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRl
eHRfcHJlZmV0Y2hfZG5zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGhv
c3QKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoU3RyaW5nOjpmcm9tVVRGOCgiUHJlZmV0Y2hETlMiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6
YWRvcHQobWVzc2FnZSkuZ2V0KCkpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3Q6CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2Vi
Q29udGV4dAorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbworICogQGhvc3Q6IHRo
ZSBob3N0IGZvciB3aGljaCBhIGNlcnRpZmljYXRlIGlzIHRvIGJlIGFsbG93ZWQKKyAqCisgKiBJ
Z25vcmUgZnVydGhlciBUTFMgZXJyb3JzIG9uIHRoZSBAaG9zdCBmb3IgdGhlIGNlcnRpZmljYXRl
IHByZXNlbnQgaW4gQGluZm8uCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rs
c19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8qIGluZm8sIGNvbnN0IGdjaGFyKiBob3N0KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKGluZm8pOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisKKyAgICBSZWZQdHI8
V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUlu
Zm86OmNyZWF0ZSh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
byhpbmZvKSk7CisgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9t
VVRGOChob3N0KSk7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JD
cmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2Fk
UHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCmluZGV4IGRkMzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2
YWYuLjEzNzlmYzNhMzYyMjc5MWJhZjg0NGM5NmRiY2E3ODM3YWRiMzM1MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAg
LTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgV2ViS2l0V2ViQ29udGV4dF9oCiAKICNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5o
PgpAQCAtNjQsNyArNjUsNyBAQCB0eXBlZGVmIGVudW0gewogLyoqCiAgKiBXZWJLaXRUTFNFcnJv
cnNQb2xpY3k6CiAgKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRTogSWdub3JlIFRM
UyBlcnJvcnMuCi0gKiBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMg
bWFrZSB0aGUgbG9hZCB0byBmaW5pc2ggd2l0aCBhbiBlcnJvci4KKyAqIEBXRUJLSVRfVExTX0VS
Uk9SU19QT0xJQ1lfRkFJTDogVExTIGVycm9ycyBtYWtlIHRoZSBsb2FkIGZpbmlzaCB3aXRoIGFu
IGVycm9yIGFuZCBhIG5vdGlmaWNhdGlvbiBzaWduYWwuCiAgKgogICogRW51bSB2YWx1ZXMgdXNl
ZCB0byBkZW5vdGUgdGhlIFRMUyBlcnJvcnMgcG9saWN5LgogICovCkBAIC0xOTksNiArMjAwLDEx
IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2Rp
cmVjdG9yeSAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChX
ZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
ICAgICAgICAgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKKwogR19F
TkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDQ0NjI5ZWNmZmRhNjI1MzZkODhhZjFjZjU4MzE2
MTk1NjdhZDk1MTUuLjAyMTA5OTI2ZDVhMzkwMDZkZWVkMWE4MzFmMzVmNGUxNjc4YmIzNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCiAjaW5j
bHVkZSAiSW1hZ2VPcHRpb25zLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8u
aCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0
TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCkBAIC0zMCw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNs
dWRlICJXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRl
SW5mb1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRD
b250ZXh0TWVudVByaXZhdGUuaCIKQEAgLTg5LDYgKzg5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBlbnVtIHsKICAgICBMT0FEX0NIQU5HRUQsCiAgICAgTE9BRF9GQUlMRUQsCisgICAg
TE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTLAogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RP
X1NIT1csCkBAIC04NDcsNiArODQ4LDM2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAg
ICAgICAgICAgR19UWVBFX1BPSU5URVIpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6bG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNX
ZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBpbmZv
OiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAgICAgKiBAaG9zdDogdGhlIGhvc3Qgb24gd2hj
aCB0aGUgZXJyb3Igb2NjdXJyZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBhIFRMUyBl
cnJvciBvY2N1cnMgZHVyaW5nIGEgbG9hZCBvcGVyYXRpb24uIFRoZSBAaW5mbworICAgICAqIG9i
amVjdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3Igc3VjaCBhcyB0aGUgI0dU
bHNDZXJ0aWZpY2F0ZQorICAgICAqIGFuZCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdzLlRvIGFs
bG93IGFuIGV4Y2VwdGlvbiBmb3IgdGhpcyBjZXJ0aWZpY2F0ZQorICAgICAqIGFuZCB0aGlzIGhv
c3QgdXNlICN3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
LgorICAgICAqCisgICAgICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlv
dSBzaG91bGQgY29weSB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mbworICAgICAqIHdpdGggI3dl
YmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjQKKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJ
VEhfVExTX0VSUk9SU10gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgt
dGxzLWVycm9ycyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpLAor
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3Vt
dWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19CT1hF
RF9TVFJJTkcsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwgLyogbnVtYmVyIG9mIHBh
cmFtZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gIHwg
R19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsK
KworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZToKICAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAg
ICAgKgpAQCAtMTUwOSw3ICsxNTQwLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9B
RF9GSU5JU0hFRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJy
b3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciAqZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRl
KiBjZXJ0aWZpY2F0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3Jz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciog
ZXJyb3IsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSkKIHsKICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIGZh
bHNlKTsKICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KHdlYlZp
ZXcpOwpAQCAtMTUxNyw2ICsxNTQ4LDE0IEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRX
aXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhCiAgICAg
V2ViS2l0VExTRXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CiAgICAgaWYg
KHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkgewogICAg
ICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVE
LCBmYWlsaW5nVVJJLCBlcnJvcik7CisKKyAgICAgICAgR093blB0cjxTb3VwVVJJPiBzb3VwVVJJ
KHNvdXBfdXJpX25ldyhmYWlsaW5nVVJJKSk7CisgICAgICAgIFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvLnNldENlcnRpZmlj
YXRlKGNlcnRpZmljYXRlKTsKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvLnNldFRMU0Vycm9ycyh0
bHNFcnJvcnMpOworICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gaW5mbyhjZXJ0aWZpY2F0
ZUluZm8pOworICAgICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsICZp
bmZvLCBzb3VwVVJJLT5ob3N0LCAmcmV0dXJuVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKaW5kZXggYTRkNmU0MzllY2E3MjZlOTA2Mzc2MTMyMTZhNTE0NzdlYjdhZTk3ZC4uNGY3MmZm
ZDJmZjBhNTJkNTM0YzhjNzExM2ExNjU3ZjhiMTgwMWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjAwLDU4ICsyMDAsNTkg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsK
ICAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAgIHZvaWQgICAgICAgKCog
bG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsKLSAgICBnYm9vbGVhbiAg
ICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJyb3IpOwotCi0gICAgR3Rr
V2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiByZWFkeV90b19zaG93KSAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAg
dm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0K
LSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlhbG9nKSAg
OwotCi0gICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgKmRlY2lz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFBvbGljeURlY2lzaW9uVHlwZSAgICAgdHlwZSk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBwZXJtaXNz
aW9uX3JlcXVlc3QpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCAgICAgKnBlcm1pc3Npb25fcmVxdWVzdCk7Ci0gICAgdm9pZCAgICAg
ICAoKiBtb3VzZV90YXJnZXRfY2hhbmdlZCkgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVycyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBwcmludCkgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcmludE9w
ZXJhdGlvbiAgICAgICAgKnByaW50X29wZXJhdGlvbik7Ci0gICAgdm9pZCAgICAgICAoKiByZXNv
dXJjZV9sb2FkX3N0YXJ0ZWQpICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVSSVJlcXVlc3QgICAgICAgICAgICAqcmVx
dWVzdCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBlbnRlcl9mdWxsc2NyZWVuKSAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBs
ZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QgICAg
KnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAg
ICpjb250ZXh0X21lbnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAg
ICAgKmhpdF90ZXN0X3Jlc3VsdCk7Ci0gICAgdm9pZCAgICAgICAoKiBjb250ZXh0X21lbnVfZGlz
bWlzc2VkKSAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAg
dm9pZCAgICAgICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOwotICAg
IHZvaWQgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCkgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgICBldmVudCk7Ci0gICAg
Z2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVkKSAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRpY2F0
ZSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBsb2FkX2NoYW5n
ZWQpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsKKyAgICBnYm9vbGVhbiAgICgqIGxv
YWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICAgKmZhaWxpbmdfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICplcnJvcik7CisKKyAgICBH
dGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hv
dykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7
CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIGNsb3Nl
KSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOworCisgICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyaXB0RGlhbG9nICAgICAg
ICAgICpkaWFsb2cpICA7CisKKyAgICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNp
c2lvbiAgICAgICAgKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAgICB0eXBlKTsKKyAgICBn
Ym9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAgICAgKnBlcm1pc3Npb25f
cmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJnZXRfY2hhbmdlZCkgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAg
ICAgICpoaXRfdGVzdF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7Cisg
ICAgZ2Jvb2xlYW4gICAoKiBwcmludCkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9v
cGVyYXRpb24pOworICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAgICAg
ICAgICAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVlc3QpOworICAgIGdib29s
ZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBsZWF2ZV9mdWxsc2NyZWVu
KSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAg
ICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3Qp
OworICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29u
dGV4dF9tZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAg
ICAqaGl0X3Rlc3RfcmVzdWx0KTsKKyAgICB2b2lkICAgICAgICgqIGNvbnRleHRfbWVudV9kaXNt
aXNzZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAg
IHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7
CisgICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgICBldmVu
dCk7CisgICAgZ2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVkKSAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgKCog
YXV0aGVudGljYXRlKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4g
ICAoKiBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICppbmZvKTsKICAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEp
ICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDQpICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDUpICh2b2lkKTsKLSAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGViMWYyN2RiMjk4Y2FlMzg3ODFiNWRiNDI0OGEzZDZiODdkYTRi
YTEuLmZkMGFlZDIxMGE0N2NhYTE5NzJkMWMzNjIxZGFkNmM3NmZmYTM3YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaApAQCAtMzMsNyArMzMsNyBAQAogCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50KTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRG
YWlsZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGlu
Z1VSSSwgR0Vycm9yKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9y
cyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICosIEdUbHND
ZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0xv
YWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiBmYWlsaW5n
VVJJLCBHRXJyb3IqLCBHVGxzQ2VydGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdTZXRFc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MoV2ViS2l0V2ViVmlldyos
IGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MpOwogdm9pZCB3ZWJraXRXZWJWaWV3U2V0VGl0
bGUoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld1Vw
ZGF0ZVVSSShXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA3NmQwMTA0
MTI2ODJlODdmNGY3YzkzMTlhY2YzNGNkNTAyZWUxMzY0Li5lM2NmOWE2OGM2YjM5ZDE3OWFkYTU1
OWNhYTQ4ZGFmYzExYWY1YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTQzLDYgKzQzLDcg
QEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0
LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRTZWN1cml0eU1hbmFnZXIu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYlZpZXdHcm91cC54bWwi
Lz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLnhtbCIv
PgogICA8L2NoYXB0ZXI+CiAKICAgPGNoYXB0ZXI+CkBAIC02MSw2ICs2MiwxMSBAQAogICAgIDx0
aXRsZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjI8L3RpdGxlPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9hcGktaW5kZXgtMi4yLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRl
PgogICA8L2luZGV4PiAgCi0gIAorCisgIDxpbmRleCBpZD0iYXBpLWluZGV4LTItNCIgcm9sZT0i
Mi40Ij4KKyAgICA8dGl0bGU+SW5kZXggb2YgbmV3IHN5bWJvbHMgaW4gMi40PC90aXRsZT4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuNC54bWwiPjx4aTpmYWxsYmFjayAv
PjwveGk6aW5jbHVkZT4KKyAgPC9pbmRleD4KKwogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5u
b3RhdGlvbi1nbG9zc2FyeS54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9v
az4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGU4YmU2MWZlNGUzYTRmMjEyNjI3N2Zm
MzIyZTM5OTk3ODNjZGJlMzguLjgwNTc2M2IxZjI0MzgyNDRkZDMyYjJmMGU4NDdmNjkzOTc1NTYw
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNDgsNiArNDgsNyBAQCB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5CiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X3ByZWZldGNoX2Ru
cwogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQord2Via2l0X3dl
Yl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdAogCiA8U1VCU0VDVElPTiBV
UkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrCkBAIC0xMDk3LDMgKzEw
OTgsMTggQEAgV0VCS0lUX1NDUklQVF9XT1JMRF9HRVRfQ0xBU1MKIFdlYktpdFNjcmlwdFdvcmxk
UHJpdmF0ZQogd2Via2l0X3NjcmlwdF93b3JsZF9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KKzxGSUxFPldlYktpdENlcnRpZmljYXRlSW5mbzwvRklMRT4KK1dlYktpdENlcnRpZmlj
YXRlSW5mbword2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weQord2Via2l0X2NlcnRpZmljYXRl
X2luZm9fZnJlZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZQor
d2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMKKworPFNVQlNFQ1RJT04gU3Rh
bmRhcmQ+CitXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPCisKKzxTVUJTRUNUSU9OIFByaXZh
dGU+Cit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5
cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5
cGVzCmluZGV4IDViMWVhM2MxZmRlNDZkM2YxNjdjZjcwMTMyM2Y4ZmMwMDg0MGYyOWUuLjRiNTgz
YmFkOWIwYTdhNmJhMTAyZjczMjJlNGM3MDdhZjY1YzljNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTI3
LDMgKzI3LDQgQEAgd2Via2l0X3dlYl9wYWdlX2dldF90eXBlCiB3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9nZXRfdHlwZQogd2Via2l0X2NyZWRlbnRpYWxfZ2V0X3R5cGUKIHdlYmtpdF9m
cmFtZV9nZXRfdHlwZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKaW5kZXgg
ZGI2Y2NjODUyMmQxNTFjYjljNDk1ZDlkNDNmM2U5NmY2NTI1MmE2ZS4uZmY1Y2U2ZDllNGIyZGY1
NGEzYTgwMjVkZDI4ODE2YzUwMTdkZDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKQEAgLTI4LDYgKzI4LDExIEBAIHN0YXRp
YyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGlu
ZGV4SFRNTCA9ICI8aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0
bWxsPiI7CiBzdGF0aWMgY29uc3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48
c2NyaXB0IHNyYz1cIiVzXCI+PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3Jj
PVwiJXNcIiBhbGlnbj1cInJpZ2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29u
c3QgY2hhciBUTFNFeHBlY3RlZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJt
aXNzaW9uIHRlc3QiOworc3RhdGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9
CisgICAgIjxodG1sPiIKKyAgICAiPGhlYWQ+PHRpdGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNz
aW9uIHRlc3Q8L3RpdGxlPjwvaGVhZD4iCisgICAgIjxib2R5PjwvYm9keT48L2h0bWw+IjsKIAog
Y2xhc3MgU1NMVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgpAQCAtMTMy
LDYgKzEzNyw3NiBAQCBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250
YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CiB9CiAKK2NsYXNzIFRMU0Vy
cm9yc1Rlc3Q6IHB1YmxpYyBTU0xUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKFRMU0Vycm9yc1Rlc3QpOworCisgICAgVExTRXJyb3JzVGVzdCgpCisgICAgeworICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVy
cm9ycyIsIEdfQ0FMTEJBQ0socnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayksIHRo
aXMpOworICAgIH0KKworICAgIH5UTFNFcnJvcnNUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENI
X0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8p
CisgICAgICAgICAgICB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKG1fY2VydGlmaWNhdGVJ
bmZvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuTG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnNDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZv
LCBjb25zdCBjaGFyKiBob3N0LCBUTFNFcnJvcnNUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAg
dGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoaW5mbywgaG9zdCk7CisgICAgICAgIHJl
dHVybiBUUlVFOworICAgIH0KKworICAgIHZvaWQgcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMo
V2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvLCBjb25zdCBjaGFyKiBob3N0KQorICAgIHsKKyAg
ICAgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgd2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZnJlZShpbmZvKTsKKyAgICAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSB3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19jb3B5KGluZm8pOworICAgICAgICBtX2hvc3Quc2V0KGdfc3RyZHVw
KGhvc3QpKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICB9CisK
KyAgICB2b2lkIHdhaXRVbnRpbExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKCkKKyAgICB7CisgICAg
ICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0aWZpY2F0ZUluZm87CisgICAgR093
blB0cjxjaGFyPiBtX2hvc3Q7CisKK307CisKK3N0YXRpYyB2b2lkIHRlc3RMb2FkRmFpbGVkV2l0
aFRsc0Vycm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVz
dC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9s
aWN5KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKKworICAgIC8vIFRo
ZSBsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgc2lnbmFsIHNob3VsZCBiZSBlbWl0dGVkIHdo
ZW4gdGhlcmUgaXMgYSBUTFMgZmFpbHVyZS4KKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoKTsKKyAgICAvLyBUZXN0IHRoZSBXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8gQVBJLgorICAgIGdfYXNzZXJ0KEdfSVNfVExTX0NFUlRJRklDQVRFKHdlYmtp
dF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUodGVzdC0+bV9jZXJ0aWZpY2F0
ZUluZm8pKSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19n
ZXRfdGxzX2Vycm9ycyh0ZXN0LT5tX2NlcnRpZmljYXRlSW5mbyksID09LCBHX1RMU19DRVJUSUZJ
Q0FURV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9ob3N0LmdldCgp
LCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBzU2VydmVyLT5iYXNlVVJJKCkpKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVz
dDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1f
bG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxl
ZCk7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGFuIGV4Y2VwdGlvbiBmb3IgdGhpcyBjZXJ0aWZp
Y2F0ZSBvbiB0aGlzIGhvc3QuCisgICAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0
aWZpY2F0ZV9mb3JfaG9zdChjb250ZXh0LCB0ZXN0LT5tX2NlcnRpZmljYXRlSW5mbywgdGVzdC0+
bV9ob3N0LmdldCgpKTsKKyAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxvYWQgd2l0aG91dCBl
cnJvcnMuCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90
ZXN0LXRscy8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwor
CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRUcmFj
a2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVk
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRy
YWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dl
Yl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgVExTRXhwZWN0ZWRTdWNjZXNz
VGl0bGUpOworfQorCisKIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZl
ciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hU
YWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2Ut
Pm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTE0OCw2ICsyMjMsMTAgQEAgc3RhdGlj
IHZvaWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdl
KiBtZXNzYWdlLCBjb25zdAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2Fn
ZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBz
dHJsZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3Rh
dHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
Y29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9l
cXVhbChwYXRoLCAiL3Rlc3QtdGxzLyIpKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3Rh
dHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgVExTU3Vj
Y2Vzc0hUTUxTdHJpbmcsIHN0cmxlbihUTFNTdWNjZXNzSFRNTFN0cmluZykpOworICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKICAgICB9
IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFU
VVNfTk9UX0ZPVU5EKTsKIH0KQEAgLTE5MSw3ICsyNzAsMTIgQEAgdm9pZCBiZWZvcmVBbGwoKQog
CiAgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRlc3RTU0wpOwogICAg
IEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnNlY3VyZS1jb250
ZW50IiwgdGVzdEluc2VjdXJlQ29udGVudCk7Ci0gICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJD
b250ZXh0IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAg
Ly8gSW4gdGhpcyBjYXNlIHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgZG9lcyBtYXR0ZXIgYmVjYXVz
ZSB0bHMtZXJyb3JzLXBvbGljeSB0ZXN0cyB0aGUgZGVmYXVsdCBwb2xpY3ksCisgICAgLy8gYW5k
IGV4cGVjdHMgdGhhdCBubyBleGNlcHRpb24gd2lsbCBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoaXMg
Y2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpciBhcyBpcworICAgIC8vIGRvbmUgaW4gdGhlIHRscy1w
ZXJtaXNzaW9uLXJlcXVlc3QgdGVzdC4KKyAgICBTU0xUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAidGxzLWVycm9ycy1wb2xpY3kiLCB0ZXN0VExTRXJyb3JzUG9saWN5KTsKKyAgICBUTFNFcnJv
cnNUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3Jz
IiwgdGVzdExvYWRGYWlsZWRXaXRoVGxzRXJyb3JzKTsKKwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCA3MGUzYjQz
MzA1OTNlZjZkMGZkNzg4YmEyZTkzMzFmNDIwZjg5Nzg2Li44ZDgyMTk5MDM5OThkOTVmM2U1OTll
ODE2ZDA5Y2M0ODYwNjc1NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJk
TGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRDb250ZXh0TWVudS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4
dE1lbnVBY3Rpb25zLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUl0ZW0u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJt
YXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFy
c2hhbC5saXN0CmluZGV4IDQyMDc2NmVhN2YxNTMyM2FhMmJkZTcxZDY3NDE2Zjg0YWE0YjQwZGIu
LmUxY2ZlMDcyMTZkMzliMGU5OGQ2MDQ3NzFiZTA2Mjk2NWQyNjg3ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdApAQCAt
MSw0ICsxLDUgQEAKIEJPT0xFQU46Qk9YRUQKK0JPT0xFQU46Qk9YRUQsU1RSSU5HCiBCT09MRUFO
OkVOVU0sU1RSSU5HLFBPSU5URVIKIEJPT0xFQU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxCT1hF
RCxPQkpFQ1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCBjNjgx
YjkwM2U0MjVlNDQ5NjE4OTEwZTJmMzhhMjk1NGM5N2Q0MjhiLi5lMzIzMzU4M2EwY2UyNzdmOTJh
MzdhYWVhOGI1YTU1ZjBkNTkwOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCkBAIC0xMDcxLDEwICsxMDcxLDE1IEBAIHZvaWQgV2ViQ29udGV4dDo6YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyoKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbHNlCisjaWYgVVNFKFNPVVApCisgICAgbV9wcm9jZXNz
ZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdChjZXJ0aWZpY2F0ZS0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSwgaG9z
dCksIDApOworICAgIHJldHVybjsKKyNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNlcnRpZmljYXRl
KTsKICAgICBVTlVTRURfUEFSQU0oaG9zdCk7CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogSXQncyB1
bmNsZWFyIHdoZXRoZXIgd2Ugd2FudCB0aGlzIFNQSSB0byBiZSBleHBvc2VkIGFuZCB1c2VkIGZv
ciBjbGllbnRzIHRoYXQgZG9uJ3QgdXNlIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyNlbmRpZgorCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggYmQ4ODIwMTIxODllMTNmZWIyZDNlYzkwOTFhOTAwNGJiOWQ5NmQ0Zi4u
Njc5ZjNkODhiZmI2MWUwZmY0NDNmYzZiMjgxMDk4Yjk2YjFmOTFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNo
ZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xNjAsNiAr
MTYxLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKIAorI2lm
ICFFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFVTRShTT1VQKQorICAgIHZvaWQgYWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKKyNlbmRpZgorI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViUHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTliY2U2MzYyNjgwYzZiMjYxMWMwZTNlNjdhNDk5NWJi
Y2Q0N2I4Yy4uNDAwNWY5MTUwOGZmYzU3ZThmOGMyMmVhNjQ2ZTYyY2YxY2U1YWMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
ODIsNCArODIsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBm
bGFnKTsKICNlbmRpZgorCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaWYgVVNFKFNP
VVApCisgICAgQWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYktpdDo6UGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGUsIFdURjo6U3RyaW5nIGhvc3QpCisjZW5k
aWYKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzU291cC5jcHAKaW5kZXggYzdiZWE5Mjg2NGYxYzI4YTc2MDBjNjUzZjAxOWY4NjVhY2U3
ZTI5ZC4uNDA0NWNkZWRkODliYzg1YTRmMGMzMjdhNWJkOWQ0ZDg4OTFiODQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC0y
MDgsNCArMjA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVT
U0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAorI2lmICFFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQordm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3QoY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3Qg
U3RyaW5nJiBob3N0KQoreworICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRD
ZXJ0aWZpY2F0ZShob3N0LCBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7Cit9CisjZW5k
aWYKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213877</attachid>
            <date>2013-10-10 06:03:14 -0700</date>
            <delta_ts>2013-10-10 07:15:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131010140316.patch</filename>
            <type>text/plain</type>
            <size>44404</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjQ4ZDEwMWM0NzQzYjIw
NTlhOTI2ZGY5YzA1MTE3NjZiOGYzY2FkNy4uNWI5MTBkNmUwNjQ2NjVmYjI5ZDg0OGI4MzFiZjU4
ZDRkZjdhODQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTEwICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJy
b3JzIHRoYXQgaXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
IGJveGVkIHR5cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJv
cnMuIEEgbmV3IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKToKKyAgICAgICAgKiBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFk
ZGVkLgorICAgICAgICAod2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0UGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8pOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSk6CisgICAgICAg
ICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZp
Y2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAod2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktp
dENlcnRpZmljYXRlSW5mbzo6X1dlYktpdENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KTogU3VwcG9ydCBUTFMKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgYSBnaXZlbiBob3N0LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTog
QWRkZWQgbmV3IHNpZ25hbC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyk6IEVtaXQgbmV3IHNpZ25hbCB3aXRoCisgICAgICAgIFdlYktpdENlcnRpZmljYXRl
SW5mbyBhbmQgaG9zdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVz
dExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3Q6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QpOiBTZW5kCisgICAgICAgIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyB0byBhbGxvdyBhIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBOZXcgbWVz
c2FnZSB0byB0ZWxsCisgICAgICAgIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBzcGVjaWZpYyBUTFMg
Y2VydGlmaWNhdGUgZm9yIGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOiBBbGxvdworICAgICAgICBjZXJ0aWZpY2F0
ZSBhbmQgaG9zdCBwYWlyLgorCiAyMDEzLTEwLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGRlbGV0ZUFsbFZhbHVlcyBpbiBOUFJlbW90
ZU9iamVjdE1hcDo6cGx1Z2luRGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxOWZkNTk0MjU4YjI3ODMwMzA1N2FlMGU3MGQxYjZhODg3MmJjMmNlLi5kNTBlMjIwYWNi
YTU0NGFmNzJjMmUzNjI4ZmQyZDJiMDFlYmJiZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwK
QEAgLTY3Myw2ICs2NzQsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlz
dFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGMwYmQwZmE0NGYxNDk5N2IxMzU4ODcxNDdkNGY0OTFkZTc1MDkxMzUu
LjExYzZkNGU2YjRmYWQ3YzY3YTRjOWNlODg0MmQ2YWFmYmI2ZGRlMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCkBAIC04Nyw2ICs4Nyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTI4
Niw2ICsyODksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJLaXQyX0lO
U1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5j
cHAKaW5kZXggYzY5MDRiNGFlNmU1YjUzMmIwMzlkZDVjZmRhNmU3ZWViYTY3MTRlYi4uYjNkMWJm
MGExNjAyZWI2ZDY3ODZkY2JlNmI4NGQ1ODEwYWNhZmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcApAQCAtNTQs
NiArNTQsMTIgQEAgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXIKIHsKIH0KIAorUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0aWZpY2F0ZUZsYWdz
IHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICA6IG1fY2VydGlm
aWNhdGUoY2VydGlmaWNhdGUpCisgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJvcnMpCit7Cit9CisK
IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjp+UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvLmgKaW5kZXggOGMyMzFmMzZkYjMyZjhkOGI0MDI2N2I2ZGI0NWMxNDdmNjFjMDU1MC4u
MDY3NTljNDMxNjRlYjVlODFiOWYyZjYwNDBlNmU4NDk0NWJjMmUyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCkBAIC00
Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogICAg
IGV4cGxpY2l0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8oR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogICAgIH5QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogCiAgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFmNTM3ZTc5MWFmOTAxYTk3NjNiY2FkMzQ3NjI1MzA2NmE1OWFmNzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNF
Q1RJT046IFdlYktpdENlcnRpZmljYXRlSW5mbworICogQFNob3J0X2Rlc2NyaXB0aW9uOiBCb3hl
ZCB0eXBlIHRvIGVuY2Fwc3VsYXRlIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbgorICogQFRp
dGxlOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcs
ICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogV2hlbiBhIGNsaWVudCBsb2FkcyBhIHBhZ2Ugb3Zl
ciBIVFRQUyB3aGVyZSB0aGVyZSBpcyBhbiB1bmRlcmx5aW5nIFRMUyBlcnJvcgorICogV2ViS2l0
IHdpbGwgZmlyZSBhICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMg
c2lnbmFsIHdpdGggYQorICogI1dlYktpdENlcnRpZmljYXRlSW5mbyBhbmQgdGhlIGhvc3Qgb2Yg
dGhlIGZhaWxpbmcgVVJJLgorICoKKyAqIFRvIGhhbmRsZSB0aGlzIHNpZ25hbCBhc3luY2hyb25v
dXNseSB5b3Ugc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHRoZQorICogI1dlYktpdENlcnRpZmljYXRl
SW5mbyB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKS4KKyAqLworCitHX0RFRklO
RV9CT1hFRF9UWVBFKFdlYktpdENlcnRpZmljYXRlSW5mbywgd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHksIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZv
X2ZyZWUpCisKK2NvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0
ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGlu
Zm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUlu
Zm87Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weToKKyAqIEBpbmZv
OiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBNYWtlIGEgY29weSBvZiB0aGUgI1dl
YktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEg
Y29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBTaW5jZTog
Mi40CisgKi8KK1dlYktpdENlcnRpZmljYXRlSW5mbyogd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
Y29weShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoaW5mbywgMCk7CisKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGNvcHkgPSBnX3Ns
aWNlX25ldzAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKTsKKyAgICBuZXcgKGNvcHkpIFdlYktpdENl
cnRpZmljYXRlSW5mbyhpbmZvKTsKKyAgICByZXR1cm4gY29weTsKK30KKworLyoqCisgKiB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19mcmVlOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRl
SW5mbworICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogU2lu
Y2U6IDIuNAorICovCit2b2lkIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUoV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5mbyk7CisKKyAg
ICBpbmZvLT5+V2ViS2l0Q2VydGlmaWNhdGVJbmZvKCk7CisgICAgZ19zbGljZV9mcmVlKFdlYktp
dENlcnRpZmljYXRlSW5mbywgaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZToKKyAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8KKyAqCisgKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGUgYXNzb2NpYXRlZCB3aXRoIHRo
aXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiBUaGUgY2VydGlmaWNhdGUgb2YgQGluZm8uCisgKgorICogU2luY2U6IDIuNAorICov
CitHVGxzQ2VydGlmaWNhdGUqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlm
aWNhdGUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGluZm8sIDApOworCisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmljYXRlSW5mby5jZXJ0
aWZpY2F0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIEdldCB0
aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdzIHZlcmlmaWNhdGlvbiBzdGF0dXMgYXNzb2NpYXRlZCB3
aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJuczogVGhl
IHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitH
VGxzQ2VydGlmaWNhdGVGbGFncyB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9y
cyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaW5mbywgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKTsKKworICAgIHJl
dHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlZjE2NDA1ZTgzY2Y2MTJiM2FiZTAzZmE2NmE2MWQ1YWNiMzhmZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRl
ZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKyNkZWZp
bmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ0VSVElGSUNBVEVfSU5GTyAo
d2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdENlcnRpZmljYXRlSW5mbyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm87CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlICAgICAgICAgICAgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19jb3B5ICAgICAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8p
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUgICAgICAg
ICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgR1Rs
c0NlcnRpZmljYXRlICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNh
dGUgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzICAgICAg
KFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlm
aWNhdGVJbmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjExYjc4NTg2ODg2MzYx
MWU5MTFmOTZhNzI2ZGFkZGZhYWU3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Q
cml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmlj
YXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworc3RydWN0IF9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8geworICAgIF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRpZmlj
YXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQorICAgICAg
ICA6IGNlcnRpZmljYXRlSW5mbyh0bHNFcnJvcnMsIGNlcnRpZmljYXRlKQorICAgIHsKKyAgICB9
CisKKyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5m
bykKKyAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2VydGlmaWNhdGVJbmZvKQorICAg
IHsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbzsKK307CisKK2NvbnN0IFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIHdl
YmtpdENlcnRpZmljYXRlSW5mb0dldFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRp
ZmljYXRlSW5mbyopOworCisjZW5kaWYgLy8gV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCmluZGV4IGQyYzhiYmRmOWI1NDRjZWI0NTIxOGYwM2U5MzZlNzI1NDBjZjdkNWUu
LmMwMTJlYzNiNmJjM2FmZWMzODRmN2IxYmI5YjA3ZjE5MmVhOTRmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBA
IC0yMCw4ICsyMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93
bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUuaCIKQEAgLTgw
Nyw2ICs4MDksMjQgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zKFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGhvc3QKICAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgi
UHJlZmV0Y2hETlMiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkp
OwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVf
Zm9yX2hvc3Q6CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAorICogQGluZm86IGEg
I1dlYktpdENlcnRpZmljYXRlSW5mbworICogQGhvc3Q6IHRoZSBob3N0IGZvciB3aGljaCBhIGNl
cnRpZmljYXRlIGlzIHRvIGJlIGFsbG93ZWQKKyAqCisgKiBJZ25vcmUgZnVydGhlciBUTFMgZXJy
b3JzIG9uIHRoZSBAaG9zdCBmb3IgdGhlIGNlcnRpZmljYXRlIHByZXNlbnQgaW4gQGluZm8uCisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8s
IGNvbnN0IGdjaGFyKiBob3N0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisKKyAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3
ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZSh3ZWJraXRDZXJ0
aWZpY2F0ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhpbmZvKSk7CisgICAgY29udGV4
dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdl
YkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7Cit9CisKIFdl
YktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9h
ZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGRk
MzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2YWYuLjEzNzlmYzNhMzYyMjc5MWJh
Zjg0NGM5NmRiY2E3ODM3YWRiMzM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZp
bmUgV2ViS2l0V2ViQ29udGV4dF9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgpAQCAtNjQsNyArNjUsNyBAQCB0
eXBlZGVmIGVudW0gewogLyoqCiAgKiBXZWJLaXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRTogSWdub3JlIFRMUyBlcnJvcnMuCi0gKiBAV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFrZSB0aGUgbG9hZCB0byBmaW5p
c2ggd2l0aCBhbiBlcnJvci4KKyAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDogVExT
IGVycm9ycyBtYWtlIHRoZSBsb2FkIGZpbmlzaCB3aXRoIGFuIGVycm9yIGFuZCBhIG5vdGlmaWNh
dGlvbiBzaWduYWwuCiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIFRMUyBl
cnJvcnMgcG9saWN5LgogICovCkBAIC0xOTksNiArMjAwLDExIEBAIFdFQktJVF9BUEkgdm9pZAog
d2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAgICAgKmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0
X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAg
ICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDQ0NjI5ZWNmZmRhNjI1MzZkODhhZjFjZjU4MzE2MTk1NjdhZDk1MTUuLmIyMmUyM2I3
ZmU5MjMyNTY4MzAwYzMzYWMzNGNiYjA0MWVmZTViYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMiw3ICsyMiw2IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDZXJ0
aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCkBAIC0zMCw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRN
ZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCIK
QEAgLTg5LDYgKzg5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBlbnVtIHsKICAgICBM
T0FEX0NIQU5HRUQsCiAgICAgTE9BRF9GQUlMRUQsCisgICAgTE9BRF9GQUlMRURfV0lUSF9UTFNf
RVJST1JTLAogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1csCkBAIC04NDcsNiArODQ4
LDM2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5U
RVIpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQtd2l0aC10
bHMtZXJyb3JzOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8KKyAgICAgKiBAaG9zdDogdGhlIGhvc3Qgb24gd2hpY2ggdGhlIGVycm9yIG9jY3VycmVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYSBUTFMgZXJyb3Igb2NjdXJzIGR1cmluZyBh
IGxvYWQgb3BlcmF0aW9uLiBUaGUgQGluZm8KKyAgICAgKiBvYmplY3QgY29udGFpbnMgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGVycm9yIHN1Y2ggYXMgdGhlICNHVGxzQ2VydGlmaWNhdGUKKyAgICAg
KiBhbmQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncy4gVG8gYWxsb3cgYW4gZXhjZXB0aW9uIGZv
ciB0aGlzIGNlcnRpZmljYXRlCisgICAgICogYW5kIHRoaXMgaG9zdCB1c2UgI3dlYmtpdF93ZWJf
Y29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QuCisgICAgICoKKyAgICAgKiBU
byBoYW5kbGUgdGhpcyBzaWduYWwgYXN5bmNocm9ub3VzbHkgeW91IHNob3VsZCBjb3B5IHRoZSAj
V2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgICAgICogd2l0aCB3ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19jb3B5KCkgYW5kIHJldHVybiAlVFJVRS4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVUUlVF
IHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQu
CisgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAq
CisgICAgICogU2luY2U6IDIuNAorICAgICAqLworICAgIHNpZ25hbHNbTE9BRF9GQUlMRURfV0lU
SF9UTFNfRVJST1JTXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygibG9hZC1mYWlsZWQtd2l0aC10
bHMtZXJyb3JzIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyks
CisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxvYWRfZmFpbGVkX3dpdGhfdGxzX2Vycm9ycyksCisg
ICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyogYWNjdW11
bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX0JPWEVE
X1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAyLCAvKiBudW1iZXIgb2YgcGFy
YW1ldGVycyAqLworICAgICAgICAgICAgV0VCS0lUX1RZUEVfQ0VSVElGSUNBVEVfSU5GTyAgfCBH
X1NJR05BTF9UWVBFX1NUQVRJQ19TQ09QRSwKKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOwor
CisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlOgogICAgICAqIEB3ZWJfdmll
dzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAogICAg
ICAqCkBAIC0xNTA5LDE1ICsxNTQwLDIwIEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwKICAgICBn
X3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xP
QURfRklOSVNIRUQpOwogfQogCi12b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJy
b3IgKmVycm9yLCBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0
ZSogY2VydGlmaWNhdGUpCit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9y
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3Iq
IGVycm9yLCBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSog
Y2VydGlmaWNhdGUpCiB7CiAgICAgd2Via2l0V2ViVmlld1NldElzTG9hZGluZyh3ZWJWaWV3LCBm
YWxzZSk7CiAgICAgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJW
aWV3KTsKIAogICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSB0bHNFcnJvcnNQb2xpY3kgPSB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYlZpZXctPnByaXYtPmNvbnRl
eHQpOwogICAgIGlmICh0bHNFcnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZ
X0ZBSUwpIHsKLSAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQod2ViVmlldywgV0VCS0lU
X0xPQURfU1RBUlRFRCwgZmFpbGluZ1VSSSwgZXJyb3IpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBpZiAoZ19zaWduYWxfaGFzX2hhbmRs
ZXJfcGVuZGluZyh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10s
IDAsIFRSVUUpKSB7CisgICAgICAgICAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkkoc291cF91
cmlfbmV3KGZhaWxpbmdVUkkpKTsKKyAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBp
bmZvKHRsc0Vycm9ycywgY2VydGlmaWNhdGUpOworICAgICAgICAgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsICZpbmZvLCBz
b3VwVVJJLT5ob3N0LCAmcmV0dXJuVmFsdWUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0ZBSUxFRF0sIDAsIFdFQktJVF9M
T0FEX1NUQVJURUQsIGZhaWxpbmdVUkksIGVycm9yLCAmcmV0dXJuVmFsdWUpOwogICAgIH0KIAog
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJL
SVRfTE9BRF9GSU5JU0hFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTRkNmU0MzllY2E3MjZlOTA2Mzc2MTMyMTZhNTE0Nzdl
YjdhZTk3ZC4uZjA3NWQzZmMyNjVkYTAzZGI1MzQ1MjA2OGU5NWFjMjBkMmQxNDRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAt
MjAwLDU4ICsyMDAsNjAgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0
V2ViVmlld0NsYXNzIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAg
IHZvaWQgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsK
LSAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJy
b3IpOwotCi0gICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBy
ZWFkeV90b19zaG93KSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAo
KiBjbG9zZSkgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAg
ICAgICAqZGlhbG9nKSAgOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVfcG9saWN5KSAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lv
biAgICAgICAgKmRlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAgICAgdHlwZSk7Ci0gICAgZ2Jvb2xl
YW4gICAoKiBwZXJtaXNzaW9uX3JlcXVlc3QpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAgICAgKnBlcm1pc3Npb25fcmVxdWVzdCk7
Ci0gICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJnZXRfY2hhbmdlZCkgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0
X3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludCAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7Ci0gICAgZ2Jvb2xlYW4gICAo
KiBwcmludCkgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRQcmludE9wZXJhdGlvbiAgICAgICAgKnByaW50X29wZXJhdGlvbik7Ci0gICAgdm9p
ZCAgICAgICAoKiByZXNvdXJjZV9sb2FkX3N0YXJ0ZWQpICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVSSVJlcXVlc3Qg
ICAgICAgICAgICAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBlbnRlcl9mdWxsc2NyZWVu
KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAg
Z2Jvb2xlYW4gICAoKiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9v
c2VyKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51
KSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4
dE1lbnUgICAgICAgICAgICpjb250ZXh0X21lbnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRU
ZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCk7Ci0gICAgdm9pZCAgICAgICAoKiBj
b250ZXh0X21lbnVfZGlzbWlzc2VkKSAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3Qg
KnJlcXVlc3QpOwotICAgIHZvaWQgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCkg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQg
ICBldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVkKSAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAg
ICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAg
ICAoKiBsb2FkX2NoYW5nZWQpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsKKyAgICBn
Ym9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICpl
cnJvcik7CisKKyAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAg
KCogcmVhZHlfdG9fc2hvdykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lk
ICAgICAgICgqIGNsb3NlKSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOworCisgICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9n
KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2Ny
aXB0RGlhbG9nICAgICAgICAgICpkaWFsb2cpICA7CisKKyAgICBnYm9vbGVhbiAgICgqIGRlY2lk
ZV9wb2xpY3kpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAg
ICB0eXBlKTsKKyAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAg
ICAgKnBlcm1pc3Npb25fcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJnZXRf
Y2hhbmdlZCkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0
VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVycyk7CisgICAgZ2Jvb2xlYW4gICAoKiBwcmludCkgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24g
ICAgICAgICpwcmludF9vcGVyYXRpb24pOworICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9h
ZF9zdGFydGVkKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YlJlc291cmNlICAgICAgICAgICAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVl
c3QpOworICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBs
ZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51
ICAgICAgICAgICAqY29udGV4dF9tZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKKyAgICB2b2lkICAgICAgICgqIGNv
bnRleHRfbWVudV9kaXNtaXNzZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVx
dWVzdCAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVj
dGVkKSAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQgICBldmVudCk7CisgICAgZ2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVk
KSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAg
IGdib29sZWFuICAgKCogYXV0aGVudGljYXRlKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7
CisgICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICppbmZv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgICAgICAgIGhvc3QpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOwogICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNSkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkNikgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5k
ZXggZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uZmQwYWVkMjEwYTQ3
Y2FhMTk3MmQxYzM2MjFkYWQ2Yzc2ZmZhMzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMyw3ICsz
Myw3IEBACiAKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRMb2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsK
LXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcq
LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3Ms
IEdUbHNDZXJ0aWZpY2F0ZSopOwordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKIHZvaWQgd2Via2l0V2ViVmll
d1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGVzdGltYXRl
ZExvYWRQcm9ncmVzcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShXZWJLaXRXZWJWaWV3
KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKFdlYktpdFdl
YlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDc2ZDAxMDQxMjY4MmU4N2Y0ZjdjOTMx
OWFjZjM0Y2Q1MDJlZTEzNjQuLmUzY2Y5YTY4YzZiMzlkMTc5YWRhNTU5Y2FhNDhkYWZjMTFhZjVj
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNDMsNiArNDMsNyBAQAogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFNlY3VyaXR5TWFuYWdlci54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViVmlld0dyb3VwLnhtbCIvPgorICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8ueG1sIi8+CiAgIDwvY2hhcHRlcj4K
IAogICA8Y2hhcHRlcj4KQEAgLTYxLDYgKzYyLDExIEBACiAgICAgPHRpdGxlPkluZGV4IG9mIG5l
dyBzeW1ib2xzIGluIDIuMjwvdGl0bGU+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1p
bmRleC0yLjIueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+ICAK
LSAgCisKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi00IiByb2xlPSIyLjQiPgorICAgIDx0aXRs
ZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjQ8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9hcGktaW5kZXgtMi40LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgor
ICA8L2luZGV4PgorCiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5
LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKaW5kZXggZThiZTYxZmU0ZTNhNGYyMTI2Mjc3ZmYzMjJlMzk5OTc4M2NkYmUz
OC4uODA1NzYzYjFmMjQzODI0NGRkMzJiMmYwZTg0N2Y2OTM5NzU1NjA5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CkBAIC00OCw2ICs0OCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
dGxzX2Vycm9yc19wb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNf
ZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zCiB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5Cit3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0CiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKQEAgLTEwOTcsMyArMTA5OCwxOCBAQCBXRUJLSVRf
U0NSSVBUX1dPUkxEX0dFVF9DTEFTUwogV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlCiB3ZWJraXRf
c2NyaXB0X3dvcmxkX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0Q2VydGlmaWNhdGVJbmZvPC9GSUxFPgorV2ViS2l0Q2VydGlmaWNhdGVJbmZvCit3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19jb3B5Cit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19nZXRfdGxzX2Vycm9ycworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9U
WVBFX0NFUlRJRklDQVRFX0lORk8KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNWIxZWEz
YzFmZGU0NmQzZjE2N2NmNzAxMzIzZjhmYzAwODQwZjI5ZS4uNGI1ODNiYWQ5YjBhN2E2YmExMDJm
NzMyMmU0YzcwN2FmNjVjOWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjcsMyArMjcsNCBAQCB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X3R5cGUKIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF90
eXBlCiB3ZWJraXRfY3JlZGVudGlhbF9nZXRfdHlwZQogd2Via2l0X2ZyYW1lX2dldF90eXBlCit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAppbmRleCBkYjZjY2M4NTIyZDE1MWNi
OWM0OTVkOWQ0M2YzZTk2ZjY1MjUyYTZlLi5lMzE4MGM1YmM4YzkyNDg3YmMxMzRhMTY0YmJkNGRm
MmI4MmI3YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcApAQCAtMjgsNiArMjgsOCBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZl
cioga0h0dHBTZXJ2ZXI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEhUTUwgPSAiPGh0bWw+
PGJvZHk+VGVzdGluZyBXZWJLaXQyR1RLKyBTU0w8L2JvZHk+PC9odG1sbD4iOwogc3RhdGljIGNv
bnN0IGNoYXIqIGluc2VjdXJlQ29udGVudEhUTUwgPSAiPGh0bWw+PHNjcmlwdCBzcmM9XCIlc1wi
Pjwvc2NyaXB0Pjxib2R5PjxwPlRleHQgKyBpbWFnZSA8aW1nIHNyYz1cIiVzXCIgYWxpZ249XCJy
aWdodFwiLz48L3A+PC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIgVExTRXhwZWN0
ZWRTdWNjZXNzVGl0bGVbXSA9ICJXZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lvbiB0ZXN0IjsKK3N0
YXRpYyBjb25zdCBjaGFyIFRMU1N1Y2Nlc3NIVE1MU3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRp
dGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48
L2JvZHk+PC9odG1sPiI7CiAKIGNsYXNzIFNTTFRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0
IHsKIHB1YmxpYzoKQEAgLTEzMiw2ICsxMzQsODUgQEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9y
c1BvbGljeShTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF0ZXN0
LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkp
OwogfQogCitjbGFzcyBUTFNFcnJvcnNUZXN0OiBwdWJsaWMgU1NMVGVzdCB7CitwdWJsaWM6Cisg
ICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShUTFNFcnJvcnNUZXN0KTsKKworICAgIFRMU0Vycm9y
c1Rlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2Fk
LWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLCBHX0NBTExCQUNLKHJ1bkxvYWRGYWlsZWRXaXRoVExT
RXJyb3JzQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB+VExTRXJyb3JzVGVzdCgpCisg
ICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJW
aWV3LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKKyAgICAgICAgaWYg
KG1fY2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
ZnJlZShtX2NlcnRpZmljYXRlSW5mbyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHJ1
bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENl
cnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hhciogaG9zdCwgVExTRXJyb3JzVGVzdCogdGVz
dCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGluZm8s
IGhvc3QpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkxvYWRG
YWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hh
ciogaG9zdCkKKyAgICB7CisgICAgICAgIGlmIChtX2NlcnRpZmljYXRlSW5mbykKKyAgICAgICAg
ICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZpY2F0ZUluZm8pOworICAg
ICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoaW5m
byk7CisgICAgICAgIG1faG9zdC5zZXQoZ19zdHJkdXAoaG9zdCkpOworICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJ
bmZvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICB9CisK
KyAgICBjb25zdCBjaGFyKiBob3N0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hvc3QuZ2V0
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0
aWZpY2F0ZUluZm87CisgICAgR093blB0cjxjaGFyPiBtX2hvc3Q7Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lf
RkFJTCk7CisKKyAgICAvLyBUaGUgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHNpZ25hbCBz
aG91bGQgYmUgZW1pdHRlZCB3aGVuIHRoZXJlIGlzIGEgVExTIGZhaWx1cmUuCisgICAgdGVzdC0+
bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LXRscy8iKS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKCk7CisgICAgLy8g
VGVzdCB0aGUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIEFQSS4KKyAgICBnX2Fzc2VydChHX0lTX1RM
U19DRVJUSUZJQ0FURSh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRl
KHRlc3QtPmNlcnRpZmljYXRlSW5mbygpKSkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnModGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkp
LCA9PSwgR19UTFNfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPmhvc3QoKSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGtIdHRwc1NlcnZlci0+YmFzZVVS
SSgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2Nt
cGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmlu
aXNoZWQpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhbiBleGNlcHRpb24gZm9yIHRoaXMgY2Vy
dGlmaWNhdGUgb24gdGhpcyBob3N0LgorICAgIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNf
Y2VydGlmaWNhdGVfZm9yX2hvc3QoY29udGV4dCwgdGVzdC0+Y2VydGlmaWNhdGVJbmZvKCksIHRl
c3QtPmhvc3QoKSk7CisgICAgLy8gVGhlIHBhZ2Ugc2hvdWxkIG5vdyBsb2FkIHdpdGhvdXQgZXJy
b3JzLgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVz
dC10bHMvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKwor
ICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tp
bmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVz
dC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7
CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
dmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFRMU0V4cGVjdGVkU3VjY2Vzc1Rp
dGxlKTsKK30KKworCiBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFi
bGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlmIChtZXNzYWdlLT5t
ZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CkBAIC0xNDgsNiArMjI5LDEwIEBAIHN0YXRpYyB2
b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIHJlc3BvbnNlSFRNTC5nZXQoKSwgc3Ry
bGVuKHJlc3BvbnNlSFRNTC5nZXQoKSkpOwogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Nv
bXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1
YWwocGF0aCwgIi90ZXN0LXRscy8iKSkgeworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIFRMU1N1Y2Nl
c3NIVE1MU3RyaW5nLCBzdHJsZW4oVExTU3VjY2Vzc0hUTUxTdHJpbmcpKTsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X05PVF9GT1VORCk7CiB9CkBAIC0xOTEsNyArMjc2LDExIEBAIHZvaWQgYmVmb3JlQWxsKCkKIAog
ICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0U1NMKTsKICAgICBJ
bnNlY3VyZUNvbnRlbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zZWN1cmUtY29udGVu
dCIsIHRlc3RJbnNlY3VyZUNvbnRlbnQpOwotICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29u
dGV4dCIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJvcnNQb2xpY3kpOworICAgIC8v
IEluIHRoaXMgY2FzZSB0aGUgb3JkZXIgb2YgdGhlIHRlc3RzIGRvZXMgbWF0dGVyIGJlY2F1c2Ug
dGxzLWVycm9ycy1wb2xpY3kgdGVzdHMgdGhlIGRlZmF1bHQgcG9saWN5LAorICAgIC8vIGFuZCBl
eHBlY3RzIHRoYXQgbm8gZXhjZXB0aW9uIHdpbGwgaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGlzIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIgYXMgaXMKKyAgICAvLyBkb25lIGluIHRoZSB0bHMtcGVy
bWlzc2lvbi1yZXF1ZXN0IHRlc3QuCisgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgVExTRXJyb3Jz
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIs
IHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDcwZTNiNDMzMDU5
M2VmNmQwZmQ3ODhiYTJlOTMzMWY0MjBmODk3ODYuLjhkODIxOTkwMzk5OGQ5NWYzZTU5OWU4MTZk
MDljYzQ4NjA2NzU2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVu
dUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51SXRlbS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNo
YWwubGlzdCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFs
Lmxpc3QKaW5kZXggNDIwNzY2ZWE3ZjE1MzIzYWEyYmRlNzFkNjc0MTZmODRhYTRiNDBkYi4uZTFj
ZmUwNzIxNmQzOWIwZTk4ZDYwNDc3MWJlMDYyOTY1ZDI2ODdmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xLDQg
KzEsNSBAQAogQk9PTEVBTjpCT1hFRAorQk9PTEVBTjpCT1hFRCxTVFJJTkcKIEJPT0xFQU46RU5V
TSxTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULEJPWEVELE9C
SkVDVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGM2ODFiOTAz
ZTQyNWU0NDk2MTg5MTBlMmYzOGEyOTU0Yzk3ZDQyOGIuLmUzMjMzNTgzYTBjZTI3N2Y5MmEzN2Fh
ZWE4YjVhNTVmMGQ1OTA5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTEwNzEsMTAgKzEwNzEsMTUgQEAgdm9pZCBXZWJDb250ZXh0OjphbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKgogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2Vsc2UKKyNpZiBVU0UoU09VUCkKKyAgICBtX3Byb2Nlc3Nlc1sw
XS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNlcnRpZmljYXRlLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwg
MCk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xl
YXIgd2hldGhlciB3ZSB3YW50IHRoaXMgU1BJIHRvIGJlIGV4cG9zZWQgYW5kIHVzZWQgZm9yIGNs
aWVudHMgdGhhdCBkb24ndCB1c2UgdGhlIE5ldHdvcmtQcm9jZXNzLgorI2VuZGlmCisKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCBiZDg4MjAxMjE4OWUxM2ZlYjJkM2VjOTA5MWE5MDA0YmI5ZDk2ZDRmLi41NDMx
NTM5YmU1OTc2NzVjYzUwOTQxOTI0MjZjZjMwOTE4YTQ0OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9k
ZWwuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVz
VG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE2MCw2ICsxNjEs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQYWdlcygpOwogCisjaWYgIUVO
QUJMRShORVRXT1JLX1BST0NFU1MpICYmIFVTRShTT1VQKQorICAgIHZvaWQgYWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiwg
Y29uc3QgU3RyaW5nJiBob3N0KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3Mo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDU5YmNlNjM2MjY4MGM2YjI2MTFjMGUzZTY3YTQ5OTViYmNkNDdiOGMuLjUzMmI0
YzJmMTUxN2E4MDg0YmEyN2YxZjE3Mjc4NzE5MmM0MzkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgyLDQgKzgyLDggQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBmbGFnKTsKICNlbmRpZgor
CisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpICYmIFVTRShTT1VQKQorICAgIEFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6OlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvIGNlcnRpZmljYXRlLCBXVEY6OlN0cmluZyBob3N0KQorI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCBjN2Jl
YTkyODY0ZjFjMjhhNzYwMGM2NTNmMDE5Zjg2NWFjZTdlMjlkLi40MDQ1Y2RlZGQ4OWJjODVhNGYw
YzMyN2E1YmQ5ZDRkODg5MWI4NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTIwOCw0ICsyMDgsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyhpZ25vcmVUTFNFcnJvcnMp
OwogfQogCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lkIFdlYlByb2Nlc3M6OmFs
bG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGhvc3QsIGNlcnRpZmlj
YXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213881</attachid>
            <date>2013-10-10 07:15:51 -0700</date>
            <delta_ts>2013-10-15 06:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131010151554.patch</filename>
            <type>text/plain</type>
            <size>44304</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjQ4ZDEwMWM0NzQzYjIw
NTlhOTI2ZGY5YzA1MTE3NjZiOGYzY2FkNy4uNWI5MTBkNmUwNjQ2NjVmYjI5ZDg0OGI4MzFiZjU4
ZDRkZjdhODQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTEwICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJy
b3JzIHRoYXQgaXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
IGJveGVkIHR5cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJv
cnMuIEEgbmV3IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKToKKyAgICAgICAgKiBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFk
ZGVkLgorICAgICAgICAod2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0UGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8pOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSk6CisgICAgICAg
ICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZp
Y2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAod2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktp
dENlcnRpZmljYXRlSW5mbzo6X1dlYktpdENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KTogU3VwcG9ydCBUTFMKKyAg
ICAgICAgZXhjZXB0aW9ucyBmb3IgYSBnaXZlbiBob3N0LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTog
QWRkZWQgbmV3IHNpZ25hbC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyk6IEVtaXQgbmV3IHNpZ25hbCB3aXRoCisgICAgICAgIFdlYktpdENlcnRpZmljYXRl
SW5mbyBhbmQgaG9zdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVz
dExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3Q6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QpOiBTZW5kCisgICAgICAgIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyB0byBhbGxvdyBhIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBOZXcgbWVz
c2FnZSB0byB0ZWxsCisgICAgICAgIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBzcGVjaWZpYyBUTFMg
Y2VydGlmaWNhdGUgZm9yIGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOiBBbGxvdworICAgICAgICBjZXJ0aWZpY2F0
ZSBhbmQgaG9zdCBwYWlyLgorCiAyMDEzLTEwLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGRlbGV0ZUFsbFZhbHVlcyBpbiBOUFJlbW90
ZU9iamVjdE1hcDo6cGx1Z2luRGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxOWZkNTk0MjU4YjI3ODMwMzA1N2FlMGU3MGQxYjZhODg3MmJjMmNlLi5kNTBlMjIwYWNi
YTU0NGFmNzJjMmUzNjI4ZmQyZDJiMDFlYmJiZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwK
QEAgLTY3Myw2ICs2NzQsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlz
dFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGMwYmQwZmE0NGYxNDk5N2IxMzU4ODcxNDdkNGY0OTFkZTc1MDkxMzUu
LjExYzZkNGU2YjRmYWQ3YzY3YTRjOWNlODg0MmQ2YWFmYmI2ZGRlMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCkBAIC04Nyw2ICs4Nyw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTI4
Niw2ICsyODksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJLaXQyX0lO
U1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5j
cHAKaW5kZXggYzY5MDRiNGFlNmU1YjUzMmIwMzlkZDVjZmRhNmU3ZWViYTY3MTRlYi4uYjNkMWJm
MGExNjAyZWI2ZDY3ODZkY2JlNmI4NGQ1ODEwYWNhZmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcApAQCAtNTQs
NiArNTQsMTIgQEAgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXIKIHsKIH0KIAorUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0aWZpY2F0ZUZsYWdz
IHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAgICA6IG1fY2VydGlm
aWNhdGUoY2VydGlmaWNhdGUpCisgICAgLCBtX3Rsc0Vycm9ycyh0bHNFcnJvcnMpCit7Cit9CisK
IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjp+UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvLmgKaW5kZXggOGMyMzFmMzZkYjMyZjhkOGI0MDI2N2I2ZGI0NWMxNDdmNjFjMDU1MC4u
MDY3NTljNDMxNjRlYjVlODFiOWYyZjYwNDBlNmU4NDk0NWJjMmUyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCkBAIC00
Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogICAg
IGV4cGxpY2l0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgZXhwbGljaXQgUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8oR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogICAgIH5QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogCiAgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFmNTM3ZTc5MWFmOTAxYTk3NjNiY2FkMzQ3NjI1MzA2NmE1OWFmNzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFNF
Q1RJT046IFdlYktpdENlcnRpZmljYXRlSW5mbworICogQFNob3J0X2Rlc2NyaXB0aW9uOiBCb3hl
ZCB0eXBlIHRvIGVuY2Fwc3VsYXRlIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbgorICogQFRp
dGxlOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcs
ICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogV2hlbiBhIGNsaWVudCBsb2FkcyBhIHBhZ2Ugb3Zl
ciBIVFRQUyB3aGVyZSB0aGVyZSBpcyBhbiB1bmRlcmx5aW5nIFRMUyBlcnJvcgorICogV2ViS2l0
IHdpbGwgZmlyZSBhICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMg
c2lnbmFsIHdpdGggYQorICogI1dlYktpdENlcnRpZmljYXRlSW5mbyBhbmQgdGhlIGhvc3Qgb2Yg
dGhlIGZhaWxpbmcgVVJJLgorICoKKyAqIFRvIGhhbmRsZSB0aGlzIHNpZ25hbCBhc3luY2hyb25v
dXNseSB5b3Ugc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHRoZQorICogI1dlYktpdENlcnRpZmljYXRl
SW5mbyB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKS4KKyAqLworCitHX0RFRklO
RV9CT1hFRF9UWVBFKFdlYktpdENlcnRpZmljYXRlSW5mbywgd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHksIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZv
X2ZyZWUpCisKK2NvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0
ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGlu
Zm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUlu
Zm87Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weToKKyAqIEBpbmZv
OiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBNYWtlIGEgY29weSBvZiB0aGUgI1dl
YktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEg
Y29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBTaW5jZTog
Mi40CisgKi8KK1dlYktpdENlcnRpZmljYXRlSW5mbyogd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
Y29weShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoaW5mbywgMCk7CisKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGNvcHkgPSBnX3Ns
aWNlX25ldzAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKTsKKyAgICBuZXcgKGNvcHkpIFdlYktpdENl
cnRpZmljYXRlSW5mbyhpbmZvKTsKKyAgICByZXR1cm4gY29weTsKK30KKworLyoqCisgKiB3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19mcmVlOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRl
SW5mbworICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogU2lu
Y2U6IDIuNAorICovCit2b2lkIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUoV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5mbyk7CisKKyAg
ICBpbmZvLT5+V2ViS2l0Q2VydGlmaWNhdGVJbmZvKCk7CisgICAgZ19zbGljZV9mcmVlKFdlYktp
dENlcnRpZmljYXRlSW5mbywgaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZToKKyAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8KKyAqCisgKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGUgYXNzb2NpYXRlZCB3aXRoIHRo
aXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiBUaGUgY2VydGlmaWNhdGUgb2YgQGluZm8uCisgKgorICogU2luY2U6IDIuNAorICov
CitHVGxzQ2VydGlmaWNhdGUqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlm
aWNhdGUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGluZm8sIDApOworCisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmljYXRlSW5mby5jZXJ0
aWZpY2F0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIEdldCB0
aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdzIHZlcmlmaWNhdGlvbiBzdGF0dXMgYXNzb2NpYXRlZCB3
aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJuczogVGhl
IHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGluZm8uCisgKgorICogU2luY2U6IDIuNAorICovCitH
VGxzQ2VydGlmaWNhdGVGbGFncyB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9y
cyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaW5mbywgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKTsKKworICAgIHJl
dHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlZjE2NDA1ZTgzY2Y2MTJiM2FiZTAzZmE2NmE2MWQ1YWNiMzhmZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRl
ZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKyNkZWZp
bmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ0VSVElGSUNBVEVfSU5GTyAo
d2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdENlcnRpZmljYXRlSW5mbyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm87CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlICAgICAgICAgICAgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19jb3B5ICAgICAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8p
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUgICAgICAg
ICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgR1Rs
c0NlcnRpZmljYXRlICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNh
dGUgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzICAgICAg
KFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlm
aWNhdGVJbmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYjExYjc4NTg2ODg2MzYx
MWU5MTFmOTZhNzI2ZGFkZGZhYWU3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Q
cml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmlj
YXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworc3RydWN0IF9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm8geworICAgIF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRpZmlj
YXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQorICAgICAg
ICA6IGNlcnRpZmljYXRlSW5mbyh0bHNFcnJvcnMsIGNlcnRpZmljYXRlKQorICAgIHsKKyAgICB9
CisKKyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5m
bykKKyAgICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2VydGlmaWNhdGVJbmZvKQorICAg
IHsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbzsKK307CisKK2NvbnN0IFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIHdl
YmtpdENlcnRpZmljYXRlSW5mb0dldFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRp
ZmljYXRlSW5mbyopOworCisjZW5kaWYgLy8gV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCmluZGV4IGQyYzhiYmRmOWI1NDRjZWI0NTIxOGYwM2U5MzZlNzI1NDBjZjdkNWUu
LmMwMTJlYzNiNmJjM2FmZWMzODRmN2IxYmI5YjA3ZjE5MmVhOTRmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBA
IC0yMCw4ICsyMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93
bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUuaCIKQEAgLTgw
Nyw2ICs4MDksMjQgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zKFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGhvc3QKICAgICBjb250ZXh0LT5wcml2
LT5jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgi
UHJlZmV0Y2hETlMiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkp
OwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVf
Zm9yX2hvc3Q6CisgKiBAY29udGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAorICogQGluZm86IGEg
I1dlYktpdENlcnRpZmljYXRlSW5mbworICogQGhvc3Q6IHRoZSBob3N0IGZvciB3aGljaCBhIGNl
cnRpZmljYXRlIGlzIHRvIGJlIGFsbG93ZWQKKyAqCisgKiBJZ25vcmUgZnVydGhlciBUTFMgZXJy
b3JzIG9uIHRoZSBAaG9zdCBmb3IgdGhlIGNlcnRpZmljYXRlIHByZXNlbnQgaW4gQGluZm8uCisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8s
IGNvbnN0IGdjaGFyKiBob3N0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisKKyAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3
ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZSh3ZWJraXRDZXJ0
aWZpY2F0ZUluZm9HZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhpbmZvKSk7CisgICAgY29udGV4
dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdl
YkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7Cit9CisKIFdl
YktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9h
ZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGRk
MzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2YWYuLjEzNzlmYzNhMzYyMjc5MWJh
Zjg0NGM5NmRiY2E3ODM3YWRiMzM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZp
bmUgV2ViS2l0V2ViQ29udGV4dF9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgpAQCAtNjQsNyArNjUsNyBAQCB0
eXBlZGVmIGVudW0gewogLyoqCiAgKiBXZWJLaXRUTFNFcnJvcnNQb2xpY3k6CiAgKiBAV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRTogSWdub3JlIFRMUyBlcnJvcnMuCi0gKiBAV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFrZSB0aGUgbG9hZCB0byBmaW5p
c2ggd2l0aCBhbiBlcnJvci4KKyAqIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDogVExT
IGVycm9ycyBtYWtlIHRoZSBsb2FkIGZpbmlzaCB3aXRoIGFuIGVycm9yIGFuZCBhIG5vdGlmaWNh
dGlvbiBzaWduYWwuCiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIFRMUyBl
cnJvcnMgcG9saWN5LgogICovCkBAIC0xOTksNiArMjAwLDExIEBAIFdFQktJVF9BUEkgdm9pZAog
d2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChXZWJL
aXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAgICAgKmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0
X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAg
ICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDQ0NjI5ZWNmZmRhNjI1MzZkODhhZjFjZjU4MzE2MTk1NjdhZDk1MTUuLjY2MTE3MjRm
YjYzY2MyYmM0ZGI2NzI0YzQ0YTExZmM5MzMzNGM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMiw3ICsyMiw2IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDZXJ0
aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCkBAIC0zMCw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRN
ZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCIK
QEAgLTg5LDYgKzg5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBlbnVtIHsKICAgICBM
T0FEX0NIQU5HRUQsCiAgICAgTE9BRF9GQUlMRUQsCisgICAgTE9BRF9GQUlMRURfV0lUSF9UTFNf
RVJST1JTLAogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1csCkBAIC04NDcsNiArODQ4
LDM2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5U
RVIpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQtd2l0aC10
bHMtZXJyb3JzOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8KKyAgICAgKiBAaG9zdDogdGhlIGhvc3Qgb24gd2hpY2ggdGhlIGVycm9yIG9jY3VycmVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYSBUTFMgZXJyb3Igb2NjdXJzIGR1cmluZyBh
IGxvYWQgb3BlcmF0aW9uLiBUaGUgQGluZm8KKyAgICAgKiBvYmplY3QgY29udGFpbnMgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGVycm9yIHN1Y2ggYXMgdGhlICNHVGxzQ2VydGlmaWNhdGUKKyAgICAg
KiBhbmQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncy4gVG8gYWxsb3cgYW4gZXhjZXB0aW9uIGZv
ciB0aGlzIGNlcnRpZmljYXRlCisgICAgICogYW5kIHRoaXMgaG9zdCB1c2Ugd2Via2l0X3dlYl9j
b250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpLgorICAgICAqCisgICAgICog
VG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBzaG91bGQgY29weSB0aGUg
I1dlYktpdENlcnRpZmljYXRlSW5mbworICAgICAqIHdpdGggd2Via2l0X2NlcnRpZmljYXRlX2lu
Zm9fY29weSgpIGFuZCByZXR1cm4gJVRSVUUuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjQKKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJ
VEhfVExTX0VSUk9SU10gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgt
dGxzLWVycm9ycyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpLAor
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3Vt
dWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19CT1hF
RF9TVFJJTkcsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwgLyogbnVtYmVyIG9mIHBh
cmFtZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gIHwg
R19TSUdOQUxfVFlQRV9TVEFUSUNfU0NPUEUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsK
KworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZToKICAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAg
ICAgKgpAQCAtMTUwOSwxNSArMTU0MCwxOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsCiAgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJVF9M
T0FEX0ZJTklTSEVEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vy
cm9yICplcnJvciwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNh
dGUqIGNlcnRpZmljYXRlKQordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJv
cnMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9y
KiBlcnJvciwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUq
IGNlcnRpZmljYXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdTZXRJc0xvYWRpbmcod2ViVmlldywg
ZmFsc2UpOwogICAgIHdlYmtpdFdlYlZpZXdDYW5jZWxBdXRoZW50aWNhdGlvblJlcXVlc3Qod2Vi
Vmlldyk7CiAKICAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250
ZXh0KTsKICAgICBpZiAodGxzRXJyb3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElD
WV9GQUlMKSB7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKHdlYlZpZXcsIFdFQktJ
VF9MT0FEX1NUQVJURUQsIGZhaWxpbmdVUkksIGVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsK
KyAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGluZm8odGxzRXJyb3JzLCBjZXJ0aWZpY2F0
ZSk7CisgICAgICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBnX3NpZ25hbF9lbWl0
KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTXSwgMCwgJmluZm8s
IHNvdXBVUkktPmhvc3QsICZyZXR1cm5WYWx1ZSk7CisgICAgICAgIGlmICghcmV0dXJuVmFsdWUp
CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURd
LCAwLCBXRUJLSVRfTE9BRF9TVEFSVEVELCBmYWlsaW5nVVJJLCBlcnJvciwgJnJldHVyblZhbHVl
KTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFO
R0VEXSwgMCwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGE0ZDZlNDM5ZWNhNzI2ZTkwNjM3
NjEzMjE2YTUxNDc3ZWI3YWU5N2QuLjZlNDM0YjVmNGIxYWYyYzc3OGI4MjZlMjliNzYyZjliZWJk
YzZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmgKQEAgLTIwMCw1OCArMjAwLDYwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBw
YXJlbnQ7CiAKLSAgICB2b2lkICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAg
bG9hZF9ldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAg
ICAgIGxvYWRfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAg
ICAgICAgICAgKmVycm9yKTsKLQotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZv
aWQgICAgICAgKCogcmVhZHlfdG9fc2hvdykgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAg
IHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlh
bG9nKSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3Jp
cHREaWFsb2cgICAgICAgICAgKmRpYWxvZykgIDsKLQotICAgIGdib29sZWFuICAgKCogZGVjaWRl
X3BvbGljeSkgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgIHR5cGUp
OwotICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgICpwZXJtaXNz
aW9uX3JlcXVlc3QpOwotICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAg
ICAgICpoaXRfdGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotICAg
IGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9vcGVyYXRp
b24pOwotICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICpyZXNv
dXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogZW50
ZXJfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwotICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAgKCog
cnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgq
IGNvbnRleHRfbWVudSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29udGV4dF9tZW51LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAg
ICAgICAqZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQpOwotICAgIHZv
aWQgICAgICAgKCogY29udGV4dF9tZW51X2Rpc21pc3NlZCkgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1p
c3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKLSAgICB2b2lkICAgICAgICgqIGluc2VjdXJlX2NvbnRl
bnRfZGV0ZWN0ZWQpIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJl
Q29udGVudEV2ZW50ICAgZXZlbnQpOwotICAgIGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jh
c2hlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0g
ICAgZ2Jvb2xlYW4gICAoKiBhdXRoZW50aWNhdGUpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOwor
ICAgIHZvaWQgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9l
dmVudCk7CisgICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAg
ICBsb2FkX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAg
ICAgICAgICAgICAqZXJyb3IpOworCisgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAg
ICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21v
ZGFsKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisgICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgKCog
c2NyaXB0X2RpYWxvZykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlhbG9nKSAgOworCisgICAgZ2Jvb2xl
YW4gICAoKiBkZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURl
Y2lzaW9uVHlwZSAgICAgdHlwZSk7CisgICAgZ2Jvb2xlYW4gICAoKiBwZXJtaXNzaW9uX3JlcXVl
c3QpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCog
bW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnMpOworICAgIGdib29sZWFuICAgKCogcHJpbnQpICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBy
aW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKKyAgICB2b2lkICAgICAgICgq
IHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAg
ICAgICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdi
b29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9v
c2VyKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRf
bWVudSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAg
ICAqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCk7CisgICAgdm9p
ZCAgICAgICAoKiBjb250ZXh0X21lbnVfZGlzbWlzc2VkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3JtKSAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGb3Jt
U3VibWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogaW5zZWN1cmVf
Y29udGVudF9kZXRlY3RlZCkgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dEluc2VjdXJlQ29udGVudEV2ZW50ICAgZXZlbnQpOworICAgIGdib29sZWFuICAgKCogd2ViX3By
b2Nlc3NfY3Jhc2hlZCkgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldyk7CisKKyAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVl
c3QgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJy
b3JzKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5m
byAgICAgICAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAqaG9zdCk7CiAgICAgdm9pZCAoKl93
ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAo
dm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CiAgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0
KSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7Ci0gICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQ2KSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaAppbmRleCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmEx
Li5mZDBhZWQyMTBhNDdjYWExOTcyZDFjMzYyMWRhZDZjNzZmZmEzN2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRl
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2Vi
S2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFp
bGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdV
UkksIEdFcnJvciopOwotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMo
V2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2Vy
dGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2Fk
RmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VS
SSwgR0Vycm9yKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogdm9p
ZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBk
b3VibGUgZXN0aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxl
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRh
dGVVUkkoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEwNDEy
NjgyZTg3ZjRmN2M5MzE5YWNmMzRjZDUwMmVlMTM2NC4uZTNjZjlhNjhjNmIzOWQxNzlhZGE1NTlj
YWE0OGRhZmMxMWFmNWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2ICs0Myw3IEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3R3JvdXAueG1sIi8+
CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENlcnRpZmljYXRlSW5mby54bWwiLz4K
ICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpAQCAtNjEsNiArNjIsMTEgQEAKICAgICA8dGl0
bGU+SW5kZXggb2YgbmV3IHN5bWJvbHMgaW4gMi4yPC90aXRsZT4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvYXBpLWluZGV4LTIuMi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4K
ICAgPC9pbmRleD4gIAotICAKKworICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTQiIHJvbGU9IjIu
NCI+CisgICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuNDwvdGl0bGU+CisgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC0yLjQueG1sIj48eGk6ZmFsbGJhY2sgLz48
L3hpOmluY2x1ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90
YXRpb24tZ2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMy
MmUzOTk5NzgzY2RiZTM4Li44MDU3NjNiMWYyNDM4MjQ0ZGQzMmIyZjBlODQ3ZjY5Mzk3NTU2MDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTQ4LDYgKzQ4LDcgQEAgd2Via2l0X3dl
Yl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeQogd2Via2l0X3dlYl9jb250ZXh0X3NldF93
ZWJfZXh0ZW5zaW9uc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMK
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJf
Y29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIAogPFNVQlNFQ1RJT04gVVJJ
IFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMTA5NywzICsxMDk4
LDE4IEBAIFdFQktJVF9TQ1JJUFRfV09STERfR0VUX0NMQVNTCiBXZWJLaXRTY3JpcHRXb3JsZFBy
aXZhdGUKIHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRDZXJ0aWZpY2F0ZUluZm88L0ZJTEU+CitXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8KK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2ZyZWUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUKK3dl
YmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzCisKKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV0VCS0lUX1RZUEVfQ0VSVElGSUNBVEVfSU5GTworCis8U1VCU0VDVElPTiBQcml2YXRl
Pgord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cwppbmRleCA1YjFlYTNjMWZkZTQ2ZDNmMTY3Y2Y3MDEzMjNmOGZjMDA4NDBmMjllLi40YjU4M2Jh
ZDliMGE3YTZiYTEwMmY3MzIyZTRjNzA3YWY2NWM5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yNywz
ICsyNyw0IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogd2Via2l0X2F1dGhlbnRpY2F0aW9u
X3JlcXVlc3RfZ2V0X3R5cGUKIHdlYmtpdF9jcmVkZW50aWFsX2dldF90eXBlCiB3ZWJraXRfZnJh
bWVfZ2V0X3R5cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCmluZGV4IGRi
NmNjYzg1MjJkMTUxY2I5YzQ5NWQ5ZDQzZjNlOTZmNjUyNTJhNmUuLmUzMTgwYzViYzhjOTI0ODdi
YzEzNGExNjRiYmQ0ZGYyYjgyYjdhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCkBAIC0yOCw2ICsyOCw4IEBAIHN0YXRpYyBX
ZWJLaXRUZXN0U2VydmVyKiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4
SFRNTCA9ICI8aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0bWxs
PiI7CiBzdGF0aWMgY29uc3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48c2Ny
aXB0IHNyYz1cIiVzXCI+PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3JjPVwi
JXNcIiBhbGlnbj1cInJpZ2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3Qg
Y2hhciBUTFNFeHBlY3RlZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJtaXNz
aW9uIHRlc3QiOworc3RhdGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9ICI8
aHRtbD48aGVhZD48dGl0bGU+V2ViS2l0Mkd0aysgVExTIHBlcm1pc3Npb24gdGVzdDwvdGl0bGU+
PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IjsKIAogY2xhc3MgU1NMVGVzdDogcHVibGljIExv
YWRUcmFja2luZ1Rlc3QgewogcHVibGljOgpAQCAtMTMyLDYgKzEzNCw4NSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
Z19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpM
b2FkQ29tbWl0dGVkKSk7CiB9CiAKK2NsYXNzIFRMU0Vycm9yc1Rlc3Q6IHB1YmxpYyBTU0xUZXN0
IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFRMU0Vycm9yc1Rlc3QpOwor
CisgICAgVExTRXJyb3JzVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsIEdfQ0FMTEJBQ0socnVuTG9h
ZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIH5UTFNF
cnJvcnNUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
bWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMp
OworICAgICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICB3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19mcmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgZ2Jvb2xlYW4gcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayhXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvLCBjb25zdCBjaGFyKiBob3N0LCBUTFNF
cnJvcnNUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhU
TFNFcnJvcnMoaW5mbywgaG9zdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAg
IHZvaWQgcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBp
bmZvLCBjb25zdCBjaGFyKiBob3N0KQorICAgIHsKKyAgICAgICAgaWYgKG1fY2VydGlmaWNhdGVJ
bmZvKQorICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShtX2NlcnRpZmlj
YXRlSW5mbyk7CisgICAgICAgIG1fY2VydGlmaWNhdGVJbmZvID0gd2Via2l0X2NlcnRpZmljYXRl
X2luZm9fY29weShpbmZvKTsKKyAgICAgICAgbV9ob3N0LnNldChnX3N0cmR1cChob3N0KSk7Cisg
ICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3
YWl0VW50aWxMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycygpCisgICAgeworICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZv
KiBjZXJ0aWZpY2F0ZUluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJ
bmZvOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGhvc3QoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faG9zdC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0Q2VydGlmaWNh
dGVJbmZvKiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBHT3duUHRyPGNoYXI+IG1faG9zdDsKK307
CisKK3N0YXRpYyB2b2lkIHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhUTFNFcnJvcnNUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9UTFNf
RVJST1JTX1BPTElDWV9GQUlMKTsKKworICAgIC8vIFRoZSBsb2FkLWZhaWxlZC13aXRoLXRscy1l
cnJvcnMgc2lnbmFsIHNob3VsZCBiZSBlbWl0dGVkIHdoZW4gdGhlcmUgaXMgYSBUTFMgZmFpbHVy
ZS4KKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qt
dGxzLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJv
cnMoKTsKKyAgICAvLyBUZXN0IHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gQVBJLgorICAgIGdf
YXNzZXJ0KEdfSVNfVExTX0NFUlRJRklDQVRFKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90
bHNfY2VydGlmaWNhdGUodGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkpKSk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyh0ZXN0LT5jZXJ0
aWZpY2F0ZUluZm8oKSksID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGVzdC0+aG9zdCgpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBz
U2VydmVyLT5iYXNlVVJJKCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZl
bnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2lu
Z1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGFuIGV4Y2VwdGlv
biBmb3IgdGhpcyBjZXJ0aWZpY2F0ZSBvbiB0aGlzIGhvc3QuCisgICAgd2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChjb250ZXh0LCB0ZXN0LT5jZXJ0aWZp
Y2F0ZUluZm8oKSwgdGVzdC0+aG9zdCgpKTsKKyAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxv
YWQgd2l0aG91dCBlcnJvcnMuCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi90ZXN0LXRscy8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworCisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNz
ZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpM
b2FkQ29tbWl0dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJd
LCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgVExTRXhw
ZWN0ZWRTdWNjZXNzVGl0bGUpOworfQorCisKIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAg
aWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTE0OCw2ICsyMjks
MTAgQEAgc3RhdGljIHZvaWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIs
IFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VI
VE1MLmdldCgpLCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7CiAgICAgICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3Rlc3QtdGxzLyIpKSB7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgVExTU3VjY2Vzc0hUTUxTdHJpbmcsIHN0cmxlbihUTFNTdWNjZXNzSFRNTFN0cmluZykp
OworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9i
b2R5KTsKICAgICB9IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIH0KQEAgLTE5MSw3ICsyNzYsMTEgQEAgdm9pZCBi
ZWZvcmVBbGwoKQogCiAgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRl
c3RTU0wpOwogICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJp
bnNlY3VyZS1jb250ZW50IiwgdGVzdEluc2VjdXJlQ29udGVudCk7Ci0gICAgU1NMVGVzdDo6YWRk
KCJXZWJLaXRXZWJDb250ZXh0IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1Bv
bGljeSk7CisgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgZG9lcyBt
YXR0ZXIgYmVjYXVzZSB0bHMtZXJyb3JzLXBvbGljeSB0ZXN0cyB0aGUgZGVmYXVsdCBwb2xpY3ks
CisgICAgLy8gYW5kIGV4cGVjdHMgdGhhdCBubyBleGNlcHRpb24gd2lsbCBoYXZlIGJlZW4gYWRk
ZWQgZm9yIHRoaXMgY2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpciBhcyBpcworICAgIC8vIGRvbmUg
aW4gdGhlIHRscy1wZXJtaXNzaW9uLXJlcXVlc3QgdGVzdC4KKyAgICBTU0xUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAidGxzLWVycm9ycy1wb2xpY3kiLCB0ZXN0VExTRXJyb3JzUG9saWN5KTsK
KyAgICBUTFNFcnJvcnNUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1mYWlsZWQtd2l0
aC10bHMtZXJyb3JzIiwgdGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKIH0KIAogdm9pZCBh
ZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5k
ZXggNzBlM2I0MzMwNTkzZWY2ZDBmZDc4OGJhMmU5MzMxZjQyMGY4OTc4Ni4uOGQ4MjE5OTAzOTk4
ZDk1ZjNlNTk5ZTgxNmQwOWNjNDg2MDY3NTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRC
YWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQybWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mm1hcnNoYWwubGlzdAppbmRleCA0MjA3NjZlYTdmMTUzMjNhYTJiZGU3MWQ2NzQxNmY4
NGFhNGI0MGRiLi5lMWNmZTA3MjE2ZDM5YjBlOThkNjA0NzcxYmUwNjI5NjVkMjY4N2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5s
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFs
Lmxpc3QKQEAgLTEsNCArMSw1IEBACiBCT09MRUFOOkJPWEVECitCT09MRUFOOkJPWEVELFNUUklO
RwogQk9PTEVBTjpFTlVNLFNUUklORyxQT0lOVEVSCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpP
QkpFQ1QsQk9YRUQsT0JKRUNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
aW5kZXggYzY4MWI5MDNlNDI1ZTQ0OTYxODkxMGUyZjM4YTI5NTRjOTdkNDI4Yi4uZTMyMzM1ODNh
MGNlMjc3ZjkyYTM3YWFlYThiNWE1NWYwZDU5MDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcApAQCAtMTA3MSwxMCArMTA3MSwxNSBAQCB2b2lkIFdlYkNvbnRleHQ6
OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0
ZUluZm8qCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQorI2lmIFVTRShTT1VQKQorICAg
IG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPnBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKCksIGhvc3QpLCAwKTsKKyAgICByZXR1cm47CisjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
ZXJ0aWZpY2F0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGhvc3QpOwogI2VuZGlmCi0gICAgLy8gRklY
TUU6IEl0J3MgdW5jbGVhciB3aGV0aGVyIHdlIHdhbnQgdGhpcyBTUEkgdG8gYmUgZXhwb3NlZCBh
bmQgdXNlZCBmb3IgY2xpZW50cyB0aGF0IGRvbid0IHVzZSB0aGUgTmV0d29ya1Byb2Nlc3MuCisj
ZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGJkODgyMDEyMTg5ZTEzZmViMmQzZWM5MDkxYTkwMDRi
YjlkOTZkNGYuLjU0MzE1MzliZTU5NzY3NWNjNTA5NDE5MjQyNmNmMzA5MThhNDQ5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpA
QCAtMTYwLDYgKzE2MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2Vz
KCk7CiAKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgVVNFKFNPVVApCisgICAgdm9p
ZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViUHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTliY2U2MzYyNjgwYzZiMjYxMWMwZTNlNjdhNDk5NWJi
Y2Q0N2I4Yy4uNTMyYjRjMmYxNTE3YTgwODRiYTI3ZjFmMTcyNzg3MTkyYzQzOTA5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
ODIsNCArODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZs
YWcpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgVVNFKFNPVVAp
CisgICAgQWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYktpdDo6UGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGUsIFdURjo6U3RyaW5nIGhvc3QpCisjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAu
Y3BwCmluZGV4IGM3YmVhOTI4NjRmMWMyOGE3NjAwYzY1M2YwMTlmODY1YWNlN2UyOWQuLjQwNDVj
ZGVkZDg5YmM4NWE0ZjBjMzI3YTViZDlkNGQ4ODkxYjg0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtMjA4LDQgKzIwOCwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vy
cm9ycykKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGln
bm9yZVRMU0Vycm9ycyk7CiB9CiAKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3ZvaWQg
V2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9z
dCkKK3sKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUo
aG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOworfQorI2VuZGlmCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214254</attachid>
            <date>2013-10-15 06:31:31 -0700</date>
            <delta_ts>2013-10-15 07:46:34 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-120160-20131015143138.patch</filename>
            <type>text/plain</type>
            <size>44454</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFkMjk4MzAxMjhmNDQw
ZGIyZmYzMzNhMTdkZjM4YzNiNjEwOWI3Yi4uMDdmOWI0M2MwNjEzMWRhOWUzMGVlNzI4N2JkMDA1
NWZlOTNlZDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEwLTE1ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBDZXJ0aWZpY2F0ZUlu
Zm8gdW5kZXIgU291cC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2VydGlmaWNhdGVJ
bmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mb1Nv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUlu
Zm8pOiBOZXcgY29uc3RydWN0b3IgdXNpbmcKKyAgICAgICAgR1Rsc0NlcnRpZmljYXRlRmxhZ3Mg
YW5kIEdUbHNDZXJ0aWZpY2F0ZS4KKwogMjAxMy0xMC0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyVGV4dCBzaG91bGQgY2FjaGUgUmVuZGVyU3R5
bGUgaW4gbG9jYWxzIG1vcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTk0YzMyMzU0ODkwY2M2NWY3NGY4N2Vl
OWFjYjE5ZmJmMWMwOTQzZC4uZTYyMjVlOTcxODU2MDI1Yzk1ZWQ5MjM3ZTQ2ZjFkZjBmNjNkNDBh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTEwLTE1ICBCcmlhbiBIb2x0ICA8
YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0MiBBUEkg
Zm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHRoYXQg
aXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGJveGVkIHR5
cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJvcnMuIEEgbmV3
IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAgICAgICAgZXhj
ZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAg
KHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkpOgorICAgICAgICAod2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZnJlZSk6CisgICAgICAgICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxz
X2NlcnRpZmljYXRlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNh
dGVJbmZvUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm86
Ol9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rs
c19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6IFN1cHBvcnQgVExTCisgICAgICAgIGV4Y2VwdGlvbnMg
Zm9yIGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6IEFkZGVkIG5ldyBzaWduYWwu
CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOiBFbWl0IG5l
dyBzaWduYWwgd2l0aAorICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gYW5kIGhvc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcDoKKyAgICAgICAgKHRlc3RMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyk6CisgICAgICAgIChodHRwc1NlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6IEFkZGVkIG5ldyB0ZXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KTogU2VuZAorICAg
ICAgICBtZXNzYWdlIHRvIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBjZXJ0aWZpY2F0ZSBhbmQgaG9z
dCBwYWlyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogTmV3IG1lc3NhZ2UgdG8gdGVsbAorICAg
ICAgICBXZWJQcm9jZXNzIHRvIGFsbG93IGEgc3BlY2lmaWMgVExTIGNlcnRpZmljYXRlIGZvciBh
IGdpdmVuIGhvc3QuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KTogQWxsb3cKKyAgICAgICAgY2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpci4K
KwogMjAxMy0xMC0xNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtTb3VwXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHIxNTc0NDUgZm9yIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NlcnRpZmljYXRlSW5mby5oCmluZGV4IGVjOTkzMGU4NzYxZGI5MWIxOTQ1ODAz
MDQxYjdmMjI1MGEzNTM2MjIuLmMyYjQwZDc1YmQ2ZTA0NGE4YjZlM2U1MzIyZjljZWRhNDU1YWY5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2VydGlmaWNh
dGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DZXJ0aWZpY2F0
ZUluZm8uaApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7
CisjZWxpZiBVU0UoU09VUCkKKyAgICBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogI2VuZGlmCiAKICAgICB+Q2VydGlmaWNh
dGVJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ2VydGlmaWNhdGVJbmZvU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvU291cC5jcHAKaW5kZXggMTYyYTc3ODFhZDFmN2MwNDQ1
MTZlOGY4ZjA1YjYxNjYyY2RlNTI5ZC4uOTJiY2ZhN2FlOTYyMjllMzExYTIwZGFjNGQ1MDUyM2Fj
MWJmZDU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0NlcnRpZmljYXRlSW5mb1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm9Tb3VwLmNwcApAQCAtMzQsNiArMzQsMTIgQEAgQ2Vy
dGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUluZm8oKQogewogfQogCitDZXJ0aWZpY2F0ZUluZm86
OkNlcnRpZmljYXRlSW5mbyhHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMsIEdUbHNDZXJ0
aWZpY2F0ZSogY2VydGlmaWNhdGUpCisgICAgOiBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQor
ICAgICwgbV90bHNFcnJvcnModGxzRXJyb3JzKQoreworfQorCiBDZXJ0aWZpY2F0ZUluZm86On5D
ZXJ0aWZpY2F0ZUluZm8oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NzA2ZmU5OTBlYTFkNGU5NTc2Yzc2MWMyODcyYTA4NjE2YzYzNjc2NC4uY2NmMDQzN2NjOTYwYzVj
YzgwNGRhMmFmOTRlOWQ4ZWFiODlmNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0xMDAsNiArMTAwLDcgQEAgd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBcCkBAIC02
NzMsNiArNjc0LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmlj
YXRlSW5mby5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENl
cnRpZmljYXRlSW5mby5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA0MWU1OTcxZjdlZjAxOGUwYzk2OTNmYmEzNDkyODY2MTMwNmE0YWJmLi5hMmVi
MDU3NTQ5YTllMjkxN2E5NjIzZGQwODMwNTA5Yzc2YjE3Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtODYsNiArODYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAogICAgIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mb1ByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRN
ZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwCkBAIC0yODUsNiAr
Mjg4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiBzZXQoV2ViS2l0Ml9JTlNUQUxM
RURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5m
by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTJkZjFhYWNhODAyNTc5ZmI4NWE2M2QwZjAxYTVmNjkwMTVmMGI4
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCIK
KworI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8K
KyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQm94ZWQgdHlwZSB0byBlbmNhcHN1bGF0ZSBUTFMgY2Vy
dGlmaWNhdGUgaW5mb3JtYXRpb24KKyAqIEBUaXRsZTogV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisg
KiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LCAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFdo
ZW4gYSBjbGllbnQgbG9hZHMgYSBwYWdlIG92ZXIgSFRUUFMgd2hlcmUgdGhlcmUgaXMgYW4gdW5k
ZXJseWluZyBUTFMgZXJyb3IKKyAqIFdlYktpdCB3aWxsIGZpcmUgYSAjV2ViS2l0V2ViVmlldzo6
bG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHNpZ25hbCB3aXRoIGEKKyAqICNXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8gYW5kIHRoZSBob3N0IG9mIHRoZSBmYWlsaW5nIFVSSS4KKyAqCisgKiBUbyBo
YW5kbGUgdGhpcyBzaWduYWwgYXN5bmNocm9ub3VzbHkgeW91IHNob3VsZCBtYWtlIGEgY29weSBv
ZiB0aGUKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gd2l0aCB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19jb3B5KCkuCisgKi8KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19j
b3B5LCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKQorCitjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIHdlYmtpdENlcnRpZmljYXRlSW5mb0dldENlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGluZm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIHJldHVybiBpbmZvLT5j
ZXJ0aWZpY2F0ZUluZm87Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29w
eToKKyAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBNYWtlIGEgY29w
eSBvZiB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAq
CisgKiBTaW5jZTogMi40CisgKi8KK1dlYktpdENlcnRpZmljYXRlSW5mbyogd2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fY29weShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoaW5mbywgMCk7CisKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IGNvcHkgPSBnX3NsaWNlX25ldzAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKTsKKyAgICBuZXcgKGNv
cHkpIFdlYktpdENlcnRpZmljYXRlSW5mbyhpbmZvKTsKKyAgICByZXR1cm4gY29weTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlOgorICogQGluZm86IGEgI1dlYktp
dENlcnRpZmljYXRlSW5mbworICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
CisgKgorICogU2luY2U6IDIuNAorICovCit2b2lkIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2Zy
ZWUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
aW5mbyk7CisKKyAgICBpbmZvLT5+V2ViS2l0Q2VydGlmaWNhdGVJbmZvKCk7CisgICAgZ19zbGlj
ZV9mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbywgaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZToKKyAqIEBpbmZvOiBhICNXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGUgYXNzb2Np
YXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOiBUaGUgY2VydGlmaWNhdGUgb2YgQGluZm8uCisgKgorICogU2lu
Y2U6IDIuNAorICovCitHVGxzQ2VydGlmaWNhdGUqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dl
dF90bHNfY2VydGlmaWNhdGUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOworCisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmlj
YXRlSW5mby5jZXJ0aWZpY2F0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2dldF90bHNfZXJyb3JzOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbwor
ICoKKyAqIEdldCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdzIHZlcmlmaWNhdGlvbiBzdGF0dXMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICog
UmV0dXJuczogVGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGluZm8uCisgKgorICogU2luY2U6
IDIuNAorICovCitHVGxzQ2VydGlmaWNhdGVGbGFncyB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19n
ZXRfdGxzX2Vycm9ycyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoaW5mbywgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDAp
KTsKKworICAgIHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZjE2NDA1ZTgzY2Y2MTJiM2FiZTAzZmE2NmE2MWQ1
YWNiMzhmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJ
VDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUg
aW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUgPGdpby9n
aW8uaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ0VSVElG
SUNBVEVfSU5GTyAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUoKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdENlcnRpZmljYXRlSW5mbyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm87CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlICAgICAg
ICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19jb3B5ICAgICAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZv
X2ZyZWUgICAgICAgICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dF
QktJVF9BUEkgR1Rsc0NlcnRpZmljYXRlICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90
bHNfY2VydGlmaWNhdGUgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9B
UEkgR1Rsc0NlcnRpZmljYXRlRmxhZ3MKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YTAx
YTgyZTZmZjRlNGYyMjI4ZTdkZmIxOTdlMjlhMThlOWU4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2
YXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDZXJ0
aWZpY2F0ZUluZm9Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKK3N0cnVjdCBfV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvIHsKKyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAg
ICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8odGxzRXJyb3JzLCBjZXJ0aWZpY2F0ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgX1dlYktpdENlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IGluZm8pCisgICAgICAgIDogY2VydGlmaWNhdGVJbmZvKGluZm8tPmNlcnRpZmljYXRlSW5mbykK
KyAgICB7CisgICAgfQorCisgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRl
SW5mbzsKK307CisKK2NvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgd2Via2l0Q2VydGlm
aWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyopOworCisj
ZW5kaWYgLy8gV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGQy
YzhiYmRmOWI1NDRjZWI0NTIxOGYwM2U5MzZlNzI1NDBjZjdkNWUuLjIyZjRlNTQ5MGFhZjNlZWU0
OGUyMTRjMWI4ZDNiNDMwNjU2ZDAwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw4ICsyMCwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKIAorI2lu
Y2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tp
ZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUuaCIKQEAgLTgwNyw2ICs4MDksMjQgQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqIGhvc3QKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgiUHJlZmV0Y2hETlMiKSwgSW1t
dXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkpOwogfQogCisvKioKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3Q6CisgKiBAY29u
dGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRl
SW5mbworICogQGhvc3Q6IHRoZSBob3N0IGZvciB3aGljaCBhIGNlcnRpZmljYXRlIGlzIHRvIGJl
IGFsbG93ZWQKKyAqCisgKiBJZ25vcmUgZnVydGhlciBUTFMgZXJyb3JzIG9uIHRoZSBAaG9zdCBm
b3IgdGhlIGNlcnRpZmljYXRlIHByZXNlbnQgaW4gQGluZm8uCisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8sIGNvbnN0IGdjaGFyKiBob3N0
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQp
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9z
dCk7CisKKyAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8g
PSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZSh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0
aWZpY2F0ZUluZm8oaW5mbykpOworICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0
cmluZzo6ZnJvbVVURjgoaG9zdCkpOworfQorCiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29u
dGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKIHsK
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGRvd25sb2Fkc01hcCgpLmdl
dChkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCBkZDM4YzFkMzc1YmU5NjUwYjk0Yjg1M2ZkMzEx
MjhhYTI3MzdhNmFmLi4xMzc5ZmMzYTM2MjI3OTFiYWY4NDRjOTZkYmNhNzgzN2FkYjMzNTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmlj
YXRlSW5mby5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RG93bmxvYWQuaD4KQEAgLTY0LDcgKzY1LDcgQEAgdHlwZWRlZiBlbnVtIHsKIC8qKgogICogV2Vi
S2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6
IElnbm9yZSBUTFMgZXJyb3JzLgotICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBU
TFMgZXJyb3JzIG1ha2UgdGhlIGxvYWQgdG8gZmluaXNoIHdpdGggYW4gZXJyb3IuCisgKiBAV0VC
S0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFrZSB0aGUgbG9hZCBmaW5p
c2ggd2l0aCBhbiBlcnJvciBhbmQgYSBub3RpZmljYXRpb24gc2lnbmFsLgogICoKICAqIEVudW0g
dmFsdWVzIHVzZWQgdG8gZGVub3RlIHRoZSBUTFMgZXJyb3JzIHBvbGljeS4KICAqLwpAQCAtMTk5
LDYgKzIwMCwxMSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlz
a19jYWNoZV9kaXJlY3RvcnkgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpkaXJlY3RvcnkpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9y
X2hvc3QgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRp
ZmljYXRlSW5mbyAgICAgICAgICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqaG9z
dCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5MDIwMTJmZDIxYzE2NzBjMDAx
OTkxOWRkYzAyZjM4MmFjMjIyNWI2Li44ZDkzNDJmZWRlNzZmNDJhOWZmNDdkMmI5ZjEzYjRiYTk4
YmEzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRp
Y2F0aW9uRGlhbG9nLmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmgiCkBAIC04OSw2ICs5MCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogZW51bSB7CiAgICAgTE9BRF9DSEFOR0VELAog
ICAgIExPQURfRkFJTEVELAorICAgIExPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SUywKIAogICAg
IENSRUFURSwKICAgICBSRUFEWV9UT19TSE9XLApAQCAtODQ3LDYgKzg0OSwzNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZp
ZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKIAogICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9yczoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgICAgICog
QGhvc3Q6IHRoZSBob3N0IG9uIHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZAorICAgICAqCisgICAg
ICogRW1pdHRlZCB3aGVuIGEgVExTIGVycm9yIG9jY3VycyBkdXJpbmcgYSBsb2FkIG9wZXJhdGlv
bi4gVGhlIEBpbmZvCisgICAgICogb2JqZWN0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBlcnJvciBzdWNoIGFzIHRoZSAjR1Rsc0NlcnRpZmljYXRlCisgICAgICogYW5kIHRoZSAjR1Rs
c0NlcnRpZmljYXRlRmxhZ3MuIFRvIGFsbG93IGFuIGV4Y2VwdGlvbiBmb3IgdGhpcyBjZXJ0aWZp
Y2F0ZQorICAgICAqIGFuZCB0aGlzIGhvc3QgdXNlIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190
bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoKS4KKyAgICAgKgorICAgICAqIFRvIGhhbmRsZSB0aGlz
IHNpZ25hbCBhc3luY2hyb25vdXNseSB5b3Ugc2hvdWxkIGNvcHkgdGhlICNXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8KKyAgICAgKiB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKSBhbmQg
cmV0dXJuICVUUlVFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhl
ciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVG
QUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBTaW5j
ZTogMi40CisgICAgICovCisgICAgc2lnbmFsc1tMT0FEX0ZBSUxFRF9XSVRIX1RMU19FUlJPUlNd
ID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLAor
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
IEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YlZpZXdDbGFzcywgbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSwKKyAgICAgICAgICAgIGdf
c2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICov
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fQk9YRURfU1RSSU5HLAorICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsIC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPICB8IEdfU0lHTkFMX1RZUEVf
U1RBVElDX1NDT1BFLAorICAgICAgICAgICAgR19UWVBFX1NUUklORyk7CisKKyAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3OjpjcmVhdGU6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktp
dFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAgLTE1MDks
MTUgKzE1NDEsMTkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogICAgIGdfc2lnbmFsX2VtaXQo
d2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7
CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IsIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0
ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIEdUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkK
IHsKICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIGZhbHNlKTsKICAgICB3
ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KHdlYlZpZXcpOwogCiAgICAg
V2ViS2l0VExTRXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CiAgICAgaWYg
KHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkgewotICAg
ICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVE
LCBmYWlsaW5nVVJJLCBlcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgR093blB0cjxT
b3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyhmYWlsaW5nVVJJKSk7CisgICAgICAgIFdlYktp
dENlcnRpZmljYXRlSW5mbyBpbmZvKHRsc0Vycm9ycywgY2VydGlmaWNhdGUpOworICAgICAgICBn
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWdu
YWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsICZpbmZvLCBzb3VwVVJJLT5ob3N0
LCAmcmV0dXJuVmFsdWUpOworICAgICAgICBpZiAoIXJldHVyblZhbHVlKQorICAgICAgICAgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEXSwgMCwgV0VCS0lUX0xP
QURfU1RBUlRFRCwgZmFpbGluZ1VSSSwgZXJyb3IsICZyZXR1cm5WYWx1ZSk7CiAgICAgfQogCiAg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJ
VF9MT0FEX0ZJTklTSEVEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAppbmRleCBhNGQ2ZTQzOWVjYTcyNmU5MDYzNzYxMzIxNmE1MTQ3N2Vi
N2FlOTdkLi42ZTQzNGI1ZjRiMWFmMmM3NzhiODI2ZTI5Yjc2MmY5YmViZGM2YmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
MDAsNTggKzIwMCw2MCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3Q2xhc3MgewogICAgIFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MgcGFyZW50OwogCi0gICAg
dm9pZCAgICAgICAoKiBsb2FkX2NoYW5nZWQpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOwot
ICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICplcnJv
cik7Ci0KLSAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHJl
YWR5X3RvX3Nob3cpICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgq
IGNsb3NlKSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAgKCogc2NyaXB0X2RpYWxvZykgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyaXB0RGlhbG9nICAgICAg
ICAgICpkaWFsb2cpICA7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9u
ICAgICAgICAqZGVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAgICB0eXBlKTsKLSAgICBnYm9vbGVh
biAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsK
LSAgICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9jaGFuZ2VkKSAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3Rf
cmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aW50ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLSAgICBnYm9vbGVhbiAgICgq
IHByaW50KSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKLSAgICB2b2lk
ICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAgICAgICAgICAqcmVzb3VyY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAg
ICAgICAgICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4p
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICBn
Ym9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29z
ZXIpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUp
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0
TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKLSAgICB2b2lkICAgICAgICgqIGNv
bnRleHRfbWVudV9kaXNtaXNzZWQpICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3JtKSAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCk7Ci0gICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCAg
IGV2ZW50KTsKLSAgICBnYm9vbGVhbiAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQpICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAg
KCogYXV0aGVudGljYXRlKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAg
ICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOworICAgIGdi
b29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVy
cm9yKTsKKworICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAo
KiByZWFkeV90b19zaG93KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQg
ICAgICAgKCogY2xvc2UpICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CisKKyAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cp
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3Jp
cHREaWFsb2cgICAgICAgICAgKmRpYWxvZykgIDsKKworICAgIGdib29sZWFuICAgKCogZGVjaWRl
X3BvbGljeSkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFBvbGljeURlY2lzaW9uICAgICAgICAqZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAg
IHR5cGUpOworICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAg
ICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9j
aGFuZ2VkKSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRU
ZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJzKTsKKyAgICBnYm9vbGVhbiAgICgqIHByaW50KSAgICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcmludE9wZXJhdGlvbiAg
ICAgICAgKnByaW50X29wZXJhdGlvbik7CisgICAgdm9pZCAgICAgICAoKiByZXNvdXJjZV9sb2Fk
X3N0YXJ0ZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVSSVJlcXVlc3QgICAgICAgICAgICAqcmVxdWVz
dCk7CisgICAgZ2Jvb2xlYW4gICAoKiBlbnRlcl9mdWxsc2NyZWVuKSAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIGxl
YXZlX2Z1bGxzY3JlZW4pICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUg
ICAgICAgICAgICpjb250ZXh0X21lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVz
dFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQpOworICAgIHZvaWQgICAgICAgKCogY29u
dGV4dF9tZW51X2Rpc21pc3NlZCkgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0
ZWQpICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRl
bnRFdmVudCAgIGV2ZW50KTsKKyAgICBnYm9vbGVhbiAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQp
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCisgICAg
Z2Jvb2xlYW4gICAoKiBhdXRoZW50aWNhdGUpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0ICpyZXF1ZXN0KTsK
KyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkX3dpdGhfdGxzX2Vycm9ycykgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gICAgICAgKmluZm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICAgKmhvc3QpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOwogICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNSkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkNikgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5k
ZXggZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uZmQwYWVkMjEwYTQ3
Y2FhMTk3MmQxYzM2MjFkYWQ2Yzc2ZmZhMzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMyw3ICsz
Myw3IEBACiAKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRMb2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsK
LXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcq
LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3Ms
IEdUbHNDZXJ0aWZpY2F0ZSopOwordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKIHZvaWQgd2Via2l0V2ViVmll
d1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGVzdGltYXRl
ZExvYWRQcm9ncmVzcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShXZWJLaXRXZWJWaWV3
KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKFdlYktpdFdl
YlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDc2ZDAxMDQxMjY4MmU4N2Y0ZjdjOTMx
OWFjZjM0Y2Q1MDJlZTEzNjQuLmUzY2Y5YTY4YzZiMzlkMTc5YWRhNTU5Y2FhNDhkYWZjMTFhZjVj
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNDMsNiArNDMsNyBAQAogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFNlY3VyaXR5TWFuYWdlci54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViVmlld0dyb3VwLnhtbCIvPgorICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8ueG1sIi8+CiAgIDwvY2hhcHRlcj4K
IAogICA8Y2hhcHRlcj4KQEAgLTYxLDYgKzYyLDExIEBACiAgICAgPHRpdGxlPkluZGV4IG9mIG5l
dyBzeW1ib2xzIGluIDIuMjwvdGl0bGU+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1p
bmRleC0yLjIueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+ICAK
LSAgCisKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi00IiByb2xlPSIyLjQiPgorICAgIDx0aXRs
ZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjQ8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9hcGktaW5kZXgtMi40LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgor
ICA8L2luZGV4PgorCiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5
LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKaW5kZXggZThiZTYxZmU0ZTNhNGYyMTI2Mjc3ZmYzMjJlMzk5OTc4M2NkYmUz
OC4uODA1NzYzYjFmMjQzODI0NGRkMzJiMmYwZTg0N2Y2OTM5NzU1NjA5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CkBAIC00OCw2ICs0OCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
dGxzX2Vycm9yc19wb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNf
ZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zCiB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5Cit3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0CiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKQEAgLTEwOTcsMyArMTA5OCwxOCBAQCBXRUJLSVRf
U0NSSVBUX1dPUkxEX0dFVF9DTEFTUwogV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlCiB3ZWJraXRf
c2NyaXB0X3dvcmxkX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0Q2VydGlmaWNhdGVJbmZvPC9GSUxFPgorV2ViS2l0Q2VydGlmaWNhdGVJbmZvCit3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19jb3B5Cit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19nZXRfdGxzX2Vycm9ycworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9U
WVBFX0NFUlRJRklDQVRFX0lORk8KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNWIxZWEz
YzFmZGU0NmQzZjE2N2NmNzAxMzIzZjhmYzAwODQwZjI5ZS4uNGI1ODNiYWQ5YjBhN2E2YmExMDJm
NzMyMmU0YzcwN2FmNjVjOWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjcsMyArMjcsNCBAQCB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X3R5cGUKIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF90
eXBlCiB3ZWJraXRfY3JlZGVudGlhbF9nZXRfdHlwZQogd2Via2l0X2ZyYW1lX2dldF90eXBlCit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAppbmRleCBkYjZjY2M4NTIyZDE1MWNi
OWM0OTVkOWQ0M2YzZTk2ZjY1MjUyYTZlLi5lMzE4MGM1YmM4YzkyNDg3YmMxMzRhMTY0YmJkNGRm
MmI4MmI3YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcApAQCAtMjgsNiArMjgsOCBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZl
cioga0h0dHBTZXJ2ZXI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEhUTUwgPSAiPGh0bWw+
PGJvZHk+VGVzdGluZyBXZWJLaXQyR1RLKyBTU0w8L2JvZHk+PC9odG1sbD4iOwogc3RhdGljIGNv
bnN0IGNoYXIqIGluc2VjdXJlQ29udGVudEhUTUwgPSAiPGh0bWw+PHNjcmlwdCBzcmM9XCIlc1wi
Pjwvc2NyaXB0Pjxib2R5PjxwPlRleHQgKyBpbWFnZSA8aW1nIHNyYz1cIiVzXCIgYWxpZ249XCJy
aWdodFwiLz48L3A+PC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIgVExTRXhwZWN0
ZWRTdWNjZXNzVGl0bGVbXSA9ICJXZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lvbiB0ZXN0IjsKK3N0
YXRpYyBjb25zdCBjaGFyIFRMU1N1Y2Nlc3NIVE1MU3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRp
dGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48
L2JvZHk+PC9odG1sPiI7CiAKIGNsYXNzIFNTTFRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0
IHsKIHB1YmxpYzoKQEAgLTEzMiw2ICsxMzQsODUgQEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9y
c1BvbGljeShTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF0ZXN0
LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkp
OwogfQogCitjbGFzcyBUTFNFcnJvcnNUZXN0OiBwdWJsaWMgU1NMVGVzdCB7CitwdWJsaWM6Cisg
ICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShUTFNFcnJvcnNUZXN0KTsKKworICAgIFRMU0Vycm9y
c1Rlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2Fk
LWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLCBHX0NBTExCQUNLKHJ1bkxvYWRGYWlsZWRXaXRoVExT
RXJyb3JzQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB+VExTRXJyb3JzVGVzdCgpCisg
ICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJW
aWV3LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKKyAgICAgICAgaWYg
KG1fY2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
ZnJlZShtX2NlcnRpZmljYXRlSW5mbyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHJ1
bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENl
cnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hhciogaG9zdCwgVExTRXJyb3JzVGVzdCogdGVz
dCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGluZm8s
IGhvc3QpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkxvYWRG
YWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hh
ciogaG9zdCkKKyAgICB7CisgICAgICAgIGlmIChtX2NlcnRpZmljYXRlSW5mbykKKyAgICAgICAg
ICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZpY2F0ZUluZm8pOworICAg
ICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoaW5m
byk7CisgICAgICAgIG1faG9zdC5zZXQoZ19zdHJkdXAoaG9zdCkpOworICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJ
bmZvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICB9CisK
KyAgICBjb25zdCBjaGFyKiBob3N0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hvc3QuZ2V0
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0
aWZpY2F0ZUluZm87CisgICAgR093blB0cjxjaGFyPiBtX2hvc3Q7Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lf
RkFJTCk7CisKKyAgICAvLyBUaGUgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHNpZ25hbCBz
aG91bGQgYmUgZW1pdHRlZCB3aGVuIHRoZXJlIGlzIGEgVExTIGZhaWx1cmUuCisgICAgdGVzdC0+
bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LXRscy8iKS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKCk7CisgICAgLy8g
VGVzdCB0aGUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIEFQSS4KKyAgICBnX2Fzc2VydChHX0lTX1RM
U19DRVJUSUZJQ0FURSh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRl
KHRlc3QtPmNlcnRpZmljYXRlSW5mbygpKSkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnModGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkp
LCA9PSwgR19UTFNfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPmhvc3QoKSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGtIdHRwc1NlcnZlci0+YmFzZVVS
SSgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2Nt
cGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmlu
aXNoZWQpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhbiBleGNlcHRpb24gZm9yIHRoaXMgY2Vy
dGlmaWNhdGUgb24gdGhpcyBob3N0LgorICAgIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNf
Y2VydGlmaWNhdGVfZm9yX2hvc3QoY29udGV4dCwgdGVzdC0+Y2VydGlmaWNhdGVJbmZvKCksIHRl
c3QtPmhvc3QoKSk7CisgICAgLy8gVGhlIHBhZ2Ugc2hvdWxkIG5vdyBsb2FkIHdpdGhvdXQgZXJy
b3JzLgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVz
dC10bHMvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKwor
ICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tp
bmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVz
dC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7
CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
dmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFRMU0V4cGVjdGVkU3VjY2Vzc1Rp
dGxlKTsKK30KKworCiBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFi
bGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlmIChtZXNzYWdlLT5t
ZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CkBAIC0xNDgsNiArMjI5LDEwIEBAIHN0YXRpYyB2
b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIHJlc3BvbnNlSFRNTC5nZXQoKSwgc3Ry
bGVuKHJlc3BvbnNlSFRNTC5nZXQoKSkpOwogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Nv
bXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1
YWwocGF0aCwgIi90ZXN0LXRscy8iKSkgeworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIFRMU1N1Y2Nl
c3NIVE1MU3RyaW5nLCBzdHJsZW4oVExTU3VjY2Vzc0hUTUxTdHJpbmcpKTsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X05PVF9GT1VORCk7CiB9CkBAIC0xOTEsNyArMjc2LDExIEBAIHZvaWQgYmVmb3JlQWxsKCkKIAog
ICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0U1NMKTsKICAgICBJ
bnNlY3VyZUNvbnRlbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zZWN1cmUtY29udGVu
dCIsIHRlc3RJbnNlY3VyZUNvbnRlbnQpOwotICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29u
dGV4dCIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJvcnNQb2xpY3kpOworICAgIC8v
IEluIHRoaXMgY2FzZSB0aGUgb3JkZXIgb2YgdGhlIHRlc3RzIGRvZXMgbWF0dGVyIGJlY2F1c2Ug
dGxzLWVycm9ycy1wb2xpY3kgdGVzdHMgdGhlIGRlZmF1bHQgcG9saWN5LAorICAgIC8vIGFuZCBl
eHBlY3RzIHRoYXQgbm8gZXhjZXB0aW9uIHdpbGwgaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGlzIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIgYXMgaXMKKyAgICAvLyBkb25lIGluIHRoZSB0bHMtcGVy
bWlzc2lvbi1yZXF1ZXN0IHRlc3QuCisgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgVExTRXJyb3Jz
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIs
IHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDcwZTNiNDMzMDU5
M2VmNmQwZmQ3ODhiYTJlOTMzMWY0MjBmODk3ODYuLjhkODIxOTkwMzk5OGQ5NWYzZTU5OWU4MTZk
MDljYzQ4NjA2NzU2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVu
dUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51SXRlbS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNo
YWwubGlzdCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFs
Lmxpc3QKaW5kZXggNDIwNzY2ZWE3ZjE1MzIzYWEyYmRlNzFkNjc0MTZmODRhYTRiNDBkYi4uZTFj
ZmUwNzIxNmQzOWIwZTk4ZDYwNDc3MWJlMDYyOTY1ZDI2ODdmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xLDQg
KzEsNSBAQAogQk9PTEVBTjpCT1hFRAorQk9PTEVBTjpCT1hFRCxTVFJJTkcKIEJPT0xFQU46RU5V
TSxTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULEJPWEVELE9C
SkVDVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDk1ZDNiYzdl
OGMyZTNjMmIyYjRmZjkzYWVhODk3ZmM1NjVkMjFmYTIuLmQwN2E1YzE1ODdjOGI2ZWFkNDVjMTVl
YjQyNDZhZjc0NzAzMTAyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTEwNzEsMTAgKzEwNzEsMTUgQEAgdm9pZCBXZWJDb250ZXh0OjphbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKgogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2Vsc2UKKyNpZiBVU0UoU09VUCkKKyAgICBtX3Byb2Nlc3Nlc1sw
XS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0ZUluZm8oKSwgaG9zdCksIDApOworICAg
IHJldHVybjsKKyNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNlcnRpZmljYXRlKTsKICAgICBVTlVT
RURfUEFSQU0oaG9zdCk7CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIHdoZXRo
ZXIgd2Ugd2FudCB0aGlzIFNQSSB0byBiZSBleHBvc2VkIGFuZCB1c2VkIGZvciBjbGllbnRzIHRo
YXQgZG9uJ3QgdXNlIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyNlbmRpZgorCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggNDE2NWFiMThlOWZjZDA3ZmUzMmM0YzJkNmVkMjdjNGIxODhkYjdjNS4uMGNjYmU2ZTZlZGE4
YjRjNjhkMzcxZWIzMTIzMTNhMDBhZmFhN2JkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViUHJvY2Vzc19oCiAKICNp
bmNsdWRlICJDYWNoZU1vZGVsLmgiCisjaW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCkBAIC0xNjAsNiArMTYxLDEw
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKIAorI2lmICFFTkFC
TEUoTkVUV09SS19QUk9DRVNTKSAmJiBVU0UoU09VUCkKKyAgICB2b2lkIGFsbG93U3BlY2lmaWNI
VFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBj
b25zdCBTdHJpbmcmIGhvc3QpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzcygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggNTliY2U2MzYyNjgwYzZiMjYxMWMwZTNlNjdhNDk5NWJiY2Q0N2I4Yy4uNzE4ZDhm
YTc3OGU5MDFhZTg1ZDEzZTIxM2RmZmFkNzIxMTlkYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODIsNCArODIsOCBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpOwogI2VuZGlmCisK
KyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgVVNFKFNPVVApCisgICAgQWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0
aWZpY2F0ZSwgV1RGOjpTdHJpbmcgaG9zdCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggYzdiZWE5Mjg2NGYx
YzI4YTc2MDBjNjUzZjAxOWY4NjVhY2U3ZTI5ZC4uZDZiZTU4YTI0MDdmNWU2OTViMWExZTlmNGQ5
YjA3ZTE2ZmQ4YTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC0yMDgsNCArMjA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAor
I2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNTKQordm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlKCkpOworfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214258</attachid>
            <date>2013-10-15 07:46:43 -0700</date>
            <delta_ts>2013-10-18 04:08:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120160-20131015154651.patch</filename>
            <type>text/plain</type>
            <size>44485</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFkMjk4MzAxMjhmNDQw
ZGIyZmYzMzNhMTdkZjM4YzNiNjEwOWI3Yi4uMDdmOWI0M2MwNjEzMWRhOWUzMGVlNzI4N2JkMDA1
NWZlOTNlZDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEwLTE1ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBDZXJ0aWZpY2F0ZUlu
Zm8gdW5kZXIgU291cC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2VydGlmaWNhdGVJ
bmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mb1Nv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUlu
Zm8pOiBOZXcgY29uc3RydWN0b3IgdXNpbmcKKyAgICAgICAgR1Rsc0NlcnRpZmljYXRlRmxhZ3Mg
YW5kIEdUbHNDZXJ0aWZpY2F0ZS4KKwogMjAxMy0xMC0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyVGV4dCBzaG91bGQgY2FjaGUgUmVuZGVyU3R5
bGUgaW4gbG9jYWxzIG1vcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTk0YzMyMzU0ODkwY2M2NWY3NGY4N2Vl
OWFjYjE5ZmJmMWMwOTQzZC4uZTYyMjVlOTcxODU2MDI1Yzk1ZWQ5MjM3ZTQ2ZjFkZjBmNjNkNDBh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTEwLTE1ICBCcmlhbiBIb2x0ICA8
YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViS2l0MiBBUEkg
Zm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyBzaWduYWwgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHRoYXQg
aXMgZW1pdHRlZCB3aXRoCisgICAgICAgIGEgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIGJveGVkIHR5
cGUgdG8gYWxsb3cgdXNlcnMgdG8gZGVhbCB3aXRoIFRMUworICAgICAgICBlcnJvcnMuIEEgbmV3
IEFQSSBpcyBleHBvc2VkIGluIFdlYktpdFdlYkNvbnRleHQgdG8gYWxsb3cKKyAgICAgICAgZXhj
ZXB0aW9ucyBmb3IgVExTIGVycm9ycyBvbiBhIGdpdmVuIGhvc3QuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAg
KHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkpOgorICAgICAgICAod2Via2l0X2NlcnRpZmlj
YXRlX2luZm9fZnJlZSk6CisgICAgICAgICh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxz
X2NlcnRpZmljYXRlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNh
dGVJbmZvUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm86
Ol9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rs
c19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6IFN1cHBvcnQgVExTCisgICAgICAgIGV4Y2VwdGlvbnMg
Zm9yIGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6IEFkZGVkIG5ldyBzaWduYWwu
CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOiBFbWl0IG5l
dyBzaWduYWwgd2l0aAorICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gYW5kIGhvc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcDoKKyAgICAgICAgKHRlc3RMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyk6CisgICAgICAgIChodHRwc1NlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6IEFkZGVkIG5ldyB0ZXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KTogU2VuZAorICAg
ICAgICBtZXNzYWdlIHRvIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBjZXJ0aWZpY2F0ZSBhbmQgaG9z
dCBwYWlyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogTmV3IG1lc3NhZ2UgdG8gdGVsbAorICAg
ICAgICBXZWJQcm9jZXNzIHRvIGFsbG93IGEgc3BlY2lmaWMgVExTIGNlcnRpZmljYXRlIGZvciBh
IGdpdmVuIGhvc3QuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KTogQWxsb3cKKyAgICAgICAgY2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpci4K
KwogMjAxMy0xMC0xNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtTb3VwXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHIxNTc0NDUgZm9yIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NlcnRpZmljYXRlSW5mby5oCmluZGV4IGVjOTkzMGU4NzYxZGI5MWIxOTQ1ODAz
MDQxYjdmMjI1MGEzNTM2MjIuLmMyYjQwZDc1YmQ2ZTA0NGE4YjZlM2U1MzIyZjljZWRhNDU1YWY5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2VydGlmaWNh
dGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DZXJ0aWZpY2F0
ZUluZm8uaApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7
CisjZWxpZiBVU0UoU09VUCkKKyAgICBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogI2VuZGlmCiAKICAgICB+Q2VydGlmaWNh
dGVJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ2VydGlmaWNhdGVJbmZvU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvU291cC5jcHAKaW5kZXggMTYyYTc3ODFhZDFmN2MwNDQ1
MTZlOGY4ZjA1YjYxNjYyY2RlNTI5ZC4uOTJiY2ZhN2FlOTYyMjllMzExYTIwZGFjNGQ1MDUyM2Fj
MWJmZDU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0NlcnRpZmljYXRlSW5mb1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm9Tb3VwLmNwcApAQCAtMzQsNiArMzQsMTIgQEAgQ2Vy
dGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUluZm8oKQogewogfQogCitDZXJ0aWZpY2F0ZUluZm86
OkNlcnRpZmljYXRlSW5mbyhHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMsIEdUbHNDZXJ0
aWZpY2F0ZSogY2VydGlmaWNhdGUpCisgICAgOiBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQor
ICAgICwgbV90bHNFcnJvcnModGxzRXJyb3JzKQoreworfQorCiBDZXJ0aWZpY2F0ZUluZm86On5D
ZXJ0aWZpY2F0ZUluZm8oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NzA2ZmU5OTBlYTFkNGU5NTc2Yzc2MWMyODcyYTA4NjE2YzYzNjc2NC4uY2NmMDQzN2NjOTYwYzVj
YzgwNGRhMmFmOTRlOWQ4ZWFiODlmNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0xMDAsNiArMTAwLDcgQEAgd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBcCkBAIC02
NzMsNiArNjc0LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmlj
YXRlSW5mby5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENl
cnRpZmljYXRlSW5mby5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA0MWU1OTcxZjdlZjAxOGUwYzk2OTNmYmEzNDkyODY2MTMwNmE0YWJmLi5hMmVi
MDU3NTQ5YTllMjkxN2E5NjIzZGQwODMwNTA5Yzc2YjE3Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtODYsNiArODYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAogICAgIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mb1ByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRN
ZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwCkBAIC0yODUsNiAr
Mjg4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiBzZXQoV2ViS2l0Ml9JTlNUQUxM
RURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5m
by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTJkZjFhYWNhODAyNTc5ZmI4NWE2M2QwZjAxYTVmNjkwMTVmMGI4
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENlcnRpZmljYXRlSW5mby5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCIK
KworI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8K
KyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQm94ZWQgdHlwZSB0byBlbmNhcHN1bGF0ZSBUTFMgY2Vy
dGlmaWNhdGUgaW5mb3JtYXRpb24KKyAqIEBUaXRsZTogV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisg
KiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LCAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFdo
ZW4gYSBjbGllbnQgbG9hZHMgYSBwYWdlIG92ZXIgSFRUUFMgd2hlcmUgdGhlcmUgaXMgYW4gdW5k
ZXJseWluZyBUTFMgZXJyb3IKKyAqIFdlYktpdCB3aWxsIGZpcmUgYSAjV2ViS2l0V2ViVmlldzo6
bG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHNpZ25hbCB3aXRoIGEKKyAqICNXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8gYW5kIHRoZSBob3N0IG9mIHRoZSBmYWlsaW5nIFVSSS4KKyAqCisgKiBUbyBo
YW5kbGUgdGhpcyBzaWduYWwgYXN5bmNocm9ub3VzbHkgeW91IHNob3VsZCBtYWtlIGEgY29weSBv
ZiB0aGUKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gd2l0aCB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19jb3B5KCkuCisgKi8KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvLCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19j
b3B5LCB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKQorCitjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIHdlYmtpdENlcnRpZmljYXRlSW5mb0dldENlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGluZm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIHJldHVybiBpbmZvLT5j
ZXJ0aWZpY2F0ZUluZm87Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29w
eToKKyAqIEBpbmZvOiBhICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBNYWtlIGEgY29w
eSBvZiB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAq
CisgKiBTaW5jZTogMi40CisgKi8KK1dlYktpdENlcnRpZmljYXRlSW5mbyogd2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fY29weShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoaW5mbywgMCk7CisKKyAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IGNvcHkgPSBnX3NsaWNlX25ldzAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKTsKKyAgICBuZXcgKGNv
cHkpIFdlYktpdENlcnRpZmljYXRlSW5mbyhpbmZvKTsKKyAgICByZXR1cm4gY29weTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlOgorICogQGluZm86IGEgI1dlYktp
dENlcnRpZmljYXRlSW5mbworICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8u
CisgKgorICogU2luY2U6IDIuNAorICovCit2b2lkIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2Zy
ZWUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
aW5mbyk7CisKKyAgICBpbmZvLT5+V2ViS2l0Q2VydGlmaWNhdGVJbmZvKCk7CisgICAgZ19zbGlj
ZV9mcmVlKFdlYktpdENlcnRpZmljYXRlSW5mbywgaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZToKKyAqIEBpbmZvOiBhICNXZWJL
aXRDZXJ0aWZpY2F0ZUluZm8KKyAqCisgKiBHZXQgdGhlICNHVGxzQ2VydGlmaWNhdGUgYXNzb2Np
YXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOiBUaGUgY2VydGlmaWNhdGUgb2YgQGluZm8uCisgKgorICogU2lu
Y2U6IDIuNAorICovCitHVGxzQ2VydGlmaWNhdGUqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dl
dF90bHNfY2VydGlmaWNhdGUoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGluZm8sIDApOworCisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmlj
YXRlSW5mby5jZXJ0aWZpY2F0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2dldF90bHNfZXJyb3JzOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5mbwor
ICoKKyAqIEdldCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZUZsYWdzIHZlcmlmaWNhdGlvbiBzdGF0dXMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAqICNXZWJLaXRDZXJ0aWZpY2F0ZUluZm8uCisgKgorICog
UmV0dXJuczogVGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgQGluZm8uCisgKgorICogU2luY2U6
IDIuNAorICovCitHVGxzQ2VydGlmaWNhdGVGbGFncyB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19n
ZXRfdGxzX2Vycm9ycyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoaW5mbywgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDAp
KTsKKworICAgIHJldHVybiBpbmZvLT5jZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZjE2NDA1ZTgzY2Y2MTJiM2FiZTAzZmE2NmE2MWQ1
YWNiMzhmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJ
VDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUg
aW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUgPGdpby9n
aW8uaD4KKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ0VSVElG
SUNBVEVfSU5GTyAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUoKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdENlcnRpZmljYXRlSW5mbyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm87CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlICAgICAg
ICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdENlcnRpZmljYXRlSW5mbyAqCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19jb3B5ICAgICAgICAgICAgICAgIChXZWJLaXRDZXJ0aWZpY2F0
ZUluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZv
X2ZyZWUgICAgICAgICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dF
QktJVF9BUEkgR1Rsc0NlcnRpZmljYXRlICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90
bHNfY2VydGlmaWNhdGUgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK1dFQktJVF9B
UEkgR1Rsc0NlcnRpZmljYXRlRmxhZ3MKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNf
ZXJyb3JzICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YTAx
YTgyZTZmZjRlNGYyMjI4ZTdkZmIxOTdlMjlhMThlOWU4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2
YXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDZXJ0
aWZpY2F0ZUluZm9Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJDZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKK3N0cnVjdCBfV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvIHsKKyAgICBfV2ViS2l0Q2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKKyAg
ICAgICAgOiBjZXJ0aWZpY2F0ZUluZm8odGxzRXJyb3JzLCBjZXJ0aWZpY2F0ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgX1dlYktpdENlcnRpZmljYXRlSW5mbyhXZWJLaXRDZXJ0aWZpY2F0ZUluZm8q
IGluZm8pCisgICAgICAgIDogY2VydGlmaWNhdGVJbmZvKGluZm8tPmNlcnRpZmljYXRlSW5mbykK
KyAgICB7CisgICAgfQorCisgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRl
SW5mbzsKK307CisKK2NvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgd2Via2l0Q2VydGlm
aWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyopOworCisj
ZW5kaWYgLy8gV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGQy
YzhiYmRmOWI1NDRjZWI0NTIxOGYwM2U5MzZlNzI1NDBjZjdkNWUuLjIyZjRlNTQ5MGFhZjNlZWU0
OGUyMTRjMWI4ZDNiNDMwNjU2ZDAwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw4ICsyMCwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKIAorI2lu
Y2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tp
ZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUuaCIKQEAgLTgwNyw2ICs4MDksMjQgQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqIGhvc3QKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5wb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgiUHJlZmV0Y2hETlMiKSwgSW1t
dXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkpOwogfQogCisvKioKKyAqIHdl
YmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3Q6CisgKiBAY29u
dGV4dDogYSAjV2ViS2l0V2ViQ29udGV4dAorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRl
SW5mbworICogQGhvc3Q6IHRoZSBob3N0IGZvciB3aGljaCBhIGNlcnRpZmljYXRlIGlzIHRvIGJl
IGFsbG93ZWQKKyAqCisgKiBJZ25vcmUgZnVydGhlciBUTFMgZXJyb3JzIG9uIHRoZSBAaG9zdCBm
b3IgdGhlIGNlcnRpZmljYXRlIHByZXNlbnQgaW4gQGluZm8uCisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIGluZm8sIGNvbnN0IGdjaGFyKiBob3N0
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQp
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9z
dCk7CisKKyAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8g
PSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZSh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0
aWZpY2F0ZUluZm8oaW5mbykpOworICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0
cmluZzo6ZnJvbVVURjgoaG9zdCkpOworfQorCiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29u
dGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKIHsK
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGRvd25sb2Fkc01hcCgpLmdl
dChkb3dubG9hZFByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCBkZDM4YzFkMzc1YmU5NjUwYjk0Yjg1M2ZkMzEx
MjhhYTI3MzdhNmFmLi4xMzc5ZmMzYTM2MjI3OTFiYWY4NDRjOTZkYmNhNzgzN2FkYjMzNTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRfaAogCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmlj
YXRlSW5mby5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RG93bmxvYWQuaD4KQEAgLTY0LDcgKzY1LDcgQEAgdHlwZWRlZiBlbnVtIHsKIC8qKgogICogV2Vi
S2l0VExTRXJyb3JzUG9saWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6
IElnbm9yZSBUTFMgZXJyb3JzLgotICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBU
TFMgZXJyb3JzIG1ha2UgdGhlIGxvYWQgdG8gZmluaXNoIHdpdGggYW4gZXJyb3IuCisgKiBAV0VC
S0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgbWFrZSB0aGUgbG9hZCBmaW5p
c2ggd2l0aCBhbiBlcnJvciBhbmQgYSBub3RpZmljYXRpb24gc2lnbmFsLgogICoKICAqIEVudW0g
dmFsdWVzIHVzZWQgdG8gZGVub3RlIHRoZSBUTFMgZXJyb3JzIHBvbGljeS4KICAqLwpAQCAtMTk5
LDYgKzIwMCwxMSBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlz
a19jYWNoZV9kaXJlY3RvcnkgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICpkaXJlY3RvcnkpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9y
X2hvc3QgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRp
ZmljYXRlSW5mbyAgICAgICAgICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAqaG9z
dCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5MDIwMTJmZDIxYzE2NzBjMDAx
OTkxOWRkYzAyZjM4MmFjMjIyNWI2Li44ZDkzNDJmZWRlNzZmNDJhOWZmNDdkMmI5ZjEzYjRiYTk4
YmEzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRp
Y2F0aW9uRGlhbG9nLmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmgiCkBAIC04OSw2ICs5MCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogZW51bSB7CiAgICAgTE9BRF9DSEFOR0VELAog
ICAgIExPQURfRkFJTEVELAorICAgIExPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SUywKIAogICAg
IENSRUFURSwKICAgICBSRUFEWV9UT19TSE9XLApAQCAtODQ3LDYgKzg0OSwzNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZp
ZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKIAogICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9yczoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgICAgICog
QGhvc3Q6IHRoZSBob3N0IG9uIHdoaWNoIHRoZSBlcnJvciBvY2N1cnJlZAorICAgICAqCisgICAg
ICogRW1pdHRlZCB3aGVuIGEgVExTIGVycm9yIG9jY3VycyBkdXJpbmcgYSBsb2FkIG9wZXJhdGlv
bi4gVGhlIEBpbmZvCisgICAgICogb2JqZWN0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBlcnJvciBzdWNoIGFzIHRoZSAjR1Rsc0NlcnRpZmljYXRlCisgICAgICogYW5kIHRoZSAjR1Rs
c0NlcnRpZmljYXRlRmxhZ3MuIFRvIGFsbG93IGFuIGV4Y2VwdGlvbiBmb3IgdGhpcyBjZXJ0aWZp
Y2F0ZQorICAgICAqIGFuZCB0aGlzIGhvc3QgdXNlIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190
bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoKS4KKyAgICAgKgorICAgICAqIFRvIGhhbmRsZSB0aGlz
IHNpZ25hbCBhc3luY2hyb25vdXNseSB5b3Ugc2hvdWxkIGNvcHkgdGhlICNXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8KKyAgICAgKiB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKSBhbmQg
cmV0dXJuICVUUlVFLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhl
ciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVG
QUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBTaW5j
ZTogMi40CisgICAgICovCisgICAgc2lnbmFsc1tMT0FEX0ZBSUxFRF9XSVRIX1RMU19FUlJPUlNd
ID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLAor
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
IEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YlZpZXdDbGFzcywgbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSwKKyAgICAgICAgICAgIGdf
c2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICov
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fQk9YRURfU1RSSU5HLAorICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsIC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPICB8IEdfU0lHTkFMX1RZUEVf
U1RBVElDX1NDT1BFLAorICAgICAgICAgICAgR19UWVBFX1NUUklORyk7CisKKyAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3OjpjcmVhdGU6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktp
dFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAgLTE1MDks
MTUgKzE1NDEsMTkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogICAgIGdfc2lnbmFsX2VtaXQo
d2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7
CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IsIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0
ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIEdUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkK
IHsKICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIGZhbHNlKTsKICAgICB3
ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KHdlYlZpZXcpOwogCiAgICAg
V2ViS2l0VExTRXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CiAgICAgaWYg
KHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkgewotICAg
ICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVE
LCBmYWlsaW5nVVJJLCBlcnJvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgR093blB0cjxT
b3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyhmYWlsaW5nVVJJKSk7CisgICAgICAgIFdlYktp
dENlcnRpZmljYXRlSW5mbyBpbmZvKHRsc0Vycm9ycywgY2VydGlmaWNhdGUpOworICAgICAgICBn
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWdu
YWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsICZpbmZvLCBzb3VwVVJJLT5ob3N0
LCAmcmV0dXJuVmFsdWUpOworICAgICAgICBpZiAoIXJldHVyblZhbHVlKQorICAgICAgICAgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEXSwgMCwgV0VCS0lUX0xP
QURfU1RBUlRFRCwgZmFpbGluZ1VSSSwgZXJyb3IsICZyZXR1cm5WYWx1ZSk7CiAgICAgfQogCiAg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJ
VF9MT0FEX0ZJTklTSEVEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAppbmRleCBhNGQ2ZTQzOWVjYTcyNmU5MDYzNzYxMzIxNmE1MTQ3N2Vi
N2FlOTdkLi42ZTQzNGI1ZjRiMWFmMmM3NzhiODI2ZTI5Yjc2MmY5YmViZGM2YmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0y
MDAsNTggKzIwMCw2MCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3Q2xhc3MgewogICAgIFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MgcGFyZW50OwogCi0gICAg
dm9pZCAgICAgICAoKiBsb2FkX2NoYW5nZWQpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOwot
ICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICplcnJv
cik7Ci0KLSAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHJl
YWR5X3RvX3Nob3cpICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgq
IGNsb3NlKSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAgKCogc2NyaXB0X2RpYWxvZykgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyaXB0RGlhbG9nICAgICAg
ICAgICpkaWFsb2cpICA7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9u
ICAgICAgICAqZGVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAgICB0eXBlKTsKLSAgICBnYm9vbGVh
biAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsK
LSAgICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9jaGFuZ2VkKSAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3Rf
cmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aW50ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLSAgICBnYm9vbGVhbiAgICgq
IHByaW50KSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKLSAgICB2b2lk
ICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAgICAgICAgICAqcmVzb3VyY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAg
ICAgICAgICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4p
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICBn
Ym9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29z
ZXIpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUp
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0
TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKLSAgICB2b2lkICAgICAgICgqIGNv
bnRleHRfbWVudV9kaXNtaXNzZWQpICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3JtKSAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCk7Ci0gICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCAg
IGV2ZW50KTsKLSAgICBnYm9vbGVhbiAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQpICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAg
KCogYXV0aGVudGljYXRlKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAg
ICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOworICAgIGdi
b29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVy
cm9yKTsKKworICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAo
KiByZWFkeV90b19zaG93KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQg
ICAgICAgKCogY2xvc2UpICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CisKKyAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cp
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3Jp
cHREaWFsb2cgICAgICAgICAgKmRpYWxvZykgIDsKKworICAgIGdib29sZWFuICAgKCogZGVjaWRl
X3BvbGljeSkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFBvbGljeURlY2lzaW9uICAgICAgICAqZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAg
IHR5cGUpOworICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAg
ICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9j
aGFuZ2VkKSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRU
ZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJzKTsKKyAgICBnYm9vbGVhbiAgICgqIHByaW50KSAgICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcmludE9wZXJhdGlvbiAg
ICAgICAgKnByaW50X29wZXJhdGlvbik7CisgICAgdm9pZCAgICAgICAoKiByZXNvdXJjZV9sb2Fk
X3N0YXJ0ZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVSSVJlcXVlc3QgICAgICAgICAgICAqcmVxdWVz
dCk7CisgICAgZ2Jvb2xlYW4gICAoKiBlbnRlcl9mdWxsc2NyZWVuKSAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIGxl
YXZlX2Z1bGxzY3JlZW4pICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUg
ICAgICAgICAgICpjb250ZXh0X21lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVz
dFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQpOworICAgIHZvaWQgICAgICAgKCogY29u
dGV4dF9tZW51X2Rpc21pc3NlZCkgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0
ZWQpICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRl
bnRFdmVudCAgIGV2ZW50KTsKKyAgICBnYm9vbGVhbiAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQp
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCisgICAg
Z2Jvb2xlYW4gICAoKiBhdXRoZW50aWNhdGUpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0ICpyZXF1ZXN0KTsK
KyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkX3dpdGhfdGxzX2Vycm9ycykgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gICAgICAgKmluZm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICAgKmhvc3QpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwogICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMykgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOwogICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNSkgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkNikgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5k
ZXggZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uZmQwYWVkMjEwYTQ3
Y2FhMTk3MmQxYzM2MjFkYWQ2Yzc2ZmZhMzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMyw3ICsz
Myw3IEBACiAKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRMb2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsK
LXZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcq
LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3Ms
IEdUbHNDZXJ0aWZpY2F0ZSopOwordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKIHZvaWQgd2Via2l0V2ViVmll
d1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGVzdGltYXRl
ZExvYWRQcm9ncmVzcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShXZWJLaXRXZWJWaWV3
KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKFdlYktpdFdl
YlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDc2ZDAxMDQxMjY4MmU4N2Y0ZjdjOTMx
OWFjZjM0Y2Q1MDJlZTEzNjQuLmUzY2Y5YTY4YzZiMzlkMTc5YWRhNTU5Y2FhNDhkYWZjMTFhZjVj
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNDMsNiArNDMsNyBAQAogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFNlY3VyaXR5TWFuYWdlci54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViVmlld0dyb3VwLnhtbCIvPgorICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8ueG1sIi8+CiAgIDwvY2hhcHRlcj4K
IAogICA8Y2hhcHRlcj4KQEAgLTYxLDYgKzYyLDExIEBACiAgICAgPHRpdGxlPkluZGV4IG9mIG5l
dyBzeW1ib2xzIGluIDIuMjwvdGl0bGU+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1p
bmRleC0yLjIueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+ICAK
LSAgCisKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi00IiByb2xlPSIyLjQiPgorICAgIDx0aXRs
ZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjQ8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9hcGktaW5kZXgtMi40LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgor
ICA8L2luZGV4PgorCiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5
LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKaW5kZXggZThiZTYxZmU0ZTNhNGYyMTI2Mjc3ZmYzMjJlMzk5OTc4M2NkYmUz
OC4uODA1NzYzYjFmMjQzODI0NGRkMzJiMmYwZTg0N2Y2OTM5NzU1NjA5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CkBAIC00OCw2ICs0OCw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
dGxzX2Vycm9yc19wb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNf
ZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zCiB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5Cit3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0CiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKQEAgLTEwOTcsMyArMTA5OCwxOCBAQCBXRUJLSVRf
U0NSSVBUX1dPUkxEX0dFVF9DTEFTUwogV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlCiB3ZWJraXRf
c2NyaXB0X3dvcmxkX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0Q2VydGlmaWNhdGVJbmZvPC9GSUxFPgorV2ViS2l0Q2VydGlmaWNhdGVJbmZvCit3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19jb3B5Cit3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlCit3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRlCit3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19nZXRfdGxzX2Vycm9ycworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9U
WVBFX0NFUlRJRklDQVRFX0lORk8KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNWIxZWEz
YzFmZGU0NmQzZjE2N2NmNzAxMzIzZjhmYzAwODQwZjI5ZS4uNGI1ODNiYWQ5YjBhN2E2YmExMDJm
NzMyMmU0YzcwN2FmNjVjOWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjcsMyArMjcsNCBAQCB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X3R5cGUKIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF90
eXBlCiB3ZWJraXRfY3JlZGVudGlhbF9nZXRfdHlwZQogd2Via2l0X2ZyYW1lX2dldF90eXBlCit3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAppbmRleCBkYjZjY2M4NTIyZDE1MWNi
OWM0OTVkOWQ0M2YzZTk2ZjY1MjUyYTZlLi5lMzE4MGM1YmM4YzkyNDg3YmMxMzRhMTY0YmJkNGRm
MmI4MmI3YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0U1NMLmNwcApAQCAtMjgsNiArMjgsOCBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZl
cioga0h0dHBTZXJ2ZXI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEhUTUwgPSAiPGh0bWw+
PGJvZHk+VGVzdGluZyBXZWJLaXQyR1RLKyBTU0w8L2JvZHk+PC9odG1sbD4iOwogc3RhdGljIGNv
bnN0IGNoYXIqIGluc2VjdXJlQ29udGVudEhUTUwgPSAiPGh0bWw+PHNjcmlwdCBzcmM9XCIlc1wi
Pjwvc2NyaXB0Pjxib2R5PjxwPlRleHQgKyBpbWFnZSA8aW1nIHNyYz1cIiVzXCIgYWxpZ249XCJy
aWdodFwiLz48L3A+PC9ib2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIgVExTRXhwZWN0
ZWRTdWNjZXNzVGl0bGVbXSA9ICJXZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lvbiB0ZXN0IjsKK3N0
YXRpYyBjb25zdCBjaGFyIFRMU1N1Y2Nlc3NIVE1MU3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRp
dGxlPldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48
L2JvZHk+PC9odG1sPiI7CiAKIGNsYXNzIFNTTFRlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0
IHsKIHB1YmxpYzoKQEAgLTEzMiw2ICsxMzQsODUgQEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9y
c1BvbGljeShTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF0ZXN0
LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkp
OwogfQogCitjbGFzcyBUTFNFcnJvcnNUZXN0OiBwdWJsaWMgU1NMVGVzdCB7CitwdWJsaWM6Cisg
ICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShUTFNFcnJvcnNUZXN0KTsKKworICAgIFRMU0Vycm9y
c1Rlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2Fk
LWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLCBHX0NBTExCQUNLKHJ1bkxvYWRGYWlsZWRXaXRoVExT
RXJyb3JzQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB+VExTRXJyb3JzVGVzdCgpCisg
ICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJW
aWV3LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKKyAgICAgICAgaWYg
KG1fY2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9f
ZnJlZShtX2NlcnRpZmljYXRlSW5mbyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHJ1
bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENl
cnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hhciogaG9zdCwgVExTRXJyb3JzVGVzdCogdGVz
dCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGluZm8s
IGhvc3QpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkxvYWRG
YWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgY2hh
ciogaG9zdCkKKyAgICB7CisgICAgICAgIGlmIChtX2NlcnRpZmljYXRlSW5mbykKKyAgICAgICAg
ICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZpY2F0ZUluZm8pOworICAg
ICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoaW5m
byk7CisgICAgICAgIG1faG9zdC5zZXQoZ19zdHJkdXAoaG9zdCkpOworICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsTG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJ
bmZvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICB9CisK
KyAgICBjb25zdCBjaGFyKiBob3N0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hvc3QuZ2V0
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogbV9jZXJ0
aWZpY2F0ZUluZm87CisgICAgR093blB0cjxjaGFyPiBtX2hvc3Q7Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lf
RkFJTCk7CisKKyAgICAvLyBUaGUgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIHNpZ25hbCBz
aG91bGQgYmUgZW1pdHRlZCB3aGVuIHRoZXJlIGlzIGEgVExTIGZhaWx1cmUuCisgICAgdGVzdC0+
bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LXRscy8iKS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKCk7CisgICAgLy8g
VGVzdCB0aGUgV2ViS2l0Q2VydGlmaWNhdGVJbmZvIEFQSS4KKyAgICBnX2Fzc2VydChHX0lTX1RM
U19DRVJUSUZJQ0FURSh3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2NlcnRpZmljYXRl
KHRlc3QtPmNlcnRpZmljYXRlSW5mbygpKSkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnModGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkp
LCA9PSwgR19UTFNfQ0VSVElGSUNBVEVfVU5LTk9XTl9DQSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPmhvc3QoKSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGtIdHRwc1NlcnZlci0+YmFzZVVS
SSgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2Nt
cGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmlu
aXNoZWQpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhbiBleGNlcHRpb24gZm9yIHRoaXMgY2Vy
dGlmaWNhdGUgb24gdGhpcyBob3N0LgorICAgIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNf
Y2VydGlmaWNhdGVfZm9yX2hvc3QoY29udGV4dCwgdGVzdC0+Y2VydGlmaWNhdGVJbmZvKCksIHRl
c3QtPmhvc3QoKSk7CisgICAgLy8gVGhlIHBhZ2Ugc2hvdWxkIG5vdyBsb2FkIHdpdGhvdXQgZXJy
b3JzLgorICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVz
dC10bHMvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKwor
ICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tp
bmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVz
dC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7
CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
dmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFRMU0V4cGVjdGVkU3VjY2Vzc1Rp
dGxlKTsKK30KKworCiBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFi
bGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlmIChtZXNzYWdlLT5t
ZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CkBAIC0xNDgsNiArMjI5LDEwIEBAIHN0YXRpYyB2
b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIHJlc3BvbnNlSFRNTC5nZXQoKSwgc3Ry
bGVuKHJlc3BvbnNlSFRNTC5nZXQoKSkpOwogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Nv
bXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1
YWwocGF0aCwgIi90ZXN0LXRscy8iKSkgeworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIFRMU1N1Y2Nl
c3NIVE1MU3RyaW5nLCBzdHJsZW4oVExTU3VjY2Vzc0hUTUxTdHJpbmcpKTsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X05PVF9GT1VORCk7CiB9CkBAIC0xOTEsNyArMjc2LDExIEBAIHZvaWQgYmVmb3JlQWxsKCkKIAog
ICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0U1NMKTsKICAgICBJ
bnNlY3VyZUNvbnRlbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zZWN1cmUtY29udGVu
dCIsIHRlc3RJbnNlY3VyZUNvbnRlbnQpOwotICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29u
dGV4dCIsICJ0bHMtZXJyb3JzLXBvbGljeSIsIHRlc3RUTFNFcnJvcnNQb2xpY3kpOworICAgIC8v
IEluIHRoaXMgY2FzZSB0aGUgb3JkZXIgb2YgdGhlIHRlc3RzIGRvZXMgbWF0dGVyIGJlY2F1c2Ug
dGxzLWVycm9ycy1wb2xpY3kgdGVzdHMgdGhlIGRlZmF1bHQgcG9saWN5LAorICAgIC8vIGFuZCBl
eHBlY3RzIHRoYXQgbm8gZXhjZXB0aW9uIHdpbGwgaGF2ZSBiZWVuIGFkZGVkIGZvciB0aGlzIGNl
cnRpZmljYXRlIGFuZCBob3N0IHBhaXIgYXMgaXMKKyAgICAvLyBkb25lIGluIHRoZSB0bHMtcGVy
bWlzc2lvbi1yZXF1ZXN0IHRlc3QuCisgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgVExTRXJyb3Jz
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIs
IHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDcwZTNiNDMzMDU5
M2VmNmQwZmQ3ODhiYTJlOTMzMWY0MjBmODk3ODYuLjhkODIxOTkwMzk5OGQ5NWYzZTU5OWU4MTZk
MDljYzQ4NjA2NzU2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVu
dUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51SXRlbS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNo
YWwubGlzdCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFs
Lmxpc3QKaW5kZXggNDIwNzY2ZWE3ZjE1MzIzYWEyYmRlNzFkNjc0MTZmODRhYTRiNDBkYi4uZTFj
ZmUwNzIxNmQzOWIwZTk4ZDYwNDc3MWJlMDYyOTY1ZDI2ODdmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xLDQg
KzEsNSBAQAogQk9PTEVBTjpCT1hFRAorQk9PTEVBTjpCT1hFRCxTVFJJTkcKIEJPT0xFQU46RU5V
TSxTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULEJPWEVELE9C
SkVDVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDk1ZDNiYzdl
OGMyZTNjMmIyYjRmZjkzYWVhODk3ZmM1NjVkMjFmYTIuLmQwN2E1YzE1ODdjOGI2ZWFkNDVjMTVl
YjQyNDZhZjc0NzAzMTAyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTEwNzEsMTAgKzEwNzEsMTUgQEAgdm9pZCBXZWJDb250ZXh0OjphbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKgogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2Vsc2UKKyNpZiBVU0UoU09VUCkKKyAgICBtX3Byb2Nlc3Nlc1sw
XS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNlcnRpZmljYXRlLT5jZXJ0aWZpY2F0ZUluZm8oKSwgaG9zdCksIDApOworICAg
IHJldHVybjsKKyNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNlcnRpZmljYXRlKTsKICAgICBVTlVT
RURfUEFSQU0oaG9zdCk7CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIHdoZXRo
ZXIgd2Ugd2FudCB0aGlzIFNQSSB0byBiZSBleHBvc2VkIGFuZCB1c2VkIGZvciBjbGllbnRzIHRo
YXQgZG9uJ3QgdXNlIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyNlbmRpZgorCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggNDE2NWFiMThlOWZjZDA3ZmUzMmM0YzJkNmVkMjdjNGIxODhkYjdjNS4uODQ4YmMwNGYxM2Jk
NTM5NzQ2NWM3YWNiYmZkYWZiZTgwZTJjZGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJs
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MaW5rSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtMTYwLDYgKzE2MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUFjdGl2ZVBhZ2VzKCk7CiAKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykgJiYgVVNF
KFNPVVApCisgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU5YmNlNjM2MjY4MGM2YjI2
MTFjMGUzZTY3YTQ5OTViYmNkNDdiOGMuLjcxOGQ4ZmE3NzhlOTAxYWU4NWQxM2UyMTNkZmZhZDcy
MTE5ZGM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTgyLDQgKzgyLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCBmbGFnKTsKICNlbmRpZgorCisjaWYgIUVOQUJMRShORVRXT1JLX1BST0NF
U1MpICYmIFVTRShTT1VQKQorICAgIEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGUsIFdURjo6U3RyaW5nIGhvc3Qp
CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1NvdXAuY3BwCmluZGV4IGM3YmVhOTI4NjRmMWMyOGE3NjAwYzY1M2YwMTlmODY1YWNlN2Uy
OWQuLmQ2YmU1OGEyNDA3ZjVlNjk1YjFhMWU5ZjRkOWIwN2UxNmZkOGE4NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtMjA4
LDQgKzIwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NM
RXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKK3ZvaWQgV2ViUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0
KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBT
dHJpbmcmIGhvc3QpCit7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENl
cnRpZmljYXRlKGhvc3QsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKK30KKyNlbmRp
ZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214557</attachid>
            <date>2013-10-18 04:08:17 -0700</date>
            <delta_ts>2013-10-21 08:23:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-120160-20131018120826.patch</filename>
            <type>text/plain</type>
            <size>44769</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcwNTg4NWFjMmYxZjcz
ZjM0ZTU1NDAzNmI3Mjg5ZmZmZGQ3YzZhNS4uNzA0N2M1OWFkMDM5NTcwODUzN2FkYmZkZDQ0OWIw
YzdmYTYzMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEwLTE4ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJj
aWEgQ2FtcG9zLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBDZXJ0aWZp
Y2F0ZUluZm8gdW5kZXIgU291cC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2VydGlm
aWNhdGVJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRl
SW5mb1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZp
Y2F0ZUluZm8pOiBOZXcgY29uc3RydWN0b3IgdXNpbmcKKyAgICAgICAgR1Rsc0NlcnRpZmljYXRl
RmxhZ3MgYW5kIEdUbHNDZXJ0aWZpY2F0ZS4KKwogMjAxMy0xMC0xOCAgQnJlbmRhbiBMb25nICA8
Yi5sb25nQGNhYmxlbGFicy5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bR1RLXSBBZGQgR1Jl
ZlB0cjo6b3V0UHRyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZjhmMTQzNmNhYzhjODhkZGI5NjBmNGNkYTNi
M2I1NDE3MTk0MGU2Li40MWNkZmU2N2FmMzFiOTJlZjQ0ZWU4OGZjOTc0MGQ5NmQwMGI0MmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTMtMTAtMTggIEJyaWFuIEhvbHQgIDxicmlh
bi5ob2x0QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXQyIEFQSSBmb3Ig
VExTIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgQWRkIGEgbmV3IHNpZ25hbCBsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgdGhh
dCBpcyBlbWl0dGVkIHdpdGgKKyAgICAgICAgYSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gYm94ZWQg
dHlwZSB0byBhbGxvdyB1c2VycyB0byBkZWFsIHdpdGggVExTCisgICAgICAgIGVycm9ycy4gQSBu
ZXcgQVBJIGlzIGV4cG9zZWQgaW4gV2ViS2l0V2ViQ29udGV4dCB0byBhbGxvdworICAgICAgICBl
eGNlcHRpb25zIGZvciBUTFMgZXJyb3JzIG9uIGEgZ2l2ZW4gaG9zdC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcDogQWRkZWQuCisg
ICAgICAgICh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAg
ICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSk6CisgICAgICAgICh3ZWJraXRfY2VydGlm
aWNhdGVfaW5mb19mcmVlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90
bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rs
c19lcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRl
SW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZp
Y2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdENlcnRpZmljYXRlSW5m
bzo6X1dlYktpdENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KTogU3VwcG9ydCBUTFMKKyAgICAgICAgZXhjZXB0aW9u
cyBmb3IgYSBnaXZlbiBob3N0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogQWRkZWQgbmV3IHNpZ25h
bC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk6IEVtaXQg
bmV3IHNpZ25hbCB3aXRoCisgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBhbmQgaG9zdC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdExvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVm
b3JlQWxsKTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOiBTZW5kCisg
ICAgICAgIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyB0byBhbGxvdyBhIGNlcnRpZmljYXRlIGFuZCBo
b3N0IHBhaXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBOZXcgbWVzc2FnZSB0byB0ZWxsCisg
ICAgICAgIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBzcGVjaWZpYyBUTFMgY2VydGlmaWNhdGUgZm9y
IGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QpOiBBbGxvdworICAgICAgICBjZXJ0aWZpY2F0ZSBhbmQgaG9zdCBwYWly
LgorCiAyMDEzLTEwLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBQcm94eSBsYXllciBjb250ZW50cyB0byB0aGUg
VUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
ZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2VydGlm
aWNhdGVJbmZvLmgKaW5kZXggZWM5OTMwZTg3NjFkYjkxYjE5NDU4MDMwNDFiN2YyMjUwYTM1MzYy
Mi4uNDY3MzU1NWJiOWE2ZDFkYTBmNjJmZGRmMjE0ZmJmNmY2NDc1M2I0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NlcnRpZmljYXRlSW5mby5oCkBAIC00Myw2
ICs0Myw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBleHBsaWNpdCBDZXJ0
aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsKKyNlbGlmIFVTRShTT1VQ
KQorICAgIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2Vy
dGlmaWNhdGVGbGFncyk7CiAjZW5kaWYKIAogICAgIH5DZXJ0aWZpY2F0ZUluZm8oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm9Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZp
Y2F0ZUluZm9Tb3VwLmNwcAppbmRleCAxNjJhNzc4MWFkMWY3YzA0NDUxNmU4ZjhmMDViNjE2NjJj
ZGU1MjlkLi5lNWY0ZWNmMmFlYTc1MDZlNmZmYzg2YTMxNjlkZTE4MTA1NzQ1YjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZv
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRp
ZmljYXRlSW5mb1NvdXAuY3BwCkBAIC0zNCw2ICszNCwxMiBAQCBDZXJ0aWZpY2F0ZUluZm86OkNl
cnRpZmljYXRlSW5mbygpCiB7CiB9CiAKK0NlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZv
KEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycykKKyAgICA6IG1fY2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCisgICAgLCBtX3Rsc0Vycm9y
cyh0bHNFcnJvcnMpCit7Cit9CisKIENlcnRpZmljYXRlSW5mbzo6fkNlcnRpZmljYXRlSW5mbygp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1OTM1ZTMxZDdhNDlhZWE4
YmE3ZmU3OWE4MWNlM2QyMWRiOWE0ZGNlLi5hMmFhYThiYjFhNDQyNzJmMTgwOGI5ZDY3NjIyNDJk
ZDk1NzdiYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMSw2ICsxMDEs
NyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTY4MCw2ICs2ODEsOSBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5m
b1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQxZTU5
NzFmN2VmMDE4ZTBjOTY5M2ZiYTM0OTI4NjYxMzA2YTRhYmYuLmEyZWIwNTc1NDlhOWUyOTE3YTk2
MjNkZDA4MzA1MDljNzZiMTdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw2
ICs4Niw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRl
SW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTI4NSw2ICsyODgsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJLaXQyX0lOU1RBTExFRF9IRUFERVJTCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExp
c3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMmRmMWFhY2E4MDI1NzlmYjg1YTYzZDBmMDFhNWY2OTAxNWYwYjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mby5oIgorCisjaW5jbHVkZSAiV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdENlcnRpZmljYXRlSW5mbworICogQFNob3J0X2Rlc2Ny
aXB0aW9uOiBCb3hlZCB0eXBlIHRvIGVuY2Fwc3VsYXRlIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvcm1h
dGlvbgorICogQFRpdGxlOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBTZWVfYWxzbzogI1dl
YktpdFdlYlZpZXcsICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogV2hlbiBhIGNsaWVudCBsb2Fk
cyBhIHBhZ2Ugb3ZlciBIVFRQUyB3aGVyZSB0aGVyZSBpcyBhbiB1bmRlcmx5aW5nIFRMUyBlcnJv
cgorICogV2ViS2l0IHdpbGwgZmlyZSBhICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZC13aXRo
LXRscy1lcnJvcnMgc2lnbmFsIHdpdGggYQorICogI1dlYktpdENlcnRpZmljYXRlSW5mbyBhbmQg
dGhlIGhvc3Qgb2YgdGhlIGZhaWxpbmcgVVJJLgorICoKKyAqIFRvIGhhbmRsZSB0aGlzIHNpZ25h
bCBhc3luY2hyb25vdXNseSB5b3Ugc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHRoZQorICogI1dlYktp
dENlcnRpZmljYXRlSW5mbyB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKS4KKyAq
LworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENlcnRpZmljYXRlSW5mbywgd2Via2l0X2Nl
cnRpZmljYXRlX2luZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHksIHdlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2ZyZWUpCisKK2NvbnN0IENlcnRpZmljYXRlSW5mbyYgd2Via2l0Q2VydGlm
aWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykK
K3sKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmljYXRlSW5mbzsK
K30KKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5OgorICogQGluZm86IGEg
I1dlYktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIE1ha2UgYSBjb3B5IG9mIHRoZSAjV2ViS2l0
Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBjb3B5
IG9mIHBhc3NlZCBpbiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFNpbmNlOiAyLjQK
KyAqLworV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5
KFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChpbmZvLCAwKTsKKworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogY29weSA9IGdfc2xpY2Vf
bmV3MChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8pOworICAgIG5ldyAoY29weSkgV2ViS2l0Q2VydGlm
aWNhdGVJbmZvKGluZm8pOworICAgIHJldHVybiBjb3B5OworfQorCisvKioKKyAqIHdlYmtpdF9j
ZXJ0aWZpY2F0ZV9pbmZvX2ZyZWU6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZv
CisgKgorICogRnJlZSB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBTaW5jZTog
Mi40CisgKi8KK3ZvaWQgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKworICAgIGlu
Zm8tPn5XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLCBpbmZvKTsKK30KKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19nZXRfdGxzX2NlcnRpZmljYXRlOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5m
bworICoKKyAqIEdldCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZSBhc3NvY2lhdGVkIHdpdGggdGhpcwor
ICogI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6IFRoZSBjZXJ0aWZpY2F0ZSBvZiBAaW5mby4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dU
bHNDZXJ0aWZpY2F0ZSogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0
ZShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaW5mbywgMCk7CisKKyAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvLmNlcnRpZmlj
YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJv
cnM6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogR2V0IHRoZSAj
R1Rsc0NlcnRpZmljYXRlRmxhZ3MgdmVyaWZpY2F0aW9uIHN0YXR1cyBhc3NvY2lhdGVkIHdpdGgg
dGhpcworICogI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiBUaGUgdmVy
aWZpY2F0aW9uIHN0YXR1cyBvZiBAaW5mby4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzKFdl
YktpdENlcnRpZmljYXRlSW5mbyAqaW5mbykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmZvLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpOworCisgICAgcmV0dXJu
IGluZm8tPmNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWVmMTY0MDVlODNjZjYxMmIzYWJlMDNmYTY2YTYxZDVhY2IzOGZlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mby5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAorI2RlZmluZSBX
ZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPICh3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
Q2VydGlmaWNhdGVJbmZvIFdlYktpdENlcnRpZmljYXRlSW5mbzsKKworV0VCS0lUX0FQSSBHVHlw
ZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUgICAgICAgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2NvcHkgICAgICAgICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSAgICAgICAgICAg
ICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSBHVGxzQ2Vy
dGlmaWNhdGUgKgord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZSAo
V2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNh
dGVGbGFncword2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMgICAgICAoV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0
ZUluZm9Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM1Y2EyN2QxM2Q2ODAzOTkwNTA2
NjRkNjZmMTJiMGYyMzhmZTczMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdENlcnRpZmljYXRlSW5mb1ByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKKworI2luY2x1ZGUg
IkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mby5oIgor
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworc3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8geworICAgIF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQorICAgICAgICA6IGNlcnRpZmlj
YXRlSW5mbyhjZXJ0aWZpY2F0ZSwgdGxzRXJyb3JzKQorICAgIHsKKyAgICB9CisKKyAgICBfV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKKyAgICAgICAg
OiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2VydGlmaWNhdGVJbmZvKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOworfTsKKworY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0
aWZpY2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKik7CisKKyNlbmRpZiAvLyBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZDJjOGJiZGY5YjU0NGNlYjQ1
MjE4ZjAzZTkzNmU3MjU0MGNmN2Q1ZS4uMjJmNGU1NDkwYWFmM2VlZTQ4ZTIxNGMxYjhkM2I0MzA2
NTZkMDBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDggKzIwLDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiV2ViQ2VydGlm
aWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm9Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERv
d25sb2FkUHJpdmF0ZS5oIgpAQCAtODA3LDYgKzgwOSwyNCBAQCB2b2lkIHdlYmtpdF93ZWJfY29u
dGV4dF9wcmVmZXRjaF9kbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
aG9zdAogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShTdHJpbmc6OmZyb21VVEY4KCJQcmVmZXRjaEROUyIpLCBJbW11dGFibGVEaWN0aW9uYXJ5
OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0
X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdDoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRX
ZWJDb250ZXh0CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKiBAaG9zdDog
dGhlIGhvc3QgZm9yIHdoaWNoIGEgY2VydGlmaWNhdGUgaXMgdG8gYmUgYWxsb3dlZAorICoKKyAq
IElnbm9yZSBmdXJ0aGVyIFRMUyBlcnJvcnMgb24gdGhlIEBob3N0IGZvciB0aGUgY2VydGlmaWNh
dGUgcHJlc2VudCBpbiBAaW5mby4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgZ2NoYXIqIGhvc3QpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoaW5mbyk7CisgICAgZ19yZXR1cm5faWZfZmFpbChob3N0KTsKKworICAgIFJlZlB0
cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRl
SW5mbzo6Y3JlYXRlKHdlYmtpdENlcnRpZmljYXRlSW5mb0dldENlcnRpZmljYXRlSW5mbyhpbmZv
KSk7CisgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOCho
b3N0KSk7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVE
b3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5oCmluZGV4IGRkMzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2YWYuLjll
N2JjMTQ0NzZkYjAyMjNhNzhiY2RmNzM4YzJmNjBiOTA2NTNkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI1LDYg
KzI1LDcgQEAKICNkZWZpbmUgV2ViS2l0V2ViQ29udGV4dF9oCiAKICNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgpAQCAt
NjQsNyArNjUsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIC8qKgogICogV2ViS2l0VExTRXJyb3JzUG9s
aWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJy
b3JzLgotICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIG1ha2Ug
dGhlIGxvYWQgdG8gZmluaXNoIHdpdGggYW4gZXJyb3IuCisgKiBAV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgd2lsbCBlbWl0CisgKiAgICNXZWJLaXRXZWJWaWV3Ojps
b2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgYW5kLCBpZiB0aGUgc2lnbmFsIGlzIGhhbmRsZWQs
CisgKiAgIGZpbmlzaCB0aGUgbG9hZC4gSW4gY2FzZSB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVk
LAorICogICAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgaXMgZW1pdHRlZCBiZWZvcmUgdGhl
IGxvYWQgZmluaXNoZXMuCiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIFRM
UyBlcnJvcnMgcG9saWN5LgogICovCkBAIC0xOTksNiArMjAzLDExIEBAIFdFQktJVF9BUEkgdm9p
ZAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChX
ZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICAgICAgKmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAg
ICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IDkwMjAxMmZkMjFjMTY3MGMwMDE5OTE5ZGRjMDJmMzgyYWMyMjI1YjYuLjVhNzY3
ZWUwYjEzZDc2YzAxNDE4NWQ2ZTA3OTQ3MGE0YzlhNTZkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNsdWRlICJX
ZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFj
a0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0
TWVudVByaXZhdGUuaCIKQEAgLTg5LDYgKzkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBlbnVtIHsKICAgICBMT0FEX0NIQU5HRUQsCiAgICAgTE9BRF9GQUlMRUQsCisgICAgTE9BRF9G
QUlMRURfV0lUSF9UTFNfRVJST1JTLAogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1cs
CkBAIC04NDcsNiArODQ5LDM5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX1BPSU5URVIpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bG9h
ZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBpbmZvOiBhICNX
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAgICAgKiBAaG9zdDogdGhlIGhvc3Qgb24gd2hpY2ggdGhl
IGVycm9yIG9jY3VycmVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYSBUTFMgZXJyb3Ig
b2NjdXJzIGR1cmluZyBhIGxvYWQgb3BlcmF0aW9uLiBUaGUgQGluZm8KKyAgICAgKiBvYmplY3Qg
Y29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yIHN1Y2ggYXMgdGhlICNHVGxzQ2Vy
dGlmaWNhdGUKKyAgICAgKiBhbmQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncy4gVG8gYWxsb3cg
YW4gZXhjZXB0aW9uIGZvciB0aGlzIGNlcnRpZmljYXRlCisgICAgICogYW5kIHRoaXMgaG9zdCB1
c2Ugd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpLgor
ICAgICAqCisgICAgICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBz
aG91bGQgY29weSB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mbworICAgICAqIHdpdGggd2Via2l0
X2NlcnRpZmljYXRlX2luZm9fY29weSgpIGFuZCByZXR1cm4gJVRSVUUgaW4gd2hpY2ggY2FzZSB0
aGUgbG9hZAorICAgICAqIHdpbGwgZmluaXNoLiBJZiAlRkFMU0UgaXMgcmV0dXJuZWQsICNsb2Fk
LWZhaWxlZCBpcyBlbWl0dGVkIGFuZCBhbmQgdGhlCisgICAgICogdGhlbiBsb2FkIHdpbGwgZmlu
aXNoLgorICAgICAqCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVy
IGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgJUZB
TFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgKgorICAgICAqIFNpbmNl
OiAyLjQKKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10g
PQorICAgICAgICBnX3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsCisg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
R19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpLAorICAgICAgICAgICAgZ19z
aWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8s
CisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19CT1hFRF9TVFJJTkcsCisgICAg
ICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAg
ICAgICAgICAgIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gIHwgR19TSUdOQUxfVFlQRV9T
VEFUSUNfU0NPUEUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKKworICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0
V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpAQCAtMTUwOSwx
NSArMTU0NCwxOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsCiAgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsK
IH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICplcnJvciwgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRl
KQordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgR1Rsc0Nl
cnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQog
ewogICAgIHdlYmtpdFdlYlZpZXdTZXRJc0xvYWRpbmcod2ViVmlldywgZmFsc2UpOwogICAgIHdl
YmtpdFdlYlZpZXdDYW5jZWxBdXRoZW50aWNhdGlvblJlcXVlc3Qod2ViVmlldyk7CiAKICAgICBX
ZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Via2l0X3dlYl9jb250ZXh0
X2dldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICBpZiAo
dGxzRXJyb3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKSB7Ci0gICAg
ICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKHdlYlZpZXcsIFdFQktJVF9MT0FEX1NUQVJURUQs
IGZhaWxpbmdVUkksIGVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBHT3duUHRyPFNv
dXBVUkk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsKKyAgICAgICAgV2ViS2l0
Q2VydGlmaWNhdGVJbmZvIGluZm8oY2VydGlmaWNhdGUsIHRsc0Vycm9ycyk7CisgICAgICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25h
bHNbTE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTXSwgMCwgJmluZm8sIHNvdXBVUkktPmhvc3Qs
ICZyZXR1cm5WYWx1ZSk7CisgICAgICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgICAgICBn
X3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURdLCAwLCBXRUJLSVRfTE9B
RF9TVEFSVEVELCBmYWlsaW5nVVJJLCBlcnJvciwgJnJldHVyblZhbHVlKTsKICAgICB9CiAKICAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lU
X0xPQURfRklOSVNIRUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCmluZGV4IGE0ZDZlNDM5ZWNhNzI2ZTkwNjM3NjEzMjE2YTUxNDc3ZWI3
YWU5N2QuLjZlNDM0YjVmNGIxYWYyYzc3OGI4MjZlMjliNzYyZjliZWJkYzZiZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIw
MCw1OCArMjAwLDYwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7CiAKLSAgICB2
b2lkICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7Ci0g
ICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVycm9y
KTsKLQotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcmVh
ZHlfdG9fc2hvdykgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCog
Y2xvc2UpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAg
ICAgKmRpYWxvZykgIDsKLQotICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24g
ICAgICAgICpkZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgIHR5cGUpOwotICAgIGdib29sZWFu
ICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOwot
ICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9y
ZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp
bnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotICAgIGdib29sZWFuICAgKCog
cHJpbnQpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9vcGVyYXRpb24pOwotICAgIHZvaWQg
ICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAg
ICAgICAgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdi
b29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3Nl
cikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRN
ZW51ICAgICAgICAgICAqY29udGV4dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVz
dFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQpOwotICAgIHZvaWQgICAgICAgKCogY29u
dGV4dF9tZW51X2Rpc21pc3NlZCkgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0ICpy
ZXF1ZXN0KTsKLSAgICB2b2lkICAgICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWQpIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAg
ZXZlbnQpOwotICAgIGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAo
KiBhdXRoZW50aWNhdGUpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAg
KCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7CisgICAgZ2Jv
b2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJy
b3IpOworCisgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgq
IHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAg
ICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgKCogc2NyaXB0X2RpYWxvZykg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlw
dERpYWxvZyAgICAgICAgICAqZGlhbG9nKSAgOworCisgICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVf
cG9saWN5KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAgICAg
dHlwZSk7CisgICAgZ2Jvb2xlYW4gICAoKiBwZXJtaXNzaW9uX3JlcXVlc3QpICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAg
ICpwZXJtaXNzaW9uX3JlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2No
YW5nZWQpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllcnMpOworICAgIGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFByaW50T3BlcmF0aW9uICAg
ICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKKyAgICB2b2lkICAgICAgICgqIHJlc291cmNlX2xvYWRf
c3RhcnRlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJS
ZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICpyZXF1ZXN0
KTsKKyAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogbGVh
dmVfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0
ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAg
ICAgICAgICAgKmNvbnRleHRfbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0
UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCk7CisgICAgdm9pZCAgICAgICAoKiBjb250
ZXh0X21lbnVfZGlzbWlzc2VkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3JtKSAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVl
c3QgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9kZXRlY3Rl
ZCkgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVu
dEV2ZW50ICAgZXZlbnQpOworICAgIGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKKyAgICBn
Ym9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOwor
ICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAqaW5mbywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqaG9zdCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQw
KSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiAgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQzKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7CiAgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQ2KSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRl
eCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi5mZDBhZWQyMTBhNDdj
YWExOTcyZDFjMzYyMWRhZDZjNzZmZmEzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTMzLDcgKzMz
LDcgQEAKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwot
dm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyos
IGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2VydGlmaWNhdGVGbGFncywg
R1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiwgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3
U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBkb3VibGUgZXN0aW1hdGVk
TG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktpdFdlYlZpZXcq
LCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0V2Vi
VmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEwNDEyNjgyZTg3ZjRmN2M5MzE5
YWNmMzRjZDUwMmVlMTM2NC4uZTNjZjlhNjhjNmIzOWQxNzlhZGE1NTljYWE0OGRhZmMxMWFmNWMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2ICs0Myw3IEBACiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLnhtbCIvPgogICAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3R3JvdXAueG1sIi8+CisgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdENlcnRpZmljYXRlSW5mby54bWwiLz4KICAgPC9jaGFwdGVyPgog
CiAgIDxjaGFwdGVyPgpAQCAtNjEsNiArNjIsMTEgQEAKICAgICA8dGl0bGU+SW5kZXggb2YgbmV3
IHN5bWJvbHMgaW4gMi4yPC90aXRsZT4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWlu
ZGV4LTIuMi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAgPC9pbmRleD4gIAot
ICAKKworICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTQiIHJvbGU9IjIuNCI+CisgICAgPHRpdGxl
PkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuNDwvdGl0bGU+CisgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL2FwaS1pbmRleC0yLjQueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+Cisg
IDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90YXRpb24tZ2xvc3Nhcnku
eG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dAppbmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMyMmUzOTk5NzgzY2RiZTM4
Li44MDU3NjNiMWYyNDM4MjQ0ZGQzMmIyZjBlODQ3ZjY5Mzk3NTU2MDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQKQEAgLTQ4LDYgKzQ4LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2dldF90
bHNfZXJyb3JzX3BvbGljeQogd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19k
aXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJfY29udGV4dF9hbGxvd190
bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktp
dFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMTA5NywzICsxMDk4LDE4IEBAIFdFQktJVF9T
Q1JJUFRfV09STERfR0VUX0NMQVNTCiBXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUKIHdlYmtpdF9z
Y3JpcHRfd29ybGRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJL
aXRDZXJ0aWZpY2F0ZUluZm88L0ZJTEU+CitXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KK3dlYmtpdF9j
ZXJ0aWZpY2F0ZV9pbmZvX2NvcHkKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUKK3dlYmtp
dF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUKK3dlYmtpdF9jZXJ0aWZpY2F0
ZV9pbmZvX2dldF90bHNfZXJyb3JzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZ
UEVfQ0VSVElGSUNBVEVfSU5GTworCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X2NlcnRp
ZmljYXRlX2luZm9fZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwppbmRleCA1YjFlYTNj
MWZkZTQ2ZDNmMTY3Y2Y3MDEzMjNmOGZjMDA4NDBmMjllLi40YjU4M2JhZDliMGE3YTZiYTEwMmY3
MzIyZTRjNzA3YWY2NWM5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yNywzICsyNyw0IEBAIHdlYmtp
dF93ZWJfcGFnZV9nZXRfdHlwZQogd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3R5
cGUKIHdlYmtpdF9jcmVkZW50aWFsX2dldF90eXBlCiB3ZWJraXRfZnJhbWVfZ2V0X3R5cGUKK3dl
YmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCmluZGV4IGRiNmNjYzg1MjJkMTUxY2I5
YzQ5NWQ5ZDQzZjNlOTZmNjUyNTJhNmUuLmUzMTgwYzViYzhjOTI0ODdiYzEzNGExNjRiYmQ0ZGYy
YjgyYjdhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RTU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RTU0wuY3BwCkBAIC0yOCw2ICsyOCw4IEBAIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVy
KiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4SFRNTCA9ICI8aHRtbD48
Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0bWxsPiI7CiBzdGF0aWMgY29u
c3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48c2NyaXB0IHNyYz1cIiVzXCI+
PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3JjPVwiJXNcIiBhbGlnbj1cInJp
Z2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhciBUTFNFeHBlY3Rl
ZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3QiOworc3Rh
dGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9ICI8aHRtbD48aGVhZD48dGl0
bGU+V2ViS2l0Mkd0aysgVExTIHBlcm1pc3Npb24gdGVzdDwvdGl0bGU+PC9oZWFkPjxib2R5Pjwv
Ym9keT48L2h0bWw+IjsKIAogY2xhc3MgU1NMVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3Qg
ewogcHVibGljOgpAQCAtMTMyLDYgKzEzNCw4NSBAQCBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3Jz
UG9saWN5KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3Qt
Pm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7
CiB9CiAKK2NsYXNzIFRMU0Vycm9yc1Rlc3Q6IHB1YmxpYyBTU0xUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFRMU0Vycm9yc1Rlc3QpOworCisgICAgVExTRXJyb3Jz
VGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQt
ZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsIEdfQ0FMTEJBQ0socnVuTG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnNDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIH5UTFNFcnJvcnNUZXN0KCkKKyAg
ICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZp
ZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAgICBpZiAo
bV9jZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19m
cmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVu
TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKiBpbmZvLCBjb25zdCBjaGFyKiBob3N0LCBUTFNFcnJvcnNUZXN0KiB0ZXN0
KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoaW5mbywg
aG9zdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHZvaWQgcnVuTG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvLCBjb25zdCBjaGFy
KiBob3N0KQorICAgIHsKKyAgICAgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQorICAgICAgICAg
ICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShtX2NlcnRpZmljYXRlSW5mbyk7CisgICAg
ICAgIG1fY2VydGlmaWNhdGVJbmZvID0gd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weShpbmZv
KTsKKyAgICAgICAgbV9ob3N0LnNldChnX3N0cmR1cChob3N0KSk7CisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmFp
bGVkV2l0aFRMU0Vycm9ycygpCisgICAgeworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisgICAgfQorCisgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUlu
Zm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOworICAgIH0KKwor
ICAgIGNvbnN0IGNoYXIqIGhvc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faG9zdC5nZXQo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBtX2NlcnRp
ZmljYXRlSW5mbzsKKyAgICBHT3duUHRyPGNoYXI+IG1faG9zdDsKK307CisKK3N0YXRpYyB2b2lk
IHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQoreworICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9G
QUlMKTsKKworICAgIC8vIFRoZSBsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgc2lnbmFsIHNo
b3VsZCBiZSBlbWl0dGVkIHdoZW4gdGhlcmUgaXMgYSBUTFMgZmFpbHVyZS4KKyAgICB0ZXN0LT5s
b2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7
CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoKTsKKyAgICAvLyBU
ZXN0IHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gQVBJLgorICAgIGdfYXNzZXJ0KEdfSVNfVExT
X0NFUlRJRklDQVRFKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUo
dGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkpKSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyh0ZXN0LT5jZXJ0aWZpY2F0ZUluZm8oKSks
ID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
dGVzdC0+aG9zdCgpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBzU2VydmVyLT5iYXNlVVJJ
KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21w
aW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5p
c2hlZCk7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGFuIGV4Y2VwdGlvbiBmb3IgdGhpcyBjZXJ0
aWZpY2F0ZSBvbiB0aGlzIGhvc3QuCisgICAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19j
ZXJ0aWZpY2F0ZV9mb3JfaG9zdChjb250ZXh0LCB0ZXN0LT5jZXJ0aWZpY2F0ZUluZm8oKSwgdGVz
dC0+aG9zdCgpKTsKKyAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxvYWQgd2l0aG91dCBlcnJv
cnMuCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0
LXRscy8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisg
ICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRUcmFja2lu
Z1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0
LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNr
aW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92
aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgVExTRXhwZWN0ZWRTdWNjZXNzVGl0
bGUpOworfQorCisKIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJs
ZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1l
dGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTE0OCw2ICsyMjksMTAgQEAgc3RhdGljIHZv
aWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+
cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJs
ZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29t
cGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChwYXRoLCAiL3Rlc3QtdGxzLyIpKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBw
ZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgVExTU3VjY2Vz
c0hUTUxTdHJpbmcsIHN0cmxlbihUTFNTdWNjZXNzSFRNTFN0cmluZykpOworICAgICAgICBzb3Vw
X21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKICAgICB9IGVs
c2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
Tk9UX0ZPVU5EKTsKIH0KQEAgLTE5MSw3ICsyNzYsMTEgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAg
ICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRlc3RTU0wpOwogICAgIElu
c2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnNlY3VyZS1jb250ZW50
IiwgdGVzdEluc2VjdXJlQ29udGVudCk7Ci0gICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250
ZXh0IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7CisgICAgLy8g
SW4gdGhpcyBjYXNlIHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgZG9lcyBtYXR0ZXIgYmVjYXVzZSB0
bHMtZXJyb3JzLXBvbGljeSB0ZXN0cyB0aGUgZGVmYXVsdCBwb2xpY3ksCisgICAgLy8gYW5kIGV4
cGVjdHMgdGhhdCBubyBleGNlcHRpb24gd2lsbCBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoaXMgY2Vy
dGlmaWNhdGUgYW5kIGhvc3QgcGFpciBhcyBpcworICAgIC8vIGRvbmUgaW4gdGhlIHRscy1wZXJt
aXNzaW9uLXJlcXVlc3QgdGVzdC4KKyAgICBTU0xUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
dGxzLWVycm9ycy1wb2xpY3kiLCB0ZXN0VExTRXJyb3JzUG9saWN5KTsKKyAgICBUTFNFcnJvcnNU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIiwg
dGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggNzBlM2I0MzMwNTkz
ZWY2ZDBmZDc4OGJhMmU5MzMxZjQyMGY4OTc4Ni4uOGQ4MjE5OTAzOTk4ZDk1ZjNlNTk5ZTgxNmQw
OWNjNDg2MDY3NTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXV0aGVudGlj
YXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51
QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hh
bC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwu
bGlzdAppbmRleCA0MjA3NjZlYTdmMTUzMjNhYTJiZGU3MWQ2NzQxNmY4NGFhNGI0MGRiLi5lMWNm
ZTA3MjE2ZDM5YjBlOThkNjA0NzcxYmUwNjI5NjVkMjY4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAgLTEsNCAr
MSw1IEBACiBCT09MRUFOOkJPWEVECitCT09MRUFOOkJPWEVELFNUUklORwogQk9PTEVBTjpFTlVN
LFNUUklORyxQT0lOVEVSCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsQk9YRUQsT0JK
RUNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMTc2MjZmY2Yz
Njk4NGE5MjE0MjA4YTFmOGYxNjRiMmM5MzAyZjI2NS4uZmUzNDQ4NWRhNTg2ODEyM2NiZmE2Yjcz
ZmEwY2IyNmM3YmJiYzM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtMTA4OSwxMCArMTA4OSwxNSBAQCB2b2lkIFdlYkNvbnRleHQ6OmFsbG93U3BlY2lmaWNI
VFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZWxzZQorI2lmIFVTRShTT1VQKQorICAgIG1fcHJvY2Vzc2VzWzBd
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CisgICAg
cmV0dXJuOworI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwogICAgIFVOVVNF
RF9QQVJBTShob3N0KTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgd2hldGhl
ciB3ZSB3YW50IHRoaXMgU1BJIHRvIGJlIGV4cG9zZWQgYW5kIHVzZWQgZm9yIGNsaWVudHMgdGhh
dCBkb24ndCB1c2UgdGhlIE5ldHdvcmtQcm9jZXNzLgorI2VuZGlmCisKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCAyN2Y4YjRjNDljNTQ3OGEzMzIxZjEyODZjZmY4MGIzMGFhMGE1ZmVkLi43MTFiNDA0ZWM4ZmRk
NmUwNTkxOGYxMjQxOTM5YWQyMjhlMDk4YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC0xNjksNiArMTcwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlQWN0aXZlUGFnZXMoKTsKIAorI2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNTKSAmJiBVU0Uo
U09VUCkKKyAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTliY2U2MzYyNjgwYzZiMjYx
MWMwZTNlNjdhNDk5NWJiY2Q0N2I4Yy4uNzE4ZDhmYTc3OGU5MDFhZTg1ZDEzZTIxM2RmZmFkNzIx
MTlkYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtODIsNCArODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChib29sIGZsYWcpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykgJiYgVVNFKFNPVVApCisgICAgQWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0
KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSwgV1RGOjpTdHJpbmcgaG9zdCkK
KyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzU291cC5jcHAKaW5kZXggYzdiZWE5Mjg2NGYxYzI4YTc2MDBjNjUzZjAxOWY4NjVhY2U3ZTI5
ZC4uZDZiZTU4YTI0MDdmNWU2OTViMWExZTlmNGQ5YjA3ZTE2ZmQ4YTg0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBAIC0yMDgs
NCArMjA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdu
b3JlVExTRXJyb3JzKQogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xF
cnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAorI2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQordm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0
cmluZyYgaG9zdCkKK3sKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2Vy
dGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOworfQorI2VuZGlm
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214720</attachid>
            <date>2013-10-21 02:50:16 -0700</date>
            <delta_ts>2013-10-23 01:56:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-120160-20131021105027.patch</filename>
            <type>text/plain</type>
            <size>44775</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcwNTg4NWFjMmYxZjcz
ZjM0ZTU1NDAzNmI3Mjg5ZmZmZGQ3YzZhNS4uNzA0N2M1OWFkMDM5NTcwODUzN2FkYmZkZDQ0OWIw
YzdmYTYzMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEwLTE4ICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJj
aWEgQ2FtcG9zLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBDZXJ0aWZp
Y2F0ZUluZm8gdW5kZXIgU291cC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2VydGlm
aWNhdGVJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRl
SW5mb1NvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZp
Y2F0ZUluZm8pOiBOZXcgY29uc3RydWN0b3IgdXNpbmcKKyAgICAgICAgR1Rsc0NlcnRpZmljYXRl
RmxhZ3MgYW5kIEdUbHNDZXJ0aWZpY2F0ZS4KKwogMjAxMy0xMC0xOCAgQnJlbmRhbiBMb25nICA8
Yi5sb25nQGNhYmxlbGFicy5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bR1RLXSBBZGQgR1Jl
ZlB0cjo6b3V0UHRyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZjhmMTQzNmNhYzhjODhkZGI5NjBmNGNkYTNi
M2I1NDE3MTk0MGU2Li40MWNkZmU2N2FmMzFiOTJlZjQ0ZWU4OGZjOTc0MGQ5NmQwMGI0MmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTMtMTAtMTggIEJyaWFuIEhvbHQgIDxicmlh
bi5ob2x0QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXQyIEFQSSBmb3Ig
VExTIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgQWRkIGEgbmV3IHNpZ25hbCBsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgdGhh
dCBpcyBlbWl0dGVkIHdpdGgKKyAgICAgICAgYSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gYm94ZWQg
dHlwZSB0byBhbGxvdyB1c2VycyB0byBkZWFsIHdpdGggVExTCisgICAgICAgIGVycm9ycy4gQSBu
ZXcgQVBJIGlzIGV4cG9zZWQgaW4gV2ViS2l0V2ViQ29udGV4dCB0byBhbGxvdworICAgICAgICBl
eGNlcHRpb25zIGZvciBUTFMgZXJyb3JzIG9uIGEgZ2l2ZW4gaG9zdC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcDogQWRkZWQuCisg
ICAgICAgICh3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAg
ICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29weSk6CisgICAgICAgICh3ZWJraXRfY2VydGlm
aWNhdGVfaW5mb19mcmVlKToKKyAgICAgICAgKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90
bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAod2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rs
c19lcnJvcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRl
SW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZp
Y2F0ZUluZm9Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdENlcnRpZmljYXRlSW5m
bzo6X1dlYktpdENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KTogU3VwcG9ydCBUTFMKKyAgICAgICAgZXhjZXB0aW9u
cyBmb3IgYSBnaXZlbiBob3N0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogQWRkZWQgbmV3IHNpZ25h
bC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyk6IEVtaXQg
bmV3IHNpZ25hbCB3aXRoCisgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBhbmQgaG9zdC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdExvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVm
b3JlQWxsKTogQWRkZWQgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOiBTZW5kCisg
ICAgICAgIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyB0byBhbGxvdyBhIGNlcnRpZmljYXRlIGFuZCBo
b3N0IHBhaXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBOZXcgbWVzc2FnZSB0byB0ZWxsCisg
ICAgICAgIFdlYlByb2Nlc3MgdG8gYWxsb3cgYSBzcGVjaWZpYyBUTFMgY2VydGlmaWNhdGUgZm9y
IGEgZ2l2ZW4gaG9zdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QpOiBBbGxvdworICAgICAgICBjZXJ0aWZpY2F0ZSBhbmQgaG9zdCBwYWly
LgorCiAyMDEzLTEwLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBQcm94eSBsYXllciBjb250ZW50cyB0byB0aGUg
VUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
ZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2VydGlm
aWNhdGVJbmZvLmgKaW5kZXggZWM5OTMwZTg3NjFkYjkxYjE5NDU4MDMwNDFiN2YyMjUwYTM1MzYy
Mi4uNDY3MzU1NWJiOWE2ZDFkYTBmNjJmZGRmMjE0ZmJmNmY2NDc1M2I0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NlcnRpZmljYXRlSW5mby5oCkBAIC00Myw2
ICs0Myw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBleHBsaWNpdCBDZXJ0
aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsKKyNlbGlmIFVTRShTT1VQ
KQorICAgIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2Vy
dGlmaWNhdGVGbGFncyk7CiAjZW5kaWYKIAogICAgIH5DZXJ0aWZpY2F0ZUluZm8oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm9Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZp
Y2F0ZUluZm9Tb3VwLmNwcAppbmRleCAxNjJhNzc4MWFkMWY3YzA0NDUxNmU4ZjhmMDViNjE2NjJj
ZGU1MjlkLi5lNWY0ZWNmMmFlYTc1MDZlNmZmYzg2YTMxNjlkZTE4MTA1NzQ1YjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZv
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRp
ZmljYXRlSW5mb1NvdXAuY3BwCkBAIC0zNCw2ICszNCwxMiBAQCBDZXJ0aWZpY2F0ZUluZm86OkNl
cnRpZmljYXRlSW5mbygpCiB7CiB9CiAKK0NlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZv
KEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycykKKyAgICA6IG1fY2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCisgICAgLCBtX3Rsc0Vycm9y
cyh0bHNFcnJvcnMpCit7Cit9CisKIENlcnRpZmljYXRlSW5mbzo6fkNlcnRpZmljYXRlSW5mbygp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1OTM1ZTMxZDdhNDlhZWE4
YmE3ZmU3OWE4MWNlM2QyMWRiOWE0ZGNlLi5hMmFhYThiYjFhNDQyNzJmMTgwOGI5ZDY3NjIyNDJk
ZDk1NzdiYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMSw2ICsxMDEs
NyBAQCB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTY4MCw2ICs2ODEsOSBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5m
b1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQxZTU5
NzFmN2VmMDE4ZTBjOTY5M2ZiYTM0OTI4NjYxMzA2YTRhYmYuLmEyZWIwNTc1NDlhOWUyOTE3YTk2
MjNkZDA4MzA1MDljNzZiMTdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw2
ICs4Niw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRl
SW5mby5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0
ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTI4NSw2ICsyODgsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKIHNldChXZWJLaXQyX0lOU1RBTExFRF9IRUFERVJTCiAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExp
c3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMmRmMWFhY2E4MDI1NzlmYjg1YTYzZDBmMDFhNWY2OTAxNWYwYjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mby5oIgorCisjaW5jbHVkZSAiV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdENlcnRpZmljYXRlSW5mbworICogQFNob3J0X2Rlc2Ny
aXB0aW9uOiBCb3hlZCB0eXBlIHRvIGVuY2Fwc3VsYXRlIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvcm1h
dGlvbgorICogQFRpdGxlOiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAqIEBTZWVfYWxzbzogI1dl
YktpdFdlYlZpZXcsICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogV2hlbiBhIGNsaWVudCBsb2Fk
cyBhIHBhZ2Ugb3ZlciBIVFRQUyB3aGVyZSB0aGVyZSBpcyBhbiB1bmRlcmx5aW5nIFRMUyBlcnJv
cgorICogV2ViS2l0IHdpbGwgZmlyZSBhICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZC13aXRo
LXRscy1lcnJvcnMgc2lnbmFsIHdpdGggYQorICogI1dlYktpdENlcnRpZmljYXRlSW5mbyBhbmQg
dGhlIGhvc3Qgb2YgdGhlIGZhaWxpbmcgVVJJLgorICoKKyAqIFRvIGhhbmRsZSB0aGlzIHNpZ25h
bCBhc3luY2hyb25vdXNseSB5b3Ugc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHRoZQorICogI1dlYktp
dENlcnRpZmljYXRlSW5mbyB3aXRoIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkoKS4KKyAq
LworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENlcnRpZmljYXRlSW5mbywgd2Via2l0X2Nl
cnRpZmljYXRlX2luZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHksIHdlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2ZyZWUpCisKK2NvbnN0IENlcnRpZmljYXRlSW5mbyYgd2Via2l0Q2VydGlm
aWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykK
K3sKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgcmV0dXJuIGluZm8tPmNlcnRpZmljYXRlSW5mbzsK
K30KKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5OgorICogQGluZm86IGEg
I1dlYktpdENlcnRpZmljYXRlSW5mbworICoKKyAqIE1ha2UgYSBjb3B5IG9mIHRoZSAjV2ViS2l0
Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBjb3B5
IG9mIHBhc3NlZCBpbiAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvLgorICoKKyAqIFNpbmNlOiAyLjQK
KyAqLworV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5
KFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChpbmZvLCAwKTsKKworICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyogY29weSA9IGdfc2xpY2Vf
bmV3MChXZWJLaXRDZXJ0aWZpY2F0ZUluZm8pOworICAgIG5ldyAoY29weSkgV2ViS2l0Q2VydGlm
aWNhdGVJbmZvKGluZm8pOworICAgIHJldHVybiBjb3B5OworfQorCisvKioKKyAqIHdlYmtpdF9j
ZXJ0aWZpY2F0ZV9pbmZvX2ZyZWU6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZv
CisgKgorICogRnJlZSB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBTaW5jZTog
Mi40CisgKi8KK3ZvaWQgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm8qIGluZm8pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKworICAgIGlu
Zm8tPn5XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvLCBpbmZvKTsKK30KKworLyoqCisgKiB3ZWJraXRfY2VydGlmaWNhdGVfaW5m
b19nZXRfdGxzX2NlcnRpZmljYXRlOgorICogQGluZm86IGEgI1dlYktpdENlcnRpZmljYXRlSW5m
bworICoKKyAqIEdldCB0aGUgI0dUbHNDZXJ0aWZpY2F0ZSBhc3NvY2lhdGVkIHdpdGggdGhpcwor
ICogI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6IFRoZSBjZXJ0aWZpY2F0ZSBvZiBAaW5mby4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dU
bHNDZXJ0aWZpY2F0ZSogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0
ZShXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gKmluZm8pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaW5mbywgMCk7CisKKyAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZvLmNlcnRpZmlj
YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJv
cnM6CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKgorICogR2V0IHRoZSAj
R1Rsc0NlcnRpZmljYXRlRmxhZ3MgdmVyaWZpY2F0aW9uIHN0YXR1cyBhc3NvY2lhdGVkIHdpdGgg
dGhpcworICogI1dlYktpdENlcnRpZmljYXRlSW5mby4KKyAqCisgKiBSZXR1cm5zOiBUaGUgdmVy
aWZpY2F0aW9uIHN0YXR1cyBvZiBAaW5mby4KKyAqCisgKiBTaW5jZTogMi40CisgKi8KK0dUbHND
ZXJ0aWZpY2F0ZUZsYWdzIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzKFdl
YktpdENlcnRpZmljYXRlSW5mbyAqaW5mbykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmZvLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpOworCisgICAgcmV0dXJu
IGluZm8tPmNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWVmMTY0MDVlODNjZjYxMmIzYWJlMDNmYTY2YTYxZDVhY2IzOGZlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRp
ZmljYXRlSW5mby5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAorI2RlZmluZSBX
ZWJLaXRDZXJ0aWZpY2F0ZUluZm9faAorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DRVJUSUZJQ0FURV9JTkZPICh3ZWJr
aXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
Q2VydGlmaWNhdGVJbmZvIFdlYktpdENlcnRpZmljYXRlSW5mbzsKKworV0VCS0lUX0FQSSBHVHlw
ZQord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUgICAgICAgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICoKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9p
bmZvX2NvcHkgICAgICAgICAgICAgICAgKFdlYktpdENlcnRpZmljYXRlSW5mbyAqaW5mbyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZSAgICAgICAgICAg
ICAgICAoV2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSBHVGxzQ2Vy
dGlmaWNhdGUgKgord2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19jZXJ0aWZpY2F0ZSAo
V2ViS2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSBHVGxzQ2VydGlmaWNh
dGVGbGFncword2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3Rsc19lcnJvcnMgICAgICAoV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvICppbmZvKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0
ZUluZm9Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM1Y2EyN2QxM2Q2ODAzOTkwNTA2
NjRkNjZmMTJiMGYyMzhmZTczMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdENlcnRpZmljYXRlSW5mb1ByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKKworI2luY2x1ZGUg
IkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mby5oIgor
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworc3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUlu
Zm8geworICAgIF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8oR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZp
Y2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQorICAgICAgICA6IGNlcnRpZmlj
YXRlSW5mbyhjZXJ0aWZpY2F0ZSwgdGxzRXJyb3JzKQorICAgIHsKKyAgICB9CisKKyAgICBfV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmljYXRlSW5mbyogaW5mbykKKyAgICAgICAg
OiBjZXJ0aWZpY2F0ZUluZm8oaW5mby0+Y2VydGlmaWNhdGVJbmZvKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOworfTsKKworY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0
aWZpY2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKik7CisKKyNlbmRpZiAvLyBXZWJLaXRD
ZXJ0aWZpY2F0ZUluZm9Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZDJjOGJiZGY5YjU0NGNlYjQ1
MjE4ZjAzZTkzNmU3MjU0MGNmN2Q1ZS4uMjJmNGU1NDkwYWFmM2VlZTQ4ZTIxNGMxYjhkM2I0MzA2
NTZkMDBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDggKzIwLDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiV2ViQ2VydGlm
aWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJLaXRDZXJ0aWZp
Y2F0ZUluZm9Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERv
d25sb2FkUHJpdmF0ZS5oIgpAQCAtODA3LDYgKzgwOSwyNCBAQCB2b2lkIHdlYmtpdF93ZWJfY29u
dGV4dF9wcmVmZXRjaF9kbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
aG9zdAogICAgIGNvbnRleHQtPnByaXYtPmNvbnRleHQtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShTdHJpbmc6OmZyb21VVEY4KCJQcmVmZXRjaEROUyIpLCBJbW11dGFibGVEaWN0aW9uYXJ5
OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0
X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdDoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRX
ZWJDb250ZXh0CisgKiBAaW5mbzogYSAjV2ViS2l0Q2VydGlmaWNhdGVJbmZvCisgKiBAaG9zdDog
dGhlIGhvc3QgZm9yIHdoaWNoIGEgY2VydGlmaWNhdGUgaXMgdG8gYmUgYWxsb3dlZAorICoKKyAq
IElnbm9yZSBmdXJ0aGVyIFRMUyBlcnJvcnMgb24gdGhlIEBob3N0IGZvciB0aGUgY2VydGlmaWNh
dGUgcHJlc2VudCBpbiBAaW5mby4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dENlcnRpZmljYXRlSW5mbyogaW5mbywgY29uc3QgZ2NoYXIqIGhvc3QpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoaW5mbyk7CisgICAgZ19yZXR1cm5faWZfZmFpbChob3N0KTsKKworICAgIFJlZlB0
cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRl
SW5mbzo6Y3JlYXRlKHdlYmtpdENlcnRpZmljYXRlSW5mb0dldENlcnRpZmljYXRlSW5mbyhpbmZv
KSk7CisgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOCho
b3N0KSk7Cit9CisKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVE
b3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQogewogICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gZG93bmxvYWRzTWFwKCkuZ2V0KGRvd25sb2FkUHJveHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5oCmluZGV4IGRkMzhjMWQzNzViZTk2NTBiOTRiODUzZmQzMTEyOGFhMjczN2E2YWYuLjll
N2JjMTQ0NzZkYjAyMjNhNzhiY2RmNzM4YzJmNjBiOTA2NTNkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTI1LDYg
KzI1LDcgQEAKICNkZWZpbmUgV2ViS2l0V2ViQ29udGV4dF9oCiAKICNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRDb29raWVNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgpAQCAt
NjQsNyArNjUsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIC8qKgogICogV2ViS2l0VExTRXJyb3JzUG9s
aWN5OgogICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkU6IElnbm9yZSBUTFMgZXJy
b3JzLgotICogQFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOiBUTFMgZXJyb3JzIG1ha2Ug
dGhlIGxvYWQgdG8gZmluaXNoIHdpdGggYW4gZXJyb3IuCisgKiBAV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0ZBSUw6IFRMUyBlcnJvcnMgd2lsbCBlbWl0CisgKiAgICNXZWJLaXRXZWJWaWV3Ojps
b2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgYW5kLCBpZiB0aGUgc2lnbmFsIGlzIGhhbmRsZWQs
CisgKiAgIGZpbmlzaCB0aGUgbG9hZC4gSW4gY2FzZSB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVk
LAorICogICAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgaXMgZW1pdHRlZCBiZWZvcmUgdGhl
IGxvYWQgZmluaXNoZXMuCiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIFRM
UyBlcnJvcnMgcG9saWN5LgogICovCkBAIC0xOTksNiArMjAzLDExIEBAIFdFQktJVF9BUEkgdm9p
ZAogd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgIChX
ZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICAgICAgKmRpcmVjdG9yeSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCAgIChXZWJLaXRXZWJDb250ZXh0ICAg
ICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvICAgICAgICAgKmluZm8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAgICpob3N0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IDkwMjAxMmZkMjFjMTY3MGMwMDE5OTE5ZGRjMDJmMzgyYWMyMjI1YjYuLjcxNDVm
NzY1OWM1Yjk1OTRmYzU3ZmJkNzY3YTM1NTlhNDkxMWM4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNsdWRlICJX
ZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFj
a0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENlcnRpZmljYXRlSW5mb1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0
TWVudVByaXZhdGUuaCIKQEAgLTg5LDYgKzkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBlbnVtIHsKICAgICBMT0FEX0NIQU5HRUQsCiAgICAgTE9BRF9GQUlMRUQsCisgICAgTE9BRF9G
QUlMRURfV0lUSF9UTFNfRVJST1JTLAogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1cs
CkBAIC04NDcsNiArODQ5LDM5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX1BPSU5URVIpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bG9h
ZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBpbmZvOiBhICNX
ZWJLaXRDZXJ0aWZpY2F0ZUluZm8KKyAgICAgKiBAaG9zdDogdGhlIGhvc3Qgb24gd2hpY2ggdGhl
IGVycm9yIG9jY3VycmVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYSBUTFMgZXJyb3Ig
b2NjdXJzIGR1cmluZyBhIGxvYWQgb3BlcmF0aW9uLiBUaGUgQGluZm8KKyAgICAgKiBvYmplY3Qg
Y29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yIHN1Y2ggYXMgdGhlICNHVGxzQ2Vy
dGlmaWNhdGUKKyAgICAgKiBhbmQgdGhlICNHVGxzQ2VydGlmaWNhdGVGbGFncy4gVG8gYWxsb3cg
YW4gZXhjZXB0aW9uIGZvciB0aGlzIGNlcnRpZmljYXRlCisgICAgICogYW5kIHRoaXMgaG9zdCB1
c2Ugd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCgpLgor
ICAgICAqCisgICAgICogVG8gaGFuZGxlIHRoaXMgc2lnbmFsIGFzeW5jaHJvbm91c2x5IHlvdSBz
aG91bGQgY29weSB0aGUgI1dlYktpdENlcnRpZmljYXRlSW5mbworICAgICAqIHdpdGggd2Via2l0
X2NlcnRpZmljYXRlX2luZm9fY29weSgpIGFuZCByZXR1cm4gJVRSVUUuCisgICAgICoKKyAgICAg
KiBJZiAlRkFMU0UgaXMgcmV0dXJuZWQsICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCB3aWxs
IGJlIGVtaXR0ZWQuIFRoZSBsb2FkCisgICAgICogd2lsbCBmaW5pc2ggcmVnYXJkbGVzcyBvZiB0
aGUgcmV0dXJuZWQgdmFsdWUuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9w
IG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAq
ICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjQKKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VS
Uk9SU10gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9y
cyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2Vi
S2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpLAorICAgICAgICAg
ICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRh
dGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19CT1hFRF9TVFJJTkcs
CisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMg
Ki8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0NFUlRJRklDQVRFX0lORk8gIHwgR19TSUdOQUxf
VFlQRV9TVEFUSUNfU0NPUEUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKKworICAgIC8q
KgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpAQCAt
MTUwOSwxNSArMTU0NCwxOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsCiAgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJVF9MT0FEX0ZJTklT
SEVEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICplcnJv
ciwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRp
ZmljYXRlKQordm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwg
R1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmlj
YXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdTZXRJc0xvYWRpbmcod2ViVmlldywgZmFsc2UpOwog
ICAgIHdlYmtpdFdlYlZpZXdDYW5jZWxBdXRoZW50aWNhdGlvblJlcXVlc3Qod2ViVmlldyk7CiAK
ICAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Via2l0X3dlYl9j
b250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAg
ICBpZiAodGxzRXJyb3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKSB7
Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKHdlYlZpZXcsIFdFQktJVF9MT0FEX1NU
QVJURUQsIGZhaWxpbmdVUkksIGVycm9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBHT3du
UHRyPFNvdXBVUkk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsKKyAgICAgICAg
V2ViS2l0Q2VydGlmaWNhdGVJbmZvIGluZm8oY2VydGlmaWNhdGUsIHRsc0Vycm9ycyk7CisgICAg
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcs
IHNpZ25hbHNbTE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTXSwgMCwgJmluZm8sIHNvdXBVUkkt
Pmhvc3QsICZyZXR1cm5WYWx1ZSk7CisgICAgICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAg
ICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURdLCAwLCBXRUJL
SVRfTE9BRF9TVEFSVEVELCBmYWlsaW5nVVJJLCBlcnJvciwgJnJldHVyblZhbHVlKTsKICAgICB9
CiAKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwg
V0VCS0lUX0xPQURfRklOSVNIRUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGE0ZDZlNDM5ZWNhNzI2ZTkwNjM3NjEzMjE2YTUx
NDc3ZWI3YWU5N2QuLjZlNDM0YjVmNGIxYWYyYzc3OGI4MjZlMjliNzYyZjliZWJkYzZiZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
QEAgLTIwMCw1OCArMjAwLDYwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7CiAK
LSAgICB2b2lkICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVu
dCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRf
ZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAg
KmVycm9yKTsKLQotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAg
KCogcmVhZHlfdG9fc2hvdykgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAg
ICAgKCogY2xvc2UpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cg
ICAgICAgICAgKmRpYWxvZykgIDsKLQotICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVj
aXNpb24gICAgICAgICpkZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgIHR5cGUpOwotICAgIGdi
b29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVl
c3QpOwotICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRf
dGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotICAgIGdib29sZWFu
ICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9vcGVyYXRpb24pOwotICAg
IHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1
ZXN0ICAgICAgICAgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNj
cmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwot
ICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVf
Y2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRf
bWVudSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENv
bnRleHRNZW51ICAgICAgICAgICAqY29udGV4dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZl
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQpOwotICAgIHZvaWQgICAgICAg
KCogY29udGV4dF9tZW51X2Rpc21pc3NlZCkgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0ICpyZXF1ZXN0KTsKLSAgICB2b2lkICAgICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0
ZWQpIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2
ZW50ICAgZXZlbnQpOwotICAgIGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xl
YW4gICAoKiBhdXRoZW50aWNhdGUpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZvaWQg
ICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7Cisg
ICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAg
ICAqZXJyb3IpOworCisgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAg
ICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAg
dm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgKCogc2NyaXB0X2Rp
YWxvZykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlhbG9nKSAgOworCisgICAgZ2Jvb2xlYW4gICAoKiBk
ZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlw
ZSAgICAgdHlwZSk7CisgICAgZ2Jvb2xlYW4gICAoKiBwZXJtaXNzaW9uX3JlcXVlc3QpICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFy
Z2V0X2NoYW5nZWQpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllcnMpOworICAgIGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFByaW50T3BlcmF0
aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKKyAgICB2b2lkICAgICAgICgqIHJlc291cmNl
X2xvYWRfc3RhcnRlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICpy
ZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAg
KCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0
TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRI
aXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCk7CisgICAgdm9pZCAgICAgICAo
KiBjb250ZXh0X21lbnVfZGlzbWlzc2VkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3JtKSAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lv
blJlcXVlc3QgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9k
ZXRlY3RlZCkgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEluc2VjdXJl
Q29udGVudEV2ZW50ICAgZXZlbnQpOworICAgIGdib29sZWFuICAgKCogd2ViX3Byb2Nlc3NfY3Jh
c2hlZCkgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisK
KyAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgKnJlcXVl
c3QpOworICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyAgICAgICAq
aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAgICAqaG9zdCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CiAg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQzKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7
CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7Ci0gICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQ2KSAodm9pZCk7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aAppbmRleCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi5mZDBhZWQy
MTBhNDdjYWExOTcyZDFjMzYyMWRhZDZjNzZmZmEzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTMz
LDcgKzMzLDcgQEAKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciopOwotdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2Vi
VmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqLCBHVGxzQ2VydGlmaWNhdGVG
bGFncywgR1Rsc0NlcnRpZmljYXRlKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0
aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9y
KiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogdm9pZCB3ZWJraXRX
ZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqLCBkb3VibGUgZXN0
aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktpdFdl
YlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2Vi
S2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNzZkMDEwNDEyNjgyZTg3ZjRm
N2M5MzE5YWNmMzRjZDUwMmVlMTM2NC4uZTNjZjlhNjhjNmIzOWQxNzlhZGE1NTljYWE0OGRhZmMx
MWFmNWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC00Myw2ICs0Myw3IEBACiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC54bWwiLz4KICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3R3JvdXAueG1sIi8+CisgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENlcnRpZmljYXRlSW5mby54bWwiLz4KICAgPC9jaGFw
dGVyPgogCiAgIDxjaGFwdGVyPgpAQCAtNjEsNiArNjIsMTEgQEAKICAgICA8dGl0bGU+SW5kZXgg
b2YgbmV3IHN5bWJvbHMgaW4gMi4yPC90aXRsZT4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
YXBpLWluZGV4LTIuMi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAgPC9pbmRl
eD4gIAotICAKKworICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTQiIHJvbGU9IjIuNCI+CisgICAg
PHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuNDwvdGl0bGU+CisgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC0yLjQueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1
ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2Fubm90YXRpb24tZ2xv
c3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8L2Jvb2s+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dAppbmRleCBlOGJlNjFmZTRlM2E0ZjIxMjYyNzdmZjMyMmUzOTk5Nzgz
Y2RiZTM4Li44MDU3NjNiMWYyNDM4MjQ0ZGQzMmIyZjBlODQ3ZjY5Mzk3NTU2MDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTQ4LDYgKzQ4LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0
X2dldF90bHNfZXJyb3JzX3BvbGljeQogd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5z
aW9uc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMKIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4K
IFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMTA5NywzICsxMDk4LDE4IEBAIFdF
QktJVF9TQ1JJUFRfV09STERfR0VUX0NMQVNTCiBXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUKIHdl
YmtpdF9zY3JpcHRfd29ybGRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklM
RT5XZWJLaXRDZXJ0aWZpY2F0ZUluZm88L0ZJTEU+CitXZWJLaXRDZXJ0aWZpY2F0ZUluZm8KK3dl
YmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2NvcHkKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUK
K3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlmaWNhdGUKK3dlYmtpdF9jZXJ0
aWZpY2F0ZV9pbmZvX2dldF90bHNfZXJyb3JzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VC
S0lUX1RZUEVfQ0VSVElGSUNBVEVfSU5GTworCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0
X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwppbmRleCA1
YjFlYTNjMWZkZTQ2ZDNmMTY3Y2Y3MDEzMjNmOGZjMDA4NDBmMjllLi40YjU4M2JhZDliMGE3YTZi
YTEwMmY3MzIyZTRjNzA3YWY2NWM5YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yNywzICsyNyw0IEBA
IHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Z2V0X3R5cGUKIHdlYmtpdF9jcmVkZW50aWFsX2dldF90eXBlCiB3ZWJraXRfZnJhbWVfZ2V0X3R5
cGUKK3dlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCmluZGV4IGRiNmNjYzg1MjJk
MTUxY2I5YzQ5NWQ5ZDQzZjNlOTZmNjUyNTJhNmUuLmUzMTgwYzViYzhjOTI0ODdiYzEzNGExNjRi
YmQ0ZGYyYjgyYjdhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RTU0wuY3BwCkBAIC0yOCw2ICsyOCw4IEBAIHN0YXRpYyBXZWJLaXRUZXN0
U2VydmVyKiBrSHR0cFNlcnZlcjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluZGV4SFRNTCA9ICI8
aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdDJHVEsrIFNTTDwvYm9keT48L2h0bWxsPiI7CiBzdGF0
aWMgY29uc3QgY2hhciogaW5zZWN1cmVDb250ZW50SFRNTCA9ICI8aHRtbD48c2NyaXB0IHNyYz1c
IiVzXCI+PC9zY3JpcHQ+PGJvZHk+PHA+VGV4dCArIGltYWdlIDxpbWcgc3JjPVwiJXNcIiBhbGln
bj1cInJpZ2h0XCIvPjwvcD48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhciBUTFNF
eHBlY3RlZFN1Y2Nlc3NUaXRsZVtdID0gIldlYktpdDJHdGsrIFRMUyBwZXJtaXNzaW9uIHRlc3Qi
Oworc3RhdGljIGNvbnN0IGNoYXIgVExTU3VjY2Vzc0hUTUxTdHJpbmdbXSA9ICI8aHRtbD48aGVh
ZD48dGl0bGU+V2ViS2l0Mkd0aysgVExTIHBlcm1pc3Npb24gdGVzdDwvdGl0bGU+PC9oZWFkPjxi
b2R5PjwvYm9keT48L2h0bWw+IjsKIAogY2xhc3MgU1NMVGVzdDogcHVibGljIExvYWRUcmFja2lu
Z1Rlc3QgewogcHVibGljOgpAQCAtMTMyLDYgKzEzNCw4NSBAQCBzdGF0aWMgdm9pZCB0ZXN0VExT
RXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQo
IXRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0
dGVkKSk7CiB9CiAKK2NsYXNzIFRMU0Vycm9yc1Rlc3Q6IHB1YmxpYyBTU0xUZXN0IHsKK3B1Ymxp
YzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFRMU0Vycm9yc1Rlc3QpOworCisgICAgVExT
RXJyb3JzVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywg
ImxvYWQtZmFpbGVkLXdpdGgtdGxzLWVycm9ycyIsIEdfQ0FMTEJBQ0socnVuTG9hZEZhaWxlZFdp
dGhUTFNFcnJvcnNDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIH5UTFNFcnJvcnNUZXN0
KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZCht
X3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAg
ICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICB3ZWJraXRfY2VydGlmaWNhdGVf
aW5mb19mcmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xl
YW4gcnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvLCBjb25zdCBjaGFyKiBob3N0LCBUTFNFcnJvcnNUZXN0
KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMo
aW5mbywgaG9zdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHZvaWQgcnVu
TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZvLCBjb25z
dCBjaGFyKiBob3N0KQorICAgIHsKKyAgICAgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQorICAg
ICAgICAgICAgd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZnJlZShtX2NlcnRpZmljYXRlSW5mbyk7
CisgICAgICAgIG1fY2VydGlmaWNhdGVJbmZvID0gd2Via2l0X2NlcnRpZmljYXRlX2luZm9fY29w
eShpbmZvKTsKKyAgICAgICAgbV9ob3N0LnNldChnX3N0cmR1cChob3N0KSk7CisgICAgICAgIGdf
bWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxM
b2FkRmFpbGVkV2l0aFRMU0Vycm9ycygpCisgICAgeworICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZp
Y2F0ZUluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOworICAg
IH0KKworICAgIGNvbnN0IGNoYXIqIGhvc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faG9z
dC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBt
X2NlcnRpZmljYXRlSW5mbzsKKyAgICBHT3duUHRyPGNoYXI+IG1faG9zdDsKK307CisKK3N0YXRp
YyB2b2lkIHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BP
TElDWV9GQUlMKTsKKworICAgIC8vIFRoZSBsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMgc2ln
bmFsIHNob3VsZCBiZSBlbWl0dGVkIHdoZW4gdGhlcmUgaXMgYSBUTFMgZmFpbHVyZS4KKyAgICB0
ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRh
dGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoKTsKKyAg
ICAvLyBUZXN0IHRoZSBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8gQVBJLgorICAgIGdfYXNzZXJ0KEdf
SVNfVExTX0NFUlRJRklDQVRFKHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2dldF90bHNfY2VydGlm
aWNhdGUodGVzdC0+Y2VydGlmaWNhdGVJbmZvKCkpKSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3
ZWJraXRfY2VydGlmaWNhdGVfaW5mb19nZXRfdGxzX2Vycm9ycyh0ZXN0LT5jZXJ0aWZpY2F0ZUlu
Zm8oKSksID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIodGVzdC0+aG9zdCgpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBzU2VydmVyLT5i
YXNlVVJJKCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9
PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3Nl
cnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6Okxv
YWRGaW5pc2hlZCk7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGFuIGV4Y2VwdGlvbiBmb3IgdGhp
cyBjZXJ0aWZpY2F0ZSBvbiB0aGlzIGhvc3QuCisgICAgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChjb250ZXh0LCB0ZXN0LT5jZXJ0aWZpY2F0ZUluZm8o
KSwgdGVzdC0+aG9zdCgpKTsKKyAgICAvLyBUaGUgcGFnZSBzaG91bGQgbm93IGxvYWQgd2l0aG91
dCBlcnJvcnMuCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii90ZXN0LXRscy8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworCisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGlu
dCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0
dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgVExTRXhwZWN0ZWRTdWNj
ZXNzVGl0bGUpOworfQorCisKIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3Nh
Z2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTE0OCw2ICsyMjksMTAgQEAgc3Rh
dGljIHZvaWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVz
c2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgp
LCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRf
c3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlmIChnX3N0
cl9lcXVhbChwYXRoLCAiL3Rlc3QtdGxzLyIpKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRf
c3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgVExT
U3VjY2Vzc0hUTUxTdHJpbmcsIHN0cmxlbihUTFNTdWNjZXNzSFRNTFN0cmluZykpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKICAg
ICB9IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfTk9UX0ZPVU5EKTsKIH0KQEAgLTE5MSw3ICsyNzYsMTEgQEAgdm9pZCBiZWZvcmVBbGwo
KQogCiAgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNzbCIsIHRlc3RTU0wpOwog
ICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnNlY3VyZS1j
b250ZW50IiwgdGVzdEluc2VjdXJlQ29udGVudCk7Ci0gICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRX
ZWJDb250ZXh0IiwgInRscy1lcnJvcnMtcG9saWN5IiwgdGVzdFRMU0Vycm9yc1BvbGljeSk7Cisg
ICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgZG9lcyBtYXR0ZXIgYmVj
YXVzZSB0bHMtZXJyb3JzLXBvbGljeSB0ZXN0cyB0aGUgZGVmYXVsdCBwb2xpY3ksCisgICAgLy8g
YW5kIGV4cGVjdHMgdGhhdCBubyBleGNlcHRpb24gd2lsbCBoYXZlIGJlZW4gYWRkZWQgZm9yIHRo
aXMgY2VydGlmaWNhdGUgYW5kIGhvc3QgcGFpciBhcyBpcworICAgIC8vIGRvbmUgaW4gdGhlIHRs
cy1wZXJtaXNzaW9uLXJlcXVlc3QgdGVzdC4KKyAgICBTU0xUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAidGxzLWVycm9ycy1wb2xpY3kiLCB0ZXN0VExTRXJyb3JzUG9saWN5KTsKKyAgICBUTFNF
cnJvcnNUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1mYWlsZWQtd2l0aC10bHMtZXJy
b3JzIiwgdGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggNzBlM2I0
MzMwNTkzZWY2ZDBmZDc4OGJhMmU5MzMxZjQyMGY4OTc4Ni4uOGQ4MjE5OTAzOTk4ZDk1ZjNlNTk5
ZTgxNmQwOWNjNDg2MDY3NTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXV0
aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2Fy
ZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENlcnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRl
eHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVt
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
bWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1h
cnNoYWwubGlzdAppbmRleCA0MjA3NjZlYTdmMTUzMjNhYTJiZGU3MWQ2NzQxNmY4NGFhNGI0MGRi
Li5lMWNmZTA3MjE2ZDM5YjBlOThkNjA0NzcxYmUwNjI5NjVkMjY4N2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAg
LTEsNCArMSw1IEBACiBCT09MRUFOOkJPWEVECitCT09MRUFOOkJPWEVELFNUUklORwogQk9PTEVB
TjpFTlVNLFNUUklORyxQT0lOVEVSCiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsQk9Y
RUQsT0JKRUNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMTc2
MjZmY2YzNjk4NGE5MjE0MjA4YTFmOGYxNjRiMmM5MzAyZjI2NS4uZmUzNDQ4NWRhNTg2ODEyM2Ni
ZmE2YjczZmEwY2IyNmM3YmJiYzM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtMTA4OSwxMCArMTA4OSwxNSBAQCB2b2lkIFdlYkNvbnRleHQ6OmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQorI2lmIFVTRShTT1VQKQorICAgIG1fcHJvY2Vz
c2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7
CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2VydGlmaWNhdGUpOwogICAg
IFVOVVNFRF9QQVJBTShob3N0KTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIg
d2hldGhlciB3ZSB3YW50IHRoaXMgU1BJIHRvIGJlIGV4cG9zZWQgYW5kIHVzZWQgZm9yIGNsaWVu
dHMgdGhhdCBkb24ndCB1c2UgdGhlIE5ldHdvcmtQcm9jZXNzLgorI2VuZGlmCisKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAppbmRleCAyN2Y4YjRjNDljNTQ3OGEzMzIxZjEyODZjZmY4MGIzMGFhMGE1ZmVkLi43MTFiNDA0
ZWM4ZmRkNmUwNTkxOGYxMjQxOTM5YWQyMjhlMDk4YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1RhYmxlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNjksNiArMTcwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKIAorI2lmICFFTkFCTEUoTkVUV09SS19QUk9DRVNTKSAm
JiBVU0UoU09VUCkKKyAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTliY2U2MzYyNjgw
YzZiMjYxMWMwZTNlNjdhNDk5NWJiY2Q0N2I4Yy4uNzE4ZDhmYTc3OGU5MDFhZTg1ZDEzZTIxM2Rm
ZmFkNzIxMTlkYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtODIsNCArODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZChib29sIGZsYWcpOwogI2VuZGlmCisKKyNpZiAhRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykgJiYgVVNFKFNPVVApCisgICAgQWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVG
b3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSwgV1RGOjpTdHJpbmcg
aG9zdCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJQcm9jZXNzU291cC5jcHAKaW5kZXggYzdiZWE5Mjg2NGYxYzI4YTc2MDBjNjUzZjAxOWY4NjVh
Y2U3ZTI5ZC4uZDZiZTU4YTI0MDdmNWU2OTViMWExZTlmNGQ5YjA3ZTE2ZmQ4YTg0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBA
IC0yMDgsNCArMjA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25v
cmVTU0xFcnJvcnMoaWdub3JlVExTRXJyb3JzKTsKIH0KIAorI2lmICFFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQordm9pZCBXZWJQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGUoaG9zdCwgY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOworfQor
I2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214939</attachid>
            <date>2013-10-23 01:56:19 -0700</date>
            <delta_ts>2013-10-23 02:05:31 -0700</delta_ts>
            <desc>Revert CertificateInfo</desc>
            <filename>bug-120160-20131023095631.patch</filename>
            <type>text/plain</type>
            <size>4341</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmRjMGI2MDNmODkzN2Qy
NjhjMzI4ZmE5YWY0YWM2MDkyMTVlYmE5ZS4uOWI0ODZmYmY4NDhkYTZkMDY2ZGVjMTQzYmZhNjQ3
ZDlmODQ5OTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEwLTIzICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
S2l0MiBBUEkgZm9yIFRMUyBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJldmVydCBiYWNrIHRvIHVzaW5nIFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvIGZvbGxvaW5nIHRoZSByb2xsb3V0CisgICAgICAgIG9mIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1MjAuCisKKyAgICAgICAgKiBTaGFyZWQvc291cC9QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvOjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogU2hhcmVkL3Nv
dXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwOgorICAgICAgICAod2Via2l0Q2VydGlmaWNhdGVJ
bmZvR2V0Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmg6CisKIDIwMTMtMTAtMjMgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IElt
cGxlbWVudCBzdXBlcmxheWVyLCByZW1vdmVGcm9tU3VwZXJsYXllciwgcmVwbGFjZVN1YmxheWVy
LCBhbmQgYWRvcHRTdWJsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9z
b3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9z
b3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcAppbmRleCBjNjkwNGI0YWU2ZTViNTMyYjAz
OWRkNWNmZGE2ZTdlZWJhNjcxNGViLi4yNWNlNGVmZDVlZjBkMTM0YmEyNmRkN2M4YzkxYjQ2NDg4
YzE2N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNl
cnRpZmljYXRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC01NCw2ICs1NCwxMiBAQCBQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbzo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VFcnJvciYgcmVz
b3VyY2VFcgogewogfQogCitQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6UGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxh
Z3MgdGxzRXJyb3JzKQorICAgIDogbV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKKyAgICAsIG1f
dGxzRXJyb3JzKHRsc0Vycm9ycykKK3sKK30KKwogUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86On5Q
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAppbmRleCA4YzIzMWYzNmRiMzJm
OGQ4YjQwMjY3YjZkYjQ1YzE0N2Y2MWMwNTUwLi44ZmYxMjBjN2EyMWZlNzk0MzA0NTVmZGM1ODk2
OGZmYjRhMTg5ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1Bs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGV4cGxpY2l0IFBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAg
ICBleHBsaWNpdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxz
Q2VydGlmaWNhdGVGbGFncyk7CiAgICAgflBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CiAKICAg
ICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZp
Y2F0ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggMTJkZjFhYWNhODAyNTc5ZmI4
NWE2M2QwZjAxYTVmNjkwMTVmMGI4Ny4uNTRiMTA0MDQ1OWIwZjAwM2FlMTYwN2NiZmQyYmY4MzBh
NGVmOTgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENlcnRpZmljYXRl
SW5mbywgd2Via2l0X2NlcnRpZmljYXRlX2luZm8sIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2Nv
cHksIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUpCiAKLWNvbnN0IENlcnRpZmljYXRlSW5m
byYgd2Via2l0Q2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVJbmZvKFdlYktpdENlcnRpZmlj
YXRlSW5mbyogaW5mbykKK2NvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0
aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKiBpbmZv
KQogewogICAgIEFTU0VSVChpbmZvKTsKICAgICByZXR1cm4gaW5mby0+Y2VydGlmaWNhdGVJbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZS5oCmluZGV4IDIzNWNhMjdkMTNkNjgwMzk5MDUw
NjY0ZDY2ZjEyYjBmMjM4ZmU3MzEuLjY2ZDI2YTQwMTFiNDE1NmE2NGEwYjAzZmE0MmJiOGRjYjg2
NDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENlcnRpZmljYXRlSW5mb1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDZXJ0aWZpY2F0ZUluZm9Qcml2YXRlLmgKQEAgLTIwLDcgKzIwLDcgQEAK
ICNpZm5kZWYgV2ViS2l0Q2VydGlmaWNhdGVJbmZvUHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdENl
cnRpZmljYXRlSW5mb1ByaXZhdGVfaAogCi0jaW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJLaXRDZXJ0
aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAKQEAgLTM1LDkgKzM1
LDkgQEAgc3RydWN0IF9XZWJLaXRDZXJ0aWZpY2F0ZUluZm8gewogICAgIHsKICAgICB9CiAKLSAg
ICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOworICAgIFdlYktpdDo6
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogfTsKIAotY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0
ZUluZm8oV2ViS2l0Q2VydGlmaWNhdGVJbmZvKik7Citjb25zdCBXZWJLaXQ6OlBsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvJiB3ZWJraXRDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0aWZpY2F0ZUluZm8oV2Vi
S2l0Q2VydGlmaWNhdGVJbmZvKik7CiAKICNlbmRpZiAvLyBXZWJLaXRDZXJ0aWZpY2F0ZUluZm9Q
cml2YXRlX2gK
</data>
<flag name="review"
          id="237558"
          type_id="1"
          status="+"
          setter="mario"
    />
    <flag name="commit-queue"
          id="237559"
          type_id="3"
          status="-"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>