<?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>192074</bug_id>
          
          <creation_ts>2018-11-28 00:44:37 -0800</creation_ts>
          <short_desc>[GTK][WPE] Implement HSTS for the soup network backend</short_desc>
          <delta_ts>2019-08-28 03:16:18 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Claudio Saavedra">csaavedra</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482381</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-11-28 00:44:37 -0800</bug_when>
    <thetext>[GTK][WPE] Implement HSTS for the soup network backend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482433</commentid>
    <comment_count>1</comment_count>
      <attachid>355875</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-11-28 08:27:38 -0800</bug_when>
    <thetext>Created attachment 355875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482434</commentid>
    <comment_count>2</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-11-28 08:38:50 -0800</bug_when>
    <thetext>This patch is a WIP and RFC based on the hsts branch in libsoup, that is being discussed here: https://gitlab.gnome.org/GNOME/libsoup/merge_requests/22

Important points of consideration with respect this patch (I might add this to the ChangeLog before landing when we do in some form or another):

- Soup has two HSTS enforcers: a persistent one using sqlite and a non-persistent one. For the sake of simplicity this patch uses the non-persistent one, as I want to focus on the implementation issues below. A final version should use the persistent one.

- NetworkDataTaskSoup::protocolUpgradedViaHSTS() is based on NetworkDataTaskSoup::continueHTTPRedirection(). The underlying issue here is that when libsoup rewrites the protocol in a URI prior to sending a message, there is no knowledge of this in clients. The idea of this method is to allow clients to be notified, for example, so that the URL bar in the browser gets updated as well. I am not 100% sure that this is the best way to do this so someone who knows better the network process in the soup ports should check this.

- libsoup has no API (yet) to learn when a message has been upgraded to HTTPS via HSTS, so we&apos;re relying on the notify::uri signal in SoupMessage. This works, but might not be the most reliable way to do it, as the uri could change for other reasons (?).

- The patch includes as well mitigation for HSTS protocol abuse, following what Apple implements for Safari. In particular, if a request for a HTTPS URI is not for the main document, disable the HSTS feature. This way we prevent subresources from adding potentially large amounts of HSTS policies that can later be used for user profiling.

- The mitigation code relies on the fix for bug #184987, which is included here for testing purposes. Before landing this patch, we need to ensure that bug #184987 is fixed or find an alternative way to get the main document.

In order to finish the HSTS branch in libsoup I would appreciate some comments in the WebKit implementation. A fresh pair of eyes will probably be helpful in ironing out important API details in the libsoup side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482531</commentid>
    <comment_count>3</comment_count>
      <attachid>355875</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-11-28 10:53:35 -0800</bug_when>
    <thetext>Comment on attachment 355875
Patch

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

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:154
&gt; +#if SOUP_CHECK_VERSION(2, 65, 1)
&gt; +    // Follow Apple&apos;s HSTS tracking mitigation. Disabling the HSTS enforcer for a HTTPS request that
&gt; +    // is not a toplevel frame will prevent subresources from setting a STS value.
&gt; +    if (m_currentRequest.url().protocolIs(&quot;https&quot;) &amp;&amp; !m_currentRequest.isTopSite())
&gt; +        soup_message_disable_feature(soupMessage.get(), SOUP_TYPE_HSTS_ENFORCER);
&gt; +#endif

From https://webkit.org/blog/8146/protecting-against-hsts-abuse/ I see that this is similar to Mitigation 2, with the difference that Apple&apos;s Mitigation 2 is more limited because it is tied in with the intelligent tracking prevention feature. i.e. the HSTS &quot;redirect&quot; should occur unless the subresource would be prevented from storing cookies. Any plans for this?

And any plans for Mitigation 1?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1131
&gt; +void NetworkDataTaskSoup::protocolUpgradedViaHSTS(SoupMessage *soupMessage)

SoupMessage* soupMessage

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1137
&gt; +    if (!redirectedURL.hasFragmentIdentifier() &amp;&amp; request.url().hasFragmentIdentifier())
&gt; +        redirectedURL.setFragmentIdentifier(request.url().fragmentIdentifier());

Out of curiosity, do you know why do we have to manually restore the fragment? It seems weird that the fragment would be lost during a redirect?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1154
&gt; +void NetworkDataTaskSoup::notifyUri(SoupMessage* soupMessage, GParamSpec *spec, NetworkDataTaskSoup* task)

GParamSpec* spec

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1156
&gt; +    if (soup_uri_get_scheme (soup_message_get_uri (soupMessage)) == SOUP_URI_SCHEME_HTTPS)

soup_message_get_uri(soupMessage)

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1157
&gt; +        task-&gt;protocolUpgradedViaHSTS(soupMessage);

Perhaps we can store the original URI on the SoupMessage using g_object_set_data()? Or just store it in NetworkDataTaskSoup? That way we would have it available for comparison here?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h:118
&gt; +    static void notifyUri(SoupMessage*, GParamSpec *, NetworkDataTaskSoup*);

GParamSpec*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487872</commentid>
    <comment_count>4</comment_count>
      <attachid>355875</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-12-14 00:22:33 -0800</bug_when>
    <thetext>Comment on attachment 355875
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:154
&gt;&gt; +#endif
&gt; 
&gt; From https://webkit.org/blog/8146/protecting-against-hsts-abuse/ I see that this is similar to Mitigation 2, with the difference that Apple&apos;s Mitigation 2 is more limited because it is tied in with the intelligent tracking prevention feature. i.e. the HSTS &quot;redirect&quot; should occur unless the subresource would be prevented from storing cookies. Any plans for this?
&gt; 
&gt; And any plans for Mitigation 1?

No plans for anything yet. I had first thought to do the mitigations separately and afterwards but since I already had this, I put it in this patch. If you think it would make more sense to implement them separately from the basic HSTS feature, we can do that.

As long as I have time at some point, yes, I would do them. If just doing the above in the meantime is not good, I can remove them from the patch.

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1137
&gt;&gt; +        redirectedURL.setFragmentIdentifier(request.url().fragmentIdentifier());
&gt; 
&gt; Out of curiosity, do you know why do we have to manually restore the fragment? It seems weird that the fragment would be lost during a redirect?

In this particular case, I think this doesn&apos;t make sense because we&apos;re not really following a redirect. We&apos;re just upgrading to HTTPS before we even load anything. So it&apos;s true that this is not needed. Which leads to the comment below.

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1152
&gt; +}

All of the code above is questionable because we&apos;re abusing NetworkLoadClient::willPerformHTTPRedirection(). This has problems: we&apos;re telling the network process that this should count as one redirect, and be treated as such, when this is not really what&apos;s happening here.

In reality, all we need is to notify the clients that the protocol is being upgraded before any request is performed, so that clients are aware of the new URL with https scheme. I haven&apos;t found yet a clean way to do this.

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1157
&gt;&gt; +        task-&gt;protocolUpgradedViaHSTS(soupMessage);
&gt; 
&gt; Perhaps we can store the original URI on the SoupMessage using g_object_set_data()? Or just store it in NetworkDataTaskSoup? That way we would have it available for comparison here?

I decided to add a hsts-enforced signal to the SoupHSTSEnforcer class so that we can do the above only on HSTS policy enforcing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487914</commentid>
    <comment_count>5</comment_count>
      <attachid>357314</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-12-14 07:48:08 -0800</bug_when>
    <thetext>Created attachment 357314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487917</commentid>
    <comment_count>6</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-12-14 07:51:47 -0800</bug_when>
    <thetext>Patch rebased and cleaned up after the review.

The new version of the patch uses the SoupHSTSEnforcer::hsts-enforced signal instead of relying on the notify signal. It&apos;s a bit cleaner. I also added cleaning up the signal handler, which was missing in the previous patch.

After reviewing how the cocoa port deals with this, I realized that there&apos;s no better way than to act as in a HTTP redirection, so we probably want to do that. I did clean a bit ::protocolUpgradedViaHSTS() to the minimum that seems needed fo this to work.

This is still missing persistency so I will probably tackle that in a next iteration. I would appreciate some comments on the protocolUpgradedViaHSTS() method, since that&apos;s the part that makes me unsure about this patch. Maybe Carlos?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496541</commentid>
    <comment_count>7</comment_count>
      <attachid>357314</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-21 00:44:07 -0800</bug_when>
    <thetext>Comment on attachment 357314
Patch

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

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1136
&gt; +    auto response = ResourceResponse(m_response);

I guess we should use ResourceResponse::syntheticRedirectResponse() no?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1140
&gt; +    ResourceRequest request = m_currentRequest;
&gt; +    URL redirectedURL = soupURIToURL(soup_message_get_uri(soupMessage));
&gt; +    request.setURL(redirectedURL);
&gt; +    m_client-&gt;willPerformHTTPRedirection(WTFMove(response), WTFMove(request), [this, protectedThis = makeRef(*this)](const ResourceRequest&amp; newRequest) {

I think we are missing here all other things that are done before a normal redirection. I think we should make m_response the syntheiszed redirect response and simply call continueHTTPRedirection().

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1157
&gt; +    if (soupMessage == task-&gt;m_soupMessage.get())
&gt; +        task-&gt;protocolUpgradedViaHSTS(soupMessage);

You should also check the task state.

if (task-&gt;state() == State::Canceling || task-&gt;state() == State::Completed || !task-&gt;m_client) {
        task-&gt;clearRequest();
        return;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496644</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-21 12:49:21 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; From https://webkit.org/blog/8146/protecting-against-hsts-abuse/ I see that
&gt; this is similar to Mitigation 2, with the difference that Apple&apos;s Mitigation
&gt; 2 is more limited because it is tied in with the intelligent tracking
&gt; prevention feature. i.e. the HSTS &quot;redirect&quot; should occur unless the
&gt; subresource would be prevented from storing cookies. Any plans for this?
&gt; 
&gt; And any plans for Mitigation 1?

For myself, I&apos;d just like to see both mitigations implemented correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496756</commentid>
    <comment_count>9</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-01-22 07:10:53 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #7)
&gt; Comment on attachment 357314 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357314&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1136
&gt; &gt; +    auto response = ResourceResponse(m_response);
&gt; 
&gt; I guess we should use ResourceResponse::syntheticRedirectResponse() no?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1140
&gt; &gt; +    ResourceRequest request = m_currentRequest;
&gt; &gt; +    URL redirectedURL = soupURIToURL(soup_message_get_uri(soupMessage));
&gt; &gt; +    request.setURL(redirectedURL);
&gt; &gt; +    m_client-&gt;willPerformHTTPRedirection(WTFMove(response), WTFMove(request), [this, protectedThis = makeRef(*this)](const ResourceRequest&amp; newRequest) {
&gt; 
&gt; I think we are missing here all other things that are done before a normal
&gt; redirection. I think we should make m_response the syntheiszed redirect
&gt; response and simply call continueHTTPRedirection().
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1157
&gt; &gt; +    if (soupMessage == task-&gt;m_soupMessage.get())
&gt; &gt; +        task-&gt;protocolUpgradedViaHSTS(soupMessage);
&gt; 
&gt; You should also check the task state.
&gt; 
&gt; if (task-&gt;state() == State::Canceling || task-&gt;state() == State::Completed
&gt; || !task-&gt;m_client) {
&gt;         task-&gt;clearRequest();
&gt;         return;
&gt; }

Thanks for the review. What I infer from your review is that besides implementation details related to how the protocol upgrade is dealt with, in general lines the patch seems fine. This would mean that the libsoup API is sufficient to implement this in WebKit and it would probably be a good time to merge it upstream while I finish the WebKit implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496782</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-22 08:53:03 -0800</bug_when>
    <thetext>Up to you, but my recommendation would be to merge it upstream immediately after branching for the next release, since the WebKit side of the work is going to slip. That way, you can still make libsoup API changes until August if any unexpectedly prove to be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497253</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-23 00:36:42 -0800</bug_when>
    <thetext>The libsoup API looks good to me, but I don&apos;t know much about HSTS, and I haven&apos;t seen the libsoup implementation either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505714</commentid>
    <comment_count>12</comment_count>
      <attachid>357314</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-02-13 07:18:40 -0800</bug_when>
    <thetext>Comment on attachment 357314
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1136
&gt;&gt;&gt; +    auto response = ResourceResponse(m_response);
&gt;&gt; 
&gt;&gt; I guess we should use ResourceResponse::syntheticRedirectResponse() no?
&gt; 
&gt; Thanks for the review. What I infer from your review is that besides implementation details related to how the protocol upgrade is dealt with, in general lines the patch seems fine. This would mean that the libsoup API is sufficient to implement this in WebKit and it would probably be a good time to merge it upstream while I finish the WebKit implementation.

Not sure about this, since we&apos;re not really synthesizing a redirection. We just want to let the clients know that we&apos;re changing the protocol to HTTPS. We haven&apos;t yet contacted the server, we&apos;re about to do it, but we want clients to know that the URL we&apos;re about to connect to is different.

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1140
&gt;&gt; +    m_client-&gt;willPerformHTTPRedirection(WTFMove(response), WTFMove(request), [this, protectedThis = makeRef(*this)](const ResourceRequest&amp; newRequest) {
&gt; 
&gt; I think we are missing here all other things that are done before a normal redirection. I think we should make m_response the syntheiszed redirect response and simply call continueHTTPRedirection().

This simplifies the code a lot. I&apos;m still unsure that it&apos;s right to treat this as a redirect, but I trust your judgement here.

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1157
&gt;&gt; +        task-&gt;protocolUpgradedViaHSTS(soupMessage);
&gt; 
&gt; You should also check the task state.
&gt; 
&gt; if (task-&gt;state() == State::Canceling || task-&gt;state() == State::Completed || !task-&gt;m_client) {
&gt;         task-&gt;clearRequest();
&gt;         return;
&gt; }

I&apos;m assuming that this should be done before performing the upgrade?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505715</commentid>
    <comment_count>13</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-02-13 07:23:07 -0800</bug_when>
    <thetext>So I&apos;m currently looking into making the HSTS enforcer persistent, as it&apos;s not very useful as it is in the patch without persistency. We&apos;ve added to libsoup a sqlite HSTS enforcer, akin to the sqlite cookie jar. What I&apos;m trying to decide now is what&apos;s the best way to decide where to store the database. If we want clients to be able to able to directly clean the HSTS cache, we would have to add API to set/expose the file location. There&apos;s also the data manager, that I think is what Cocoa is using these days for HSTS as well. Any input on this?

There&apos;s also the question about making this feature runtime configurable, in case not all clients want to use HSTS always.

Basically I need some input in deciding the WK api we will need for this ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505753</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-13 10:23:28 -0800</bug_when>
    <thetext>(In reply to Claudio Saavedra from comment #13)
&gt; So I&apos;m currently looking into making the HSTS enforcer persistent, as it&apos;s
&gt; not very useful as it is in the patch without persistency. We&apos;ve added to
&gt; libsoup a sqlite HSTS enforcer, akin to the sqlite cookie jar. What I&apos;m
&gt; trying to decide now is what&apos;s the best way to decide where to store the
&gt; database. If we want clients to be able to able to directly clean the HSTS
&gt; cache, we would have to add API to set/expose the file location. There&apos;s
&gt; also the data manager, that I think is what Cocoa is using these days for
&gt; HSTS as well. Any input on this?

Hmm....

The cross-platform WebsiteDataStore already integrates with HSTS cache... somehow. But it&apos;s not clear to me what we should do.

Option #1: Our WebKitWebsiteDataManager could expose a new hsts-cache-directory property and webkit_website_data_manager_get_hsts_cache_directory(). When the property is NULL, it should be stored under a subdirectory of the base-storage-directory. We should add a new WEBKIT_WEBSITE_DATA_HSTS_CACHE type to WebKitWebsiteDataTypes, then we can test that it can be cleared using webkit_website_data_manager_remove(). That would make the HSTS cache a normal website data type and fit well with our existing API.

But it seems Apple doesn&apos;t take that approach. E.g. there&apos;s no API in WebsiteDataStoreConfiguration to set HSTS cache directory. There is a WebsiteDataType for HSTS cache, but it&apos;s not clear to me how it&apos;s used. Some more investigation required here.

&gt; There&apos;s also the question about making this feature runtime configurable, in
&gt; case not all clients want to use HSTS always.

You can add a WebKitSetting, following the general pattern for new settings there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557986</commentid>
    <comment_count>15</comment_count>
      <attachid>375425</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-02 10:47:31 -0700</bug_when>
    <thetext>Created attachment 375425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557987</commentid>
    <comment_count>16</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-02 10:50:16 -0700</bug_when>
    <thetext>The patch still misses tests for the new API so it&apos;s not ready for landing, but I would appreciate another round of review as I added most of what was missing:

- Support for persistent HSTS storage.
- API to clean HSTS entries via the website data manager.
- Fixed the redirect handling as suggested by Carlos.

It also depends in yet unreleased libsoup API but I will take care of releasing that before this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558015</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-08-02 11:42:14 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; From https://webkit.org/blog/8146/protecting-against-hsts-abuse/ I see that
&gt; this is similar to Mitigation 2, with the difference that Apple&apos;s Mitigation
&gt; 2 is more limited because it is tied in with the intelligent tracking
&gt; prevention feature. i.e. the HSTS &quot;redirect&quot; should occur unless the
&gt; subresource would be prevented from storing cookies. Any plans for this?
&gt; 
&gt; And any plans for Mitigation 1?

I&apos;d request that the changelog document your solution for both Mitigation 1 and Mitigation 2 to ensure this isn&apos;t going to allow HSTS supercookie abuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558751</commentid>
    <comment_count>18</comment_count>
      <attachid>375615</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-06 02:25:01 -0700</bug_when>
    <thetext>Created attachment 375615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558752</commentid>
    <comment_count>19</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-06 02:27:47 -0700</bug_when>
    <thetext>Updates with regards to the previous version:

- Use GUniqueRefPtr where it makes sense, add definition for SoupHSTSPolicy free function.
- Bumped the libsoup version in jhbuild modulesets to 2.67.91, which has all the required API.
- Implement both mitigations 1 and 2 from Apple as separate methods and use them to decide to disable the HSTS enforcer for a request.

Tests are still missing, but while I work on them, again, review of the implementation would be welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558757</commentid>
    <comment_count>20</comment_count>
      <attachid>375618</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-06 04:04:57 -0700</bug_when>
    <thetext>Created attachment 375618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558768</commentid>
    <comment_count>21</comment_count>
      <attachid>375618</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-06 07:55:32 -0700</bug_when>
    <thetext>Comment on attachment 375618
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:64
&gt; +#if USE(GLIB) // According to r245075 this will eventually move here.

Yep</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559128</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-08-07 08:47:44 -0700</bug_when>
    <thetext>Looks very nice to me.

Carlos Garcia will want to review it before it lands, of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559480</commentid>
    <comment_count>23</comment_count>
      <attachid>375799</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-08 05:51:17 -0700</bug_when>
    <thetext>Created attachment 375799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559481</commentid>
    <comment_count>24</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-08 05:52:49 -0700</bug_when>
    <thetext>OK, now with API tests. I fixed a few things I caught and I think this is ready for a final round of review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563499</commentid>
    <comment_count>25</comment_count>
      <attachid>376885</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-21 08:27:13 -0700</bug_when>
    <thetext>Created attachment 376885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565284</commentid>
    <comment_count>26</comment_count>
      <attachid>376885</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-08-27 00:59:58 -0700</bug_when>
    <thetext>Comment on attachment 376885
Patch

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

&gt; Source/WebCore/platform/network/soup/GUniquePtrSoup.h:36
&gt; +WTF_DEFINE_GPTR_DELETER(SoupHSTSPolicy, soup_hsts_policy_free);

Remove the trailing ;

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:182
&gt; +void SoupNetworkSession::setHSTSPersistentStorage(const CString&amp; directory)
&gt; +{
&gt; +    hstsStorageDirectory() = directory;
&gt; +}

The problem I see with this is that is a global setting, so it will be used for ephemeral sessions too.

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:184
&gt; +void SoupNetworkSession::setupHSTSEnforcer()

So, we could either receive here the session ID and check both hstsStorageDirectory().isNull() || session.isEphemeral() to use a session enforcer, or save the sessionID received in the constructor as a member to check it here.

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:215
&gt; +    for (GList* iter = domains.get(); iter != nullptr; iter = iter-&gt;next) {

iter != nullptr -&gt; iter

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:217
&gt; +        hostNames.add(domain.get());

String::fromUTF8(domain.get())

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:230
&gt; +    if (!soup_session_has_feature(m_soupSession.get(), SOUP_TYPE_HSTS_ENFORCER))
&gt; +        return;
&gt; +
&gt; +    SoupHSTSEnforcer* enforcer = SOUP_HSTS_ENFORCER(soup_session_get_feature(m_soupSession.get(), SOUP_TYPE_HSTS_ENFORCER));

Do we need to check first? can&apos;t we just get the feature and null check to return early?

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:231
&gt; +    for (auto&amp; hostName : hostNames) {

const auto&amp;

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:232
&gt; +        GUniquePtr&lt;SoupHSTSPolicy&gt; policy(soup_hsts_policy_new(hostName.utf8().data(), SOUP_HSTS_POLICY_MAX_AGE_PAST, false));

FALSE

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:246
&gt; +    if (!soup_session_has_feature(m_soupSession.get(), SOUP_TYPE_HSTS_ENFORCER))
&gt; +        return;
&gt; +
&gt; +    SoupHSTSEnforcer* enforcer = SOUP_HSTS_ENFORCER(soup_session_get_feature(m_soupSession.get(), SOUP_TYPE_HSTS_ENFORCER));

SAme here about has + get

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:247
&gt; +    GUniquePtr&lt;GList&gt; policies(soup_hsts_enforcer_get_policies(enforcer, false));

FALSE

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:252
&gt; +            GUniquePtr&lt;SoupHSTSPolicy&gt; newPolicy(soup_hsts_policy_new(policy.get()-&gt;domain, SOUP_HSTS_POLICY_MAX_AGE_PAST, false));

FALSE

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h:116
&gt; +    bool shouldAllowHSTSPolicySetting();

const

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h:117
&gt; +    bool shouldAllowHSTSProtocolUpgrade();

const

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:87
&gt; +    PROP_HSTS_DIRECTORY,

I would call this PROP_HSTS_CACHE_DIRECTORY, and the same for the property name and variable member.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:348
&gt; +     * The directory where the HTTP Strict-Transport-Security (HSTS) database will be stored.

s/database/cache/ the fact that the cache is a db is an impl detail.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:360
&gt; +            static_cast&lt;GParamFlags&gt;(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_DEPRECATED)));

DEPRECATED? :-)

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:645
&gt; + * webkit_website_data_manager_get_hsts_directory:

cache_directory

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:510
&gt; +    // We wait 5 seconds before adding more entries so that we can test the clear API with a time other than zero.
&gt; +    sleep(5);

5 seconds is too long for a test. maybe it&apos;s fine to only test the clear api with 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565672</commentid>
    <comment_count>27</comment_count>
      <attachid>377436</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-28 02:14:20 -0700</bug_when>
    <thetext>Created attachment 377436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565681</commentid>
    <comment_count>28</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-08-28 03:15:56 -0700</bug_when>
    <thetext>Committed r249192: &lt;https://trac.webkit.org/changeset/249192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565682</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-28 03:16:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54783982&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355875</attachid>
            <date>2018-11-28 08:27:38 -0800</date>
            <delta_ts>2018-12-14 07:48:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20181128182737.patch</filename>
            <type>text/plain</type>
            <size>9930</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1MzRmZTQzODkyYjk1
MmJlZDRhNjlkZmRkZTYxODEyNjgyNTBlOS4uZjkwMjYyNTA2MjQxOTM4OGFlYzQ4OTkxNmNjYzY3
MTQ0MWI3YzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTExLTI3ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjUueCBpcyBp
bnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgSFNUUyBzcGVjaWZpY2F0aW9uCisgICAgICAgIGlu
IFNvdXBTZXNzaW9uIHRocm91Z2ggYSBTb3VwU2Vzc2lvbkZlYXR1cmUuICBBZGQgc3VwcG9ydCB0
byB0aGUKKyAgICAgICAgc291cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJl
IHRvIFNvdXBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBhbmQgaGFuZGxpbmcgSFNUUyBwcm90b2Nv
bCB1cGdyYWRlcywgYnkgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZQorICAgICAgICBjaGFuZ2UgZnVy
dGhlciB0byBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZW5mb3JjZXJDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisK
IDIwMTgtMTEtMjYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzODM1Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzdiY2FkODI5
ODlkNGZkOWM5NTY2MDlmNTk1ZWRiMmEwNjYxYzFjNS4uYjg5NWQwMjQ4YzhkNzBmYTRjOGUyYzQ0
NTZlYzQyYjFiOTgwZTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMS0yNyAg
Q2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
W1dQRV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGlic291cCAyLjY1Lngg
aXMgaW50cm9kdWNpbmcgc3VwcG9ydCBmb3IgdGhlIEhTVFMgc3BlY2lmaWNhdGlvbgorICAgICAg
ICBpbiBTb3VwU2Vzc2lvbiB0aHJvdWdoIGEgU291cFNlc3Npb25GZWF0dXJlLiAgQWRkIHN1cHBv
cnQgdG8gdGhlCisgICAgICAgIHNvdXAgbmV0d29yayBiYWNrZW5kIGJ5IGFkZGluZyB0aGUgZmVh
dHVyZSB0byBTb3VwTmV0d29ya1Nlc3Npb24KKyAgICAgICAgYW5kIGhhbmRsaW5nIEhTVFMgcHJv
dG9jb2wgdXBncmFkZXMsIGJ5IHByb3BhZ2F0aW5nIHRoZSBzY2hlbWUKKyAgICAgICAgY2hhbmdl
IGZ1cnRoZXIgdG8gY2xpZW50cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza1NvdXA6Om5vdGlmeVVyaSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmg6CisKIDIwMTgtMTEtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVtZW50cyB1
bmRlciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNjZXNzaWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYzkzY2ViZDFmMmM3MDkx
NDY4MjVlNjc4OTljNjFmYTY3MDNlODU0Ny4uN2ZmZjA2ODQ3YjFiY2ZhNjk4ZmMyY2UxNWMyMzVi
YmZhMTE5ZDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yODEw
LDggKzI4MTAsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lTG9hZFR5cAogICAgICAgICAgICAgQVNTRVJU
KG93bmVyRnJhbWUgfHwgbV9mcmFtZS5pc01haW5GcmFtZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBhZGRTYW1lU2l0ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCBpbml0aWF0b3IpOwot
ICAgICAgICByZXF1ZXN0LnNldElzVG9wU2l0ZShpc01haW5SZXNvdXJjZSAmJiBtX2ZyYW1lLmlz
TWFpbkZyYW1lKCkpOwogICAgIH0KKyAgICByZXF1ZXN0LnNldElzVG9wU2l0ZShpc01haW5SZXNv
dXJjZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCiAgICAgUGFnZSogcGFnZSA9IGZyYW1l
KCkucGFnZSgpOwogICAgIGJvb2wgaGFzU3BlY2lmaWNDYWNoZVBvbGljeSA9IHJlcXVlc3QuY2Fj
aGVQb2xpY3koKSAhPSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNo
ZVBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDljMDJkMmIxY2EzMDhlYmVkNGI5NjU3ZTYyNGYz
NWMwNTJhYjZmODUuLmQ5MTk3Yzc1MWU3ZjVjYTMzN2MxYWY3Yjc4NjA3NjViZTNiZTg3NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtNzAsMTAgKzcwLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpzZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG90aGVyKQogICAgIGlm
IChhdXRvIGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyID0gb3RoZXIuaW5zcGVjdG9y
SW5pdGlhdG9yTm9kZUlkZW50aWZpZXIoKSkKICAgICAgICAgc2V0SW5zcGVjdG9ySW5pdGlhdG9y
Tm9kZUlkZW50aWZpZXIoKmluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyKTsKIAotICAg
IGlmICghb3RoZXIuaXNTYW1lU2l0ZVVuc3BlY2lmaWVkKCkpIHsKKyAgICBpZiAoIW90aGVyLmlz
U2FtZVNpdGVVbnNwZWNpZmllZCgpKQogICAgICAgICBzZXRJc1NhbWVTaXRlKG90aGVyLmlzU2Ft
ZVNpdGUoKSk7Ci0gICAgICAgIHNldElzVG9wU2l0ZShvdGhlci5pc1RvcFNpdGUoKSk7Ci0gICAg
fQorICAgIHNldElzVG9wU2l0ZShvdGhlci5pc1RvcFNpdGUoKSk7CiAKICAgICB1cGRhdGVSZXNv
dXJjZVJlcXVlc3QoKTsKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMgPSBvdGhlci5odHRwSGVhZGVy
RmllbGRzKCkuaXNvbGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDEzZWNi
NWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLmRhODMwZTlhNzU0MjQxNzY0Zjk5
MDQ4ZTcwZjg0NDAwMTJkYzhkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMjYsNiAr
MTI2LDkgQEAgU291cE5ldHdvcmtTZXNzaW9uOjpTb3VwTmV0d29ya1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTb3VwQ29va2llSmFyKgogICAgICAgICBTT1VQX1NFU1NJT05fQURE
X0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfREVDT0RFUiwKICAgICAgICAgU09V
UF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX1NOSUZGRVIs
CiAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfUFJP
WFlfUkVTT0xWRVJfREVGQVVMVCwKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjUsIDEpCisg
ICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfSFNUU19F
TkZPUkNFUiwKKyNlbmRpZgogICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkUsIGphci5n
ZXQoKSwKICAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9USFJFQURfQ09OVEVYVCwgVFJVRSwKICAg
ICAgICAgU09VUF9TRVNTSU9OX1NTTF9VU0VfU1lTVEVNX0NBX0ZJTEUsIFRSVUUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggZDFlOWQ5Y2U1YjI4OWQxNGNjNmMxNjU5M2JmNGFkMDY3ODI3ZTUzYS4u
OWZiYTBlMGVjMGZiZDMxMDAyNDFmM2E0MTM2YTI4MjJiYWRmM2Q5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uaApAQCAtMzksNiArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291
cENvb2tpZUphcjsKIHR5cGVkZWYgc3RydWN0IF9Tb3VwTWVzc2FnZSBTb3VwTWVzc2FnZTsKIHR5
cGVkZWYgc3RydWN0IF9Tb3VwUmVxdWVzdCBTb3VwUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9T
b3VwU2Vzc2lvbiBTb3VwU2Vzc2lvbjsKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjUsIDEp
Cit0eXBlZGVmIHN0cnVjdCBfU291cEhTVFNFbmZvcmNlciBTb3VwSFNUU0VuZm9yY2VyOwordHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBIU1RTUG9saWN5IFNvdXBIU1RTUG9saWN5OworI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGQ2ZDlhZTI0ZDM4Y2U1
MTU3MWM0Y2NmZWZjZGYwOTNmNjgzNzBhNjMuLmQzNTE0M2UyMzJjYmRkOTY1NGExODFhODEyNzRj
YzJlMjViM2IxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE0Niw2ICsxNDYsMTMgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjUsIDEp
CisgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyB0cmFja2luZyBtaXRpZ2F0aW9uLiBEaXNhYmxp
bmcgdGhlIEhTVFMgZW5mb3JjZXIgZm9yIGEgSFRUUFMgcmVxdWVzdCB0aGF0CisgICAgLy8gaXMg
bm90IGEgdG9wbGV2ZWwgZnJhbWUgd2lsbCBwcmV2ZW50IHN1YnJlc291cmNlcyBmcm9tIHNldHRp
bmcgYSBTVFMgdmFsdWUuCisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiaHR0cHMiKSAmJiAhbV9jdXJyZW50UmVxdWVzdC5pc1RvcFNpdGUoKSkKKyAgICAgICAgc291
cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9UWVBFX0hT
VFNfRU5GT1JDRVIpOworI2VuZGlmCisKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBBY2Nl
cHQgaGVhZGVyIGZvciBzdWJyZXNvdXJjZXM7IHNvbWUgc2l0ZXMgd2FudCB0aGlzIHRvIHNlcnZl
IHNvbWUgb2YgdGhlaXIgc3VicmVzb3VyY2VzLgogICAgIGlmICghc291cF9tZXNzYWdlX2hlYWRl
cnNfZ2V0X29uZShzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IikpCiAgICAg
ICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFk
ZXJzLCAiQWNjZXB0IiwgIiovKiIpOwpAQCAtMTc1LDYgKzE4Miw5IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogI2Vs
c2UKICAgICBnX3NpZ25hbF9jb25uZWN0KHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+
KG1fc2Vzc2lvbi5nZXQoKSkuc291cFNlc3Npb24oKSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FM
TEJBQ0socmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCisjaWYgU09VUF9D
SEVDS19WRVJTSU9OKDIsIDY1LCAxKQorICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb3VwTWVzc2Fn
ZS5nZXQoKSwgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyhub3RpZnlVcmkpLCB0aGlzKTsKKyNl
bmRpZgogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCgpCkBAIC0x
MTE3LDYgKzExMjcsMzcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZXF1ZXN0U3RhcnRl
ZENhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2EKIH0KICNlbmRpZgogCisj
aWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY1LCAxKQordm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSAqc291cE1lc3NhZ2UpCit7Cisg
ICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSk7CisgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgIFVSTCByZWRpcmVj
dGVkVVJMID0gVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKHNvdXBNZXNzYWdlKSk7CisgICAgaWYg
KCFyZWRpcmVjdGVkVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIHJlcXVlc3QudXJsKCku
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJlZGlyZWN0ZWRVUkwuc2V0RnJhZ21l
bnRJZGVudGlmaWVyKHJlcXVlc3QudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgIHJl
cXVlc3Quc2V0VVJMKHJlZGlyZWN0ZWRVUkwpOworICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KSB7CisgICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IG1fc3RhdGUg
PT0gU3RhdGU6OkNhbmNlbGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRv
IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OworICAgICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1
ZXN0KHJlcXVlc3QpOworICAgICAgICBjcmVhdGVSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwor
ICAgICAgICBpZiAobV9zb3VwUmVxdWVzdCAmJiBtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQp
IHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICAgICAg
cmVzdW1lKCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpub3RpZnlVcmkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBHUGFyYW1TcGVjICpzcGVj
LCBOZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQoreworICAgIGlmIChzb3VwX3VyaV9nZXRfc2No
ZW1lIChzb3VwX21lc3NhZ2VfZ2V0X3VyaSAoc291cE1lc3NhZ2UpKSA9PSBTT1VQX1VSSV9TQ0hF
TUVfSFRUUFMpCisgICAgICAgIHRhc2stPnByb3RvY29sVXBncmFkZWRWaWFIU1RTKHNvdXBNZXNz
YWdlKTsKK30KKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFN0YXJ0UmVx
dWVzdCgpCiB7CiAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IGQ3MTFjNzkw
YzM3NDNiMmUwMTA4YjQzMTNkMWE4ZTFhMGJlODhlYjAuLjg2N2M2MzA0MDJiZGNlMGI3ZTM2MmJm
M2IwNDdlNzA1YzcwZWM5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTEyLDYgKzExMiwxMCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBO
ZXR3b3JrRGF0YVRhc2tTb3VwKik7CiAjZWxzZQogICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdGFy
dGVkQ2FsbGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSosIFNvdXBTb2NrZXQqLCBOZXR3
b3JrRGF0YVRhc2tTb3VwKik7CisjZW5kaWYKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjUs
IDEpCisgICAgdm9pZCBwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSopOworICAg
IHN0YXRpYyB2b2lkIG5vdGlmeVVyaShTb3VwTWVzc2FnZSosIEdQYXJhbVNwZWMgKiwgTmV0d29y
a0RhdGFUYXNrU291cCopOwogI2VuZGlmCiAgICAgdm9pZCBkaWRTdGFydFJlcXVlc3QoKTsKICAg
ICBzdGF0aWMgdm9pZCByZXN0YXJ0ZWRDYWxsYmFjayhTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRh
VGFza1NvdXAqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357314</attachid>
            <date>2018-12-14 07:48:08 -0800</date>
            <delta_ts>2019-08-02 10:47:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20181214174806.patch</filename>
            <type>text/plain</type>
            <size>9966</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhlNzI0ZGViMDIwNWVh
MDc5ZTRjZDU0MjJlNzYyMGNhNDFjMzZjNC4uZjdmMWQ1MmJkMTA1NGE1MzQ0ODc2MjI2OGMyN2Y1
ZWQxNmQ1NTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTExLTI3ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjUueCBpcyBp
bnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgSFNUUyBzcGVjaWZpY2F0aW9uCisgICAgICAgIGlu
IFNvdXBTZXNzaW9uIHRocm91Z2ggYSBTb3VwU2Vzc2lvbkZlYXR1cmUuICBBZGQgc3VwcG9ydCB0
byB0aGUKKyAgICAgICAgc291cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJl
IHRvIFNvdXBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBhbmQgaGFuZGxpbmcgSFNUUyBwcm90b2Nv
bCB1cGdyYWRlcywgYnkgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZQorICAgICAgICBjaGFuZ2UgZnVy
dGhlciB0byBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisK
IDIwMTgtMTItMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtGcmVlVHlwZV0gUmVtb3ZlIEhhcmZCdXp6RmFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YWM1
MzUzMzI3NjMxYzU2Yzg2ZDMyMjEwYTI2YzdjMzhhMmVmMzY4Li43ZmYyMTMxMTE2ZDJkYWE4YWM1
ZTdiNTE2MWNlNjJlZDhiOTliNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTEx
LTI3ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS11bV1BFXSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIu
NjUueCBpcyBpbnRyb2R1Y2luZyBzdXBwb3J0IGZvciB0aGUgSFNUUyBzcGVjaWZpY2F0aW9uCisg
ICAgICAgIGluIFNvdXBTZXNzaW9uIHRocm91Z2ggYSBTb3VwU2Vzc2lvbkZlYXR1cmUuICBBZGQg
c3VwcG9ydCB0byB0aGUKKyAgICAgICAgc291cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRo
ZSBmZWF0dXJlIHRvIFNvdXBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBhbmQgaGFuZGxpbmcgSFNU
UyBwcm90b2NvbCB1cGdyYWRlcywgYnkgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZQorICAgICAgICBj
aGFuZ2UgZnVydGhlciB0byBjbGllbnRzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a1NvdXA6OnByb3RvY29sVXBncmFkZWRWaWFIU1RTKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaDoKKwogMjAxOC0xMi0xMiAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFttZXRhXVtXZWJLaXRdIFJlbW92ZSB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZSBhbmQgV2ViS2l0IGluIHRoZSBnbG9iYWwgc2NvcGUgZm9y
IHVuaWZpZWQgc291cmNlIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggODMzNjUyMmE2MTA2MjhiODRlM2RkMTc5NDYwOWJjZjJlYzEyZmIxMS4uZmNlOGEwZmJk
YTA4MmVlNGVmNGNhZWIxODYzMGM1NTRjY2Y1NjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yODEwLDggKzI4MTAsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjphZGRF
eHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lTG9hZFR5
cAogICAgICAgICAgICAgQVNTRVJUKG93bmVyRnJhbWUgfHwgbV9mcmFtZS5pc01haW5GcmFtZSgp
KTsKICAgICAgICAgfQogICAgICAgICBhZGRTYW1lU2l0ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChy
ZXF1ZXN0LCBpbml0aWF0b3IpOwotICAgICAgICByZXF1ZXN0LnNldElzVG9wU2l0ZShpc01haW5S
ZXNvdXJjZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogICAgIH0KKyAgICByZXF1ZXN0LnNl
dElzVG9wU2l0ZShpc01haW5SZXNvdXJjZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCiAg
ICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwogICAgIGJvb2wgaGFzU3BlY2lmaWNDYWNo
ZVBvbGljeSA9IHJlcXVlc3QuY2FjaGVQb2xpY3koKSAhPSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDYyNWFjNTFm
N2UzOWMxOWUzMmZiY2I1MmQ2MmE3NGZmZWNjMWIyNzMuLmQ1NDBmNDRjM2JkMjk0NDQwOGU2N2Rj
NTIyN2E0N2VjMzQxYzA1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNzAsMTAgKzcwLDkgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIG90aGVyKQogICAgIGlmIChhdXRvIGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlm
aWVyID0gb3RoZXIuaW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIoKSkKICAgICAgICAg
c2V0SW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIoKmluc3BlY3RvckluaXRpYXRvck5v
ZGVJZGVudGlmaWVyKTsKIAotICAgIGlmICghb3RoZXIuaXNTYW1lU2l0ZVVuc3BlY2lmaWVkKCkp
IHsKKyAgICBpZiAoIW90aGVyLmlzU2FtZVNpdGVVbnNwZWNpZmllZCgpKQogICAgICAgICBzZXRJ
c1NhbWVTaXRlKG90aGVyLmlzU2FtZVNpdGUoKSk7Ci0gICAgICAgIHNldElzVG9wU2l0ZShvdGhl
ci5pc1RvcFNpdGUoKSk7Ci0gICAgfQorICAgIHNldElzVG9wU2l0ZShvdGhlci5pc1RvcFNpdGUo
KSk7CiAKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKICAgICBtX2h0dHBIZWFkZXJGaWVs
ZHMgPSBvdGhlci5odHRwSGVhZGVyRmllbGRzKCkuaXNvbGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IGYyNGUyNjVjOTZlYWZiNWRlNDM3MWExZDIyNjM4Y2M3MThlNjk1MTYu
LjQzMTU3MDYwNDI0Yzk1ZDM2YTdmNjUwODZhZTkxYzZlYmNkNGIxOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC0xMjYsNiArMTI2LDkgQEAgU291cE5ldHdvcmtTZXNzaW9uOjpTb3VwTmV0
d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTb3VwQ29va2llSmFyKgogICAg
ICAgICBTT1VQX1NFU1NJT05fVElNRU9VVCwgMCwKICAgICAgICAgU09VUF9TRVNTSU9OX0lETEVf
VElNRU9VVCwgMCwKICAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNP
VVBfVFlQRV9DT05URU5UX1NOSUZGRVIsCisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY1LCAx
KQorICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0hT
VFNfRU5GT1JDRVIsCisjZW5kaWYKICAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFLCBq
YXIuZ2V0KCksCiAgICAgICAgIG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5kZXggNWI1
ZmY3OTc3MzQ3MTUxOTYxYTQ1YzM0OTdlYTJmNTUxMzQ0YjFhYS4uMDhkZjU2MjNlNjFmMjIxOTFl
ZTdmNGQ0YzFkNzNmNTc0NDA5MjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8bGlic291cC9zb3VwLXZlcnNpb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CkBAIC0zOSw2ICs0MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3Vw
Q29va2llSmFyOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBNZXNzYWdlIFNvdXBNZXNzYWdlOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX1Nv
dXBTZXNzaW9uIFNvdXBTZXNzaW9uOworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NSwgMSkK
K3R5cGVkZWYgc3RydWN0IF9Tb3VwSFNUU0VuZm9yY2VyIFNvdXBIU1RTRW5mb3JjZXI7Cit0eXBl
ZGVmIHN0cnVjdCBfU291cEhTVFNQb2xpY3kgU291cEhTVFNQb2xpY3k7CisjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggMGI3YjYzNTBhMjZmNDZi
OWNkZTA1ZDFkMDIzMzExZDRkYTgxNmFmMy4uNTg0YzU3ZjU3OGJmNzYyNTJmNDUzN2I2MzVlZTcy
ZTExNDRkNmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICNlbmRpZgogICAgIH0KIAorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NSwgMSkK
KyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIHRyYWNraW5nIG1pdGlnYXRpb24uIERpc2FibGlu
ZyB0aGUgSFNUUyBlbmZvcmNlciBmb3IgYSBIVFRQUyByZXF1ZXN0IHRoYXQKKyAgICAvLyBpcyBu
b3QgYSB0b3BsZXZlbCBmcmFtZSB3aWxsIHByZXZlbnQgc3VicmVzb3VyY2VzIGZyb20gc2V0dGlu
ZyBhIFNUUyB2YWx1ZS4KKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpICYmICFtX2N1cnJlbnRSZXF1ZXN0LmlzVG9wU2l0ZSgpKQorICAgICAgICBzb3Vw
X21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJlKHNvdXBNZXNzYWdlLmdldCgpLCBTT1VQX1RZUEVfSFNU
U19FTkZPUkNFUik7CisgICAgZWxzZQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNvdXBfc2Vz
c2lvbl9nZXRfZmVhdHVyZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPihtX3Nlc3Np
b24uZ2V0KCkpLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSwgImhzdHMt
ZW5mb3JjZWQiLCBHX0NBTExCQUNLKGhzdHNFbmZvcmNlZCksIHRoaXMpOworI2VuZGlmCisKICAg
ICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBBY2NlcHQgaGVhZGVyIGZvciBzdWJyZXNvdXJjZXM7
IHNvbWUgc2l0ZXMgd2FudCB0aGlzIHRvIHNlcnZlIHNvbWUgb2YgdGhlaXIgc3VicmVzb3VyY2Vz
LgogICAgIGlmICghc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShzb3VwTWVzc2FnZS0+cmVx
dWVzdF9oZWFkZXJzLCAiQWNjZXB0IikpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2Fw
cGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IiwgIiovKiIpOwpAQCAt
MTk4LDYgKzIwNywxMCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCgp
CiAgICAgICAgIG1fc291cE1lc3NhZ2UgPSBudWxscHRyOwogICAgIH0KICAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3Vw
Jj4obV9zZXNzaW9uLmdldCgpKS5zb3VwU2Vzc2lvbigpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAw
LCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKKworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigy
LCA2NSwgMSkKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEoc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KG1fc2Vz
c2lvbi5nZXQoKSkuc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpLCB0aGlz
KTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnJlc3VtZSgpCkBAIC0x
MTE3LDYgKzExMzAsMzQgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZXF1ZXN0U3RhcnRl
ZENhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2EKIH0KICNlbmRpZgogCisj
aWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY1LCAxKQordm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCit7Cisg
ICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSk7CisgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgIFVSTCByZWRpcmVj
dGVkVVJMID0gc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKHNvdXBNZXNzYWdlKSk7
CisgICAgcmVxdWVzdC5zZXRVUkwocmVkaXJlY3RlZFVSTCk7CisgICAgbV9jbGllbnQtPndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IG5ld1JlcXVlc3Q7CisgICAgICAgIGFwcGx5QXV0aGVudGljYXRp
b25Ub1JlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIGNyZWF0ZVJlcXVlc3QoV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgICAgIGlmIChtX3NvdXBSZXF1ZXN0ICYmIG1fc3RhdGUgIT0gU3RhdGU6OlN1
c3BlbmRlZCkgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAg
ICAgICAgICByZXN1bWUoKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3NhZ2Uq
IHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQoreworICAgIGlmIChzb3Vw
TWVzc2FnZSA9PSB0YXNrLT5tX3NvdXBNZXNzYWdlLmdldCgpKQorICAgICAgICB0YXNrLT5wcm90
b2NvbFVwZ3JhZGVkVmlhSFNUUyhzb3VwTWVzc2FnZSk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRTdGFydFJlcXVlc3QoKQogewogICAgIG1fbmV0d29ya0xvYWRN
ZXRyaWNzLnJlcXVlc3RTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuaAppbmRleCBkNzExYzc5MGMzNzQzYjJlMDEwOGI0MzEzZDFhOGUxYTBiZTg4
ZWIwLi42OTkyODBjYzYyYTRmM2VlOTY3M2ViMDBlZjg5Zjg2NTUwYTA2Y2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmgKQEAgLTExMiw2ICsxMTIsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzdGFy
dGluZ0NhbGxiYWNrKFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogI2Vsc2UK
ICAgICBzdGF0aWMgdm9pZCByZXF1ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291
cE1lc3NhZ2UqLCBTb3VwU29ja2V0KiwgTmV0d29ya0RhdGFUYXNrU291cCopOworI2VuZGlmCisj
aWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY1LCAxKQorICAgIHZvaWQgcHJvdG9jb2xVcGdyYWRl
ZFZpYUhTVFMoU291cE1lc3NhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBoc3RzRW5mb3JjZWQoU291
cEhTVFNFbmZvcmNlciosIFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogI2Vu
ZGlmCiAgICAgdm9pZCBkaWRTdGFydFJlcXVlc3QoKTsKICAgICBzdGF0aWMgdm9pZCByZXN0YXJ0
ZWRDYWxsYmFjayhTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375425</attachid>
            <date>2019-08-02 10:47:31 -0700</date>
            <delta_ts>2019-08-06 02:24:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190802204730.patch</filename>
            <type>text/plain</type>
            <size>42633</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQyYTI3YjJiZTlmYWE3
YjkxMTExYzE4ZmIxOTJjNmMxNzBlMTQwMC4uOTEzZWQ4MWIxMDIwZWExZjIyMmFkZGE4YmFiMjkz
YWFhOTVlN2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA4LTAyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0
d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3Vw
TmV0d29ya1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhv
c3ROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNU
U0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmg6CisKIDIwMTktMDgtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBET01XaW5kb3cgcHJvcGVydGllcyBtYXkgZ2V0IEdDJ2QgYmVmb3JlIHRoZWlyIFdp
bmRvdyBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2FiN2Y5NzcwMzI0M2IyZDI0NmJkM2U3YTAxNzQ5YTM0
MGQyNmQ0Mi4uZTJkODhmMTlmOTgzMGQzNTA0NWQzYzNiNWIxYzBkM2IwMWMxNzA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MyBAQAorMjAxOS0wOC0wMiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2
ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMgZm9y
IHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbGlic291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBvcnQg
dmlhIGEgU291cFNlc3Npb25GZWF0dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUgc291
cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbiBhbmQgaGFuZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkKKyAg
ICAgICAgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRzLiBU
aGlzIHBhdGNoIGFkZHMKKyAgICAgICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFsbHks
IGJ1dCBpdCBzdGlsbCBwb3NzaWJsZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3BlcnR5
IHRvIHRoZSB3ZWIgY29udGV4dCBjbGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0aW9u
YWxseSwgYWRkIEFQSSB0byB0aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNpZnkK
KyAgICAgICAgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZlZC4g
SWYgdGhlIGRpcmVjdG9yeQorICAgICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1hbmFn
ZXIgaXMgZXBoZW1lcmFsLCB1c2UgYQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5IG9u
bHkgSFNUUyBlbmZvcmNlci4KKworICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0aG9k
cyBuZWVkZWQgdG8gY2xlYW4tdXAgYW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVzIGZy
b20gdGhlIHN0b3JhZ2UgYW5kIGV4cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAgIE1p
bmlCcm93c2VyJ3MgYWJvdXQ6ZGF0YS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFU
YXNrU291cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpjbGVhclJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpwcm90b2NvbFVwZ3Jh
ZGVkVmlhSFNUUyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmhzdHNF
bmZvcmNlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2Fj
aGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJI
U1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRI
U1RTRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChy
ZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyk6CisgICAgICAgICh0b1dlYktpdFdlYnNp
dGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkpOgorICAgICAgICAodG9XZWJzaXRlRGF0
YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6aHN0c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnkp
OgorCiAyMDE5LTA4LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBhbmQgTkVX
UyBmb3IgMi4yNS40IHJlbGVhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMTI2YjAzZWI0
MTc1YjA3YTE2YWMxODU5MjcwNTBhMDk5OGNhODM4OS4uN2RhOTI0NjM4M2MwZjU5ODMyMzdlNDdi
YjMxMzgxNzdiMTViZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTU5LDYgKzU5LDEy
IEBAIHN0YXRpYyBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmIHByb3h5U2V0dGluZ3MoKQogICAg
IHJldHVybiBzZXR0aW5ncy5nZXQoKTsKIH0KIAorc3RhdGljIENTdHJpbmcmIGhzdHNTdG9yYWdl
RGlyZWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1N0cmluZz4gZGlyZWN0
b3J5OworICAgIHJldHVybiBkaXJlY3RvcnkuZ2V0KCk7Cit9CisKICNpZiAhTE9HX0RJU0FCTEVE
CiBpbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNvdXBMb2dn
ZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2ludGVyKQog
ewpAQCAtMTQxLDYgKzE0Nyw3IEBAIFNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBpZiAocHJveHlTZXR0aW5ncygpLm1v
ZGUgIT0gU291cE5ldHdvcmtQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQogICAgICAgICBz
ZXR1cFByb3h5KCk7CiAgICAgc2V0dXBMb2dnZXIoKTsKKyAgICBzZXR1cEhTVFNFbmZvcmNlcigp
OwogfQogCiBTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0d29ya1Nlc3Npb24oKSA9IGRlZmF1
bHQ7CkBAIC0xNjksNiArMTc2LDg4IEBAIFNvdXBDb29raWVKYXIqIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6Y29va2llSmFyKCkgY29uc3QKICAgICByZXR1cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vz
c2lvbl9nZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfQ09PS0lFX0pB
UikpOwogfQogCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFNUU1BlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IENTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBoc3RzU3RvcmFnZURpcmVjdG9y
eSgpID0gZGlyZWN0b3J5OworfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIU1RT
RW5mb3JjZXIoKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICBpZiAo
c291cF9zZXNzaW9uX2hhc19mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9I
U1RTX0VORk9SQ0VSKSkKKyAgICAgICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlX2J5X3R5
cGUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpOworCisgICAg
U291cEhTVFNFbmZvcmNlciogZW5mb3JjZXI7CisgICAgaWYgKGhzdHNTdG9yYWdlRGlyZWN0b3J5
KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDcmVhdGluZyBlcGhlbWVy
YWwgZW5mb3JjZXIuXG4iKTsKKyAgICAgICAgZW5mb3JjZXIgPSBzb3VwX2hzdHNfZW5mb3JjZXJf
bmV3KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ1N0cmluZyBzdG9yYWdlUGF0aCA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihoc3RzU3RvcmFnZURpcmVjdG9yeSgpLmRh
dGEoKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKHN0b3JhZ2VQYXRoLmRhdGEoKSwgImhzdHMtc3RvcmFnZS5zcWxpdGUiLCBudWxscHRyKSk7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3JlYXRpbmcgREIgSFNUUyBlbmZvcmNlciwgZmls
ZTogJXNcbiIsIGRiRmlsZW5hbWUuZ2V0KCkpOworICAgICAgICBlbmZvcmNlciA9IHNvdXBfaHN0
c19lbmZvcmNlcl9kYl9uZXcoZGJGaWxlbmFtZS5nZXQoKSk7CisgICAgfQorICAgIHNvdXBfc2Vz
c2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShlbmZvcmNlcikpOworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpnZXRI
b3N0TmFtZXNXaXRoSFNUU0NhY2hlKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdE5hbWVzKQoreworI2lm
IFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTApCisgICAgaWYgKCFzb3VwX3Nlc3Npb25faGFz
X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBTb3VwSFNUU0VuZm9yY2VyKiBlbmZvcmNlciA9IFNPVVBf
SFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBkb21h
aW5zKHNvdXBfaHN0c19lbmZvcmNlcl9nZXRfZG9tYWlucyhlbmZvcmNlcikpOworICAgIGZvciAo
R0xpc3QqIGl0ZXIgPSBkb21haW5zLmdldCgpOyBpdGVyICE9IG51bGxwdHI7IGl0ZXIgPSBpdGVy
LT5uZXh0KSB7CisgICAgICAgIGhvc3ROYW1lcy5hZGQoU3RyaW5nKHN0YXRpY19jYXN0PGNoYXIq
PihpdGVyLT5kYXRhKSkpOworICAgICAgICBnX2ZyZWUoaXRlci0+ZGF0YSk7CisgICAgfQorI2Vs
aWYKKyAgICBVTlVTRURfUEFSQU0oaG9zdE5hbWVzKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBob3N0TmFtZXMpCit7CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQor
ICAgIGlmICghc291cF9zZXNzaW9uX2hhc19mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNP
VVBfVFlQRV9IU1RTX0VORk9SQ0VSKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cEhTVFNF
bmZvcmNlciogZW5mb3JjZXIgPSBTT1VQX0hTVFNfRU5GT1JDRVIoc291cF9zZXNzaW9uX2dldF9m
ZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSk7Cisg
ICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykgeworICAgICAgICBTb3VwSFNUU1Bv
bGljeSogcG9saWN5ID0gc291cF9oc3RzX3BvbGljeV9uZXcoaG9zdE5hbWUudXRmOCgpLmRhdGEo
KSwgU09VUF9IU1RTX1BPTElDWV9NQVhfQUdFX1BBU1QsIGZhbHNlKTsKKyAgICAgICAgc291cF9o
c3RzX2VuZm9yY2VyX3NldF9wb2xpY3koZW5mb3JjZXIsIHBvbGljeSk7CisgICAgICAgIHNvdXBf
aHN0c19wb2xpY3lfZnJlZShwb2xpY3kpOworICAgIH0KKyNlbGlmCisgICAgVU5VU0VEX1BBUkFN
KGhvc3ROYW1lcyk7CisjZW5kaWYKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFy
SFNUU0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisjaWYgU09VUF9DSEVDS19WRVJT
SU9OKDIsIDY3LCA5MCkKKyAgICBpZiAoIXNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBT
ZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHJldHVybjsK
KworICAgIFNvdXBIU1RTRW5mb3JjZXIqIGVuZm9yY2VyID0gU09VUF9IU1RTX0VORk9SQ0VSKHNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNU
U19FTkZPUkNFUikpOworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHBvbGljaWVzKHNvdXBfaHN0c19l
bmZvcmNlcl9hbGxfcG9saWNpZXMoZW5mb3JjZXIpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0g
cG9saWNpZXMuZ2V0KCk7IGl0ZXIgIT0gbnVsbHB0cjsgaXRlciA9IGl0ZXItPm5leHQpIHsKKyAg
ICAgICAgYXV0byogcG9saWN5ID0gc3RhdGljX2Nhc3Q8U291cEhTVFNQb2xpY3kqPihpdGVyLT5k
YXRhKTsKKyAgICAgICAgYXV0byBtb2RpZmllZCA9IHNvdXBfZGF0ZV90b190aW1lX3QocG9saWN5
LT5leHBpcmVzKSAtIHBvbGljeS0+bWF4X2FnZTsKKyAgICAgICAgaWYgKG1vZGlmaWVkID49IG1v
ZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpIHsKKyAgICAgICAgICAg
IGF1dG8qIG5ld1BvbGljeSA9IHNvdXBfaHN0c19wb2xpY3lfbmV3KHBvbGljeS0+ZG9tYWluLCBT
T1VQX0hTVFNfUE9MSUNZX01BWF9BR0VfUEFTVCwgZmFsc2UpOworICAgICAgICAgICAgc291cF9o
c3RzX2VuZm9yY2VyX3NldF9wb2xpY3koZW5mb3JjZXIsIG5ld1BvbGljeSk7CisgICAgICAgICAg
ICBzb3VwX2hzdHNfcG9saWN5X2ZyZWUobmV3UG9saWN5KTsKKyAgICAgICAgfQorICAgICAgICBz
b3VwX2hzdHNfcG9saWN5X2ZyZWUocG9saWN5KTsKKyAgICB9CisjZWxpZgorICAgIFVOVVNFRF9Q
QVJBTShtb2RpZmllZFNpbmNlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc3Ry
aW5nSXNOdW1lcmljKGNvbnN0IGNoYXIqIHN0cikKIHsKICAgICB3aGlsZSAoKnN0cikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IDVlMzJkMzFhZDRmZGEwNzc5YTIxZTE2MzI4NzgzNzViYmY4Y2E1
NDguLmNhNjMwMzIwYThhNWZlZDU1YTVhNGQ3NmNhMTMyYTU4OWI3MzliMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29va2llSmFy
KFNvdXBDb29raWVKYXIqKTsKICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdDsK
IAorICAgIHN0YXRpYyB2b2lkIHNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBDU3RyaW5n
JiBoc3RzU3RvcmFnZURpcmVjdG9yeSk7CisgICAgdm9pZCBzZXR1cEhTVFNFbmZvcmNlcigpOwor
CiAgICAgc3RhdGljIHZvaWQgY2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURp
cmVjdG9yeSk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcm94eVNldHRpbmdzKGNvbnN0IFNvdXBO
ZXR3b3JrUHJveHlTZXR0aW5ncyYpOwpAQCAtNzIsNiArNzUsMTAgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwogICAgIHZvaWQg
c2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKIAorICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZShIYXNoU2V0PFN0cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3RO
YW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2Fs
bFRpbWUpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBMb2dnZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhY2Q5NTUx
YzdkMGU0Y2NmYzk1Y2IwZGRmODdlNGY2OGMwZDY3N2RmLi4wMTU2NjA1NjFmMGI1Njk0YTBlMDM1
OGE0ZWQxNmYyMDU5NzEwODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXQKICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUp
OwpAQCAtMTM4OSw3ICsxMzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAo
IXNlc3Npb25JRC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgICAgICBjbGVhckhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBt
b2RpZmllZFNpbmNlKTsKQEAgLTE0OTEsNyArMTQ5MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvCiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoY29va2llSG9zdE5hbWVzKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dp
dGhIU1RTVG9EZWxldGU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZ2V0SG9z
dE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKTsKQEAgLTE4NjIsNyArMTg2Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
Z2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
CiAgICAgfQogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxl
dGU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQ
KQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNU
U0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNX
aXRoSFNUU0NhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA2MDUxMTJjNzc1OTRmN2FiZTUxZTA3YmY5N2U3N2Y1ZDhjYjNjMjkzLi42
NDg1MTAxZGFmODk2YWU1ZWM1YmMxNWUzMjNmOTNmYTY0YzYyZTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xOTQsMTAgKzE5NCwxMiBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OworICAgIGJvb2wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7IH0KKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICB2b2lkIGdldEhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJp
bmc+Jik7CiAgICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2b2lkIGNs
ZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UpOwotICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1p
bmF0aW9uT25TeXN0ZW1DaGFuZ2U7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggODdlODViNTVlOTFlYzY5NmFjMTViMWM1ZjFhMTEzNTFhM2UyNmFiNy4uM2VmZTI2MmQz
MDI4MTM5MmNhNzcyMGFlODVlYmZhNDVmMDlmZTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAt
NTQsNiArNTQsNyBAQCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpOZXR3b3JrRGF0YVRhc2tTb3VwKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhcwogICAgICwgbV9zaG91bGRDb250
ZW50U25pZmYoc2hvdWxkQ29udGVudFNuaWZmKQogICAgICwgbV90aW1lb3V0U291cmNlKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJk5ldHdvcmtEYXRhVGFza1NvdXA6OnRpbWVvdXRGaXJlZCkKIHsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIkNyZWF0aW5nIE5ldHdvcmtEYXRhVGFza1NvdXAgZm9yICVz
XG4iLCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIG1fc2Vzc2lvbi0+cmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soKnRoaXMpOwogICAgIGlm
IChtX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQ3LDYgKzE0OCwxNSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICNlbmRpZgogICAgIH0KIAorI2lmIFNPVVBf
Q0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIHRyYWNr
aW5nIG1pdGlnYXRpb24uIERpc2FibGluZyB0aGUgSFNUUyBlbmZvcmNlciBmb3IgYSBIVFRQUyBy
ZXF1ZXN0IHRoYXQKKyAgICAvLyBpcyBub3QgYSB0b3BsZXZlbCBmcmFtZSB3aWxsIHByZXZlbnQg
c3VicmVzb3VyY2VzIGZyb20gc2V0dGluZyBhIFNUUyB2YWx1ZS4KKyAgICBpZiAobV9jdXJyZW50
UmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmICFpc1RvcExldmVsTmF2aWdhdGlv
bigpKQorICAgICAgICBzb3VwX21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJlKHNvdXBNZXNzYWdlLmdl
dCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUik7CisgICAgZWxzZQorICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfSFNUU19FTkZP
UkNFUiksICJoc3RzLWVuZm9yY2VkIiwgR19DQUxMQkFDSyhoc3RzRW5mb3JjZWQpLCB0aGlzKTsK
KyNlbmRpZgorCiAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gQWNjZXB0IGhlYWRlciBmb3Ig
c3VicmVzb3VyY2VzOyBzb21lIHNpdGVzIHdhbnQgdGhpcyB0byBzZXJ2ZSBzb21lIG9mIHRoZWly
IHN1YnJlc291cmNlcy4KICAgICBpZiAoIXNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoc291
cE1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIpKQogICAgICAgICBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIs
ICIqLyoiKTsKQEAgLTE5Miw4ICsyMDIsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpj
bGVhclJlcXVlc3QoKQogICAgICAgICAgICAgc291cF9zZXNzaW9uX2NhbmNlbF9tZXNzYWdlKHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCks
IG1fc291cE1lc3NhZ2UuZ2V0KCksIFNPVVBfU1RBVFVTX0NBTkNFTExFRCk7CiAgICAgICAgIG1f
c291cE1lc3NhZ2UgPSBudWxscHRyOwogICAgIH0KLSAgICBpZiAobV9zZXNzaW9uKQorICAgIGlm
IChtX3Nlc3Npb24pIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRj
aGVkKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNz
aW9uKCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMp
OworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzdGF0aWNf
Y2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBTT1VQ
X1RZUEVfSFNUU19FTkZPUkNFUiksIHRoaXMpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnJlc3VtZSgpCkBAIC0xMDYwLDYgKzEwNzQsMjcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpzdGFydGluZ0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwgTmV0d29ya0RhdGEKICAgICB0YXNrLT5kaWRTdGFydFJlcXVlc3QoKTsKIH0KIAorI2lm
IFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQoreworICAg
IGZwcmludGYoc3RkZXJyLCAicHJvdG9jb2wgdXBncmFkaW5nIGZvcjogJXNcbiIsIG1fY3VycmVu
dFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9yZXNwb25zZSA9
IFJlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UobV9jdXJyZW50UmVx
dWVzdC51cmwoKSwgc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKHNvdXBNZXNzYWdl
KSkpOworICAgIGNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCk7Cit9CisKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKFNvdXBIU1RTRW5mb3JjZXIqLCBTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2spCit7CisgICAgZnByaW50Zihz
dGRlcnIsICJIU1RTIGVuZm9yY2VkIGZvcjogJXNcbiIsIHRhc2stPm1fY3VycmVudFJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKHRhc2stPnN0YXRlKCkgPT0g
U3RhdGU6OkNhbmNlbGluZyB8fCB0YXNrLT5zdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwg
IXRhc2stPm1fY2xpZW50KSB7CisgICAgICAgIHRhc2stPmNsZWFyUmVxdWVzdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNvdXBNZXNzYWdlID09IHRhc2stPm1fc291cE1l
c3NhZ2UuZ2V0KCkpCisgICAgICAgIHRhc2stPnByb3RvY29sVXBncmFkZWRWaWFIU1RTKHNvdXBN
ZXNzYWdlKTsKK30KKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFN0YXJ0
UmVxdWVzdCgpCiB7CiAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IGFkMzA2
M2Q2YjcyNWZhZjhiYTE5NzM4YzNhYjMxODU3MGRmMDZmMTAuLmU5YmRjNDRiODMzMTY4OTlhMWFk
ZjU2OTRhOGFkN2M4Y2U3NzY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTExLDYgKzExMSwxMCBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2Uq
LCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CiAjZWxzZQogICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RT
dGFydGVkQ2FsbGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSosIFNvdXBTb2NrZXQqLCBO
ZXR3b3JrRGF0YVRhc2tTb3VwKik7CisjZW5kaWYKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwg
NjcsIDApCisgICAgdm9pZCBwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSopOwor
ICAgIHN0YXRpYyB2b2lkIGhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3Nh
Z2UqLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CiAjZW5kaWYKICAgICB2b2lkIGRpZFN0YXJ0UmVx
dWVzdCgpOwogICAgIHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiwg
TmV0d29ya0RhdGFUYXNrU291cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA4M2MyZjI4ZWE1Yzcw
MzRkYWE3ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li44ZTNkNDg1MmUwODA3YTNmOWIwMTQ1ZDc4Y2Ji
NTQ1ZTFlZThlOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtOTUsNiArOTUsMjQgQEAgc3RhdGlj
IENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1
YWdlcykKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1l
cykKK3sKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAg
ICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5nZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hl
KGhvc3ROYW1lcyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzKQoreworICAgIGNvbnN0IGF1dG8qIHNl
c3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihz
dG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vz
c2lvbigpLmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGNv
bnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3
b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIHNlc3Npb24tPnNv
dXBOZXR3b3JrU2Vzc2lvbigpLmNsZWFySFNUU0NhY2hlKG1vZGlmaWVkU2luY2UpOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQogewogICAgIGF1dG8gYWNjZXB0TGFuZ3VhZ2VzID0g
YnVpbGRBY2NlcHRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKQEAgLTEyOSw2ICsxNDcsMTIgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5n
ZWQocGFyYW1ldGVycy5sYW5ndWFnZXMpOwogCiAgICAgc2V0SWdub3JlVExTRXJyb3JzKHBhcmFt
ZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKKworICAgIGlmICghcGFyYW1ldGVycy5oc3RzU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFNU
U1BlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkudXRmOCgp
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oY29uc3QgYXV0byYgc2Vzc2lvbikgewor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBOZXR3b3JrU2Vzc2lvblNvdXAmPihzZXNzaW9uKS5z
b3VwTmV0d29ya1Nlc3Npb24oKS5zZXR1cEhTVFNFbmZvcmNlcigpOworICAgIH0pOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
OWM5YTQzYjczYzQzZGQ2ZDJiMzJiN2U4NjBkODVlNjFiYTgxMGJmMi4uYjEyY2YwZDEzYjhmZmVm
MDg2ZjM3YzE0NjNjMzM4YmZiYjlhZDU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02Niw2ICs2Niw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdEhTVFNEaXJlY3RvcnkoKTsKKyNlbmRpZgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwCmluZGV4IDI1MjU4M2M1ZWM5YzQ0ZDljYjliMjc2ZGVmNjUzNjA3OTI3
ODU3N2YuLjVkM2Q5NzhkY2RhNTY5YzRkN2ZjZjViYzZkYTEwZDg4ZjQzNjNmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZ
IEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiKTsKIH0KIAorV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJ
Ul9TRVBBUkFUT1JfUyk7Cit9CisKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
YmZjNTY3Y2VkNWJiMTcwMWQzYWM5Mjc2N2FlYmFhNDJkYjJjMzk3YS4uZTk1YTcyMzRmNGIxODI4
N2Y3ZGEzOTNhMjVmNDg5OTkyZTU5MzU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM0MCw2ICszNDAsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0
KQogICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2Fj
aGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2Nh
Y2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDdj
OTdlMGIxYjI0YTFiM2E2YWEyMTMzZjg5NGExZThhNzhlMDAzOWQuLmRkOGZjZGY5OWZlYTdkMDNm
ZTYxZjNjNzRkY2Q4NDdjYmE1ZjY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAKQEAgLTczLDYgKzczLDcgQEAg
c3RhdGljIGJvb2wgcmVjb3JkQ29udGFpbnNTdXBwb3J0ZWREYXRhVHlwZXMoY29uc3QgV2Vic2l0
ZURhdGFSZWNvcmQmIHJlY29yZCkKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzLAogICAgICAgICBX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywKKyAgICAgICAgV2Vic2l0ZURhdGFU
eXBlOjpIU1RTQ2FjaGUsCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAg
IFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSwKICNlbmRpZgpAQCAtOTgsNiArOTksOCBAQCBz
dGF0aWMgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyB0b1dlYktpdFdlYnNpdGVEYXRhVHlwZXMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZQogICAgICAgICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VC
U0lURV9EQVRBX1dFQlNRTF9EQVRBQkFTRVM7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0g
V0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTOworICAgIGlmICh0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIHJldHVyblZhbHVl
IHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRTsKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQbHVn
SW5EYXRhKSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVH
SU5fREFUQTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4IGMwZjkxY2M1NmVhNTI0NDg5
YTI2YThhMTRlODU4NGIyYWI0OWU2NGUuLmI5MzdkN2ZiYmYzNTE0MDdiYmI5YjA4MWEyZmRkNTlh
NDZjYjMxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtODQsNiArODQsNyBAQCBl
bnVtIHsKICAgICBQUk9QX0FQUExJQ0FUSU9OX0NBQ0hFX0RJUkVDVE9SWSwKICAgICBQUk9QX0lO
REVYRUREQl9ESVJFQ1RPUlksCiAgICAgUFJPUF9XRUJTUUxfRElSRUNUT1JZLAorICAgIFBST1Bf
SFNUU19ESVJFQ1RPUlksCiAgICAgUFJPUF9JU19FUEhFTUVSQUwKIH07CiAKQEAgLTEwMSw2ICsx
MDIsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRy
PGNoYXI+IGluZGV4ZWREQkRpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERp
cmVjdG9yeTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IEhTVFNEaXJlY3Rvcnk7CiAKICAgICBHUmVm
UHRyPFdlYktpdENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFnZXI7CiAgICAgVmVjdG9yPFdlYlBy
b2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xzOwpAQCAtMTM2LDYgKzEzOCw5IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElELCBHCiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KG1hbmFnZXIpKTsKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9IU1RTX0RJUkVDVE9SWToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZh
bHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KG1hbmFn
ZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTcwLDYgKzE3NSw5
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjCiAgICAgY2FzZSBQUk9QX1dFQlNRTF9ESVJFQ1RP
Ulk6CiAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3ZhbHVl
X2R1cF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hTVFNf
RElSRUNUT1JZOgorICAgICAgICBtYW5hZ2VyLT5wcml2LT5IU1RTRGlyZWN0b3J5LnJlc2V0KGdf
dmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
SVNfRVBIRU1FUkFMOgogICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpCiAg
ICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7CkBAIC0xOTEsNiArMTk5
LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogICAgICAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0
KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJkYXRhYmFz
ZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwogICAgICAgICBpZiAoIXByaXYtPndlYlNRTERp
cmVjdG9yeSkKICAgICAgICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX2J1aWxk
X2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpLCAiZGF0YWJhc2VzIiwgbnVs
bHB0cikpOworICAgICAgICBpZiAoIXByaXYtPkhTVFNEaXJlY3RvcnkpCisgICAgICAgICAgICBw
cml2LT5IU1RTRGlyZWN0b3J5LnJlc2V0KHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpKTsK
ICAgICB9CiAKICAgICBpZiAocHJpdi0+YmFzZUNhY2hlRGlyZWN0b3J5KSB7CkBAIC0zMzIsNiAr
MzQyLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGFzc19p
bml0KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlckNsYXNzCiAgICAgICAgICAgICBudWxscHRyLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZIHwgR19QQVJBTV9ERVBSRUNBVEVEKSkpOwogCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmhzdHMtZGlyZWN0b3J5Ogor
ICAgICAqCisgICAgICogVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgSFRUUCBTdHJpY3QtVHJhbnNw
b3J0LVNlY3VyaXR5IChIU1RTKSBkYXRhYmFzZSB3aWxsIGJlIHN0b3JlZC4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAyLjI2CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0hTVFNfRElSRUNUT1JZ
LAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAgICAgImhzdHMtZGlyZWN0
b3J5IiwKKyAgICAgICAgICAgIF8oIkhTVFMgRGlyZWN0b3J5IiksCisgICAgICAgICAgICBfKCJU
aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIVFRQIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkgZGF0
YWJhc2Ugd2lsbCBiZSBzdG9yZWQiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFS
QU1fQ09OU1RSVUNUX09OTFkgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKSk7CisKICAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aXMtZXBoZW1lcmFsOgogICAgICAqCkBAIC0z
NzQsNiArNDAxLDggQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW4KICAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KICAgICAgICAg
ICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRIU1RT
U3RvcmFnZURpcmVjdG9yeSghcHJpdi0+SFNUU0RpcmVjdG9yeSA/CisgICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPkhTVFNEaXJlY3RvcnkuZ2V0
KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkpOwogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGVMZWdhY3koV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgfQpAQCAtNjEy
LDYgKzY0MSwyOSBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF93ZWJzcWxfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVEYXRhTQogICAgIHJldHVybiBwcml2LT53
ZWJTUUxEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeToKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aHN0
cy1kaXJlY3RvcnkgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogKGFsbG93LW5vbmUpOiB0aGUg
ZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RTIGRhdGFiYXNlIGlzIHN0b3JlZCBvciAlTlVMTCBpZiBA
bWFuYWdlciBpcyBlcGhlbWVyYWwuCisgKgorICogU2luY2U6IDIuMjYKKyAqLworY29uc3QgZ2No
YXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0cik7CisKKyAg
ICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlKiBwcml2ID0gbWFuYWdlci0+cHJpdjsK
KyAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFTdG9yZSAmJiAhcHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFw
cml2LT5IU1RTRGlyZWN0b3J5KQorICAgICAgICBwcml2LT5IU1RTRGlyZWN0b3J5LnJlc2V0KGdf
c3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4
KCkuZGF0YSgpKSk7CisgICAgcmV0dXJuIHByaXYtPkhTVFNEaXJlY3RvcnkuZ2V0KCk7Cit9CisK
IC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcjoK
ICAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKQEAgLTY0OSw2ICs3MDEs
OCBAQCBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVz
KFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdHlwZQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMpOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9X
RUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUykKICAgICAgICAgcmV0dXJuVmFsdWUuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKTsKKyAgICBpZiAodHlwZXMgJiBX
RUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUpCisgICAgICAgIHJldHVyblZhbHVlLmFkZChX
ZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSkKICAg
ICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgK
aW5kZXggMDE4OGU3N2Q5MDEwYzFlZGZmNmIwNTcwZWM4NGM1YTQzZjQ4ZjcyYi4uOWM0ZDgxNDU4
NGY5NzU2NWNmN2RjNzUzMjhlMDg4NTJkYmY1MWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaApAQCAtNDUsNiArNDUsNyBA
QCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2ViS2l0V2Vic2l0ZURhdGE7CiAg
KiBAV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQTogUGx1Z2lucyBkYXRhLgogICogQFdF
QktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUzogQ29va2llcy4KICAqIEBXRUJLSVRfV0VCU0lURV9E
QVRBX0RFVklDRV9JRF9IQVNIX1NBTFQ6IEhhc2ggc2FsdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBk
ZXZpY2UgaWRzIHVzZWQgYnkgd2VicGFnZXMuIFNpbmNlIDIuMjQKKyAqIEBXRUJLSVRfV0VCU0lU
RV9EQVRBX0hTVFNfQ0FDSEU6IEhTVFMgY2FjaGUuIFNpbmNlIDIuMjYKICAqIEBXRUJLSVRfV0VC
U0lURV9EQVRBX0FMTDogQWxsIHR5cGVzLgogICoKICAqIEVudW0gdmFsdWVzIHdpdGggZmxhZ3Mg
cmVwcmVzZW50aW5nIHR5cGVzIG9mIFdlYnNpdGUgZGF0YS4KQEAgLTYyLDcgKzYzLDggQEAgdHlw
ZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBICAgICAgICAg
ICAgICAgPSAxIDw8IDcsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTICAgICAgICAg
ICAgICAgICAgID0gMSA8PCA4LAogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hB
U0hfU0FMVCAgICAgICA9IDEgPDwgOSwKLSAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTCAgICAg
ICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMCkgLSAxCisgICAgV0VCS0lUX1dFQlNJVEVfREFU
QV9IU1RTX0NBQ0hFICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKKyAgICBXRUJLSVRfV0VCU0lU
RV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMSkgLSAxCiB9IFdlYktp
dFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkgR1R5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5o
CmluZGV4IDhkZTdjNGJiMmMyNjBlNTcwZmM2ZDA5ZWIwNDE0ZGY5MTIyM2UzNzYuLjU1NDhkZjRk
NmUyOTAyZDVmNGMyOGIwN2VmMGJiYmQ5ZGRmZjI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaApA
QCAtOTAsNiArOTAsOSBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRk
Yl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYgogV0VCS0lUX0RFUFJFQ0FU
RUQgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxf
ZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIg
Km1hbmFnZXIpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSBXZWJLaXRDb29r
aWVNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5h
Z2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggZGY1ODVhMmU2ZGVl
YTM4OTRhY2Y5NDMwOTNjZTNhMTdiMDczNTI3Mi4uM2FjNTBjMTllMGVkNTNiYjdhNmI3ZmEyMWQ0
YTJmMWU2OWNkZTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xNDAz
LDYgKzE0MDMsNyBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVf
ZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGlj
YXRpb25fY2FjaGVfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2lu
ZGV4ZWRkYl9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3Fs
X2RpcmVjdG9yeQord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9y
eQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcgogd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
ZmV0Y2hfZmluaXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYnNpdGVEYXRhLmgKaW5kZXggNzc4ZmY1MDkxMGU5ZDRjNWY4NWQ1ZTc3NGM2MjNiZDE1
YjU3NTY3Ny4uOTczYTU1MDU2MGZlMzgzMGQ2ZGQ4OGViYjRkYzk1NWM4N2JmYmFhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEu
aApAQCAtNDUsNiArNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2Vi
S2l0V2Vic2l0ZURhdGE7CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQTogUGx1
Z2lucyBkYXRhLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUzogQ29va2llcy4KICAq
IEBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQ6IEhhc2ggc2FsdCB1c2Vk
IHRvIGdlbmVyYXRlIHRoZSBkZXZpY2UgaWRzIHVzZWQgYnkgd2VicGFnZXMuIFNpbmNlIDIuMjQK
KyAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEU6IEhTVFMgY2FjaGUuIFNpbmNlIDIu
MjYKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTDogQWxsIHR5cGVzLgogICoKICAqIEVudW0g
dmFsdWVzIHdpdGggZmxhZ3MgcmVwcmVzZW50aW5nIHR5cGVzIG9mIFdlYnNpdGUgZGF0YS4KQEAg
LTYyLDcgKzYzLDggQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX1BM
VUdJTl9EQVRBICAgICAgICAgICAgICAgPSAxIDw8IDcsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFU
QV9DT09LSUVTICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAogICAgIFdFQktJVF9XRUJTSVRF
X0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCAgICAgICA9IDEgPDwgOSwKLSAgICBXRUJLSVRfV0VC
U0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMCkgLSAxCisgICAg
V0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFICAgICAgICAgICAgICAgID0gMSA8PCAxMCwK
KyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8
PCAxMSkgLSAxCiB9IFdlYktpdFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkgR1R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCmluZGV4IDFlNmNjNTZhYTRmN2VjMzg3YWM2NmRmNjA4MTNjODUy
YmE3MDEyMDkuLjg0NTcxMGI3MTM0N2Q3MWYwMGMzZTBhODBlNTFmYzgzOWEzOGU1NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuaApAQCAtOTAsNiArOTAsOSBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YgogV0VCS0lUX0RFUFJFQ0FURUQgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoK
K3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwogV0VC
S0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IDFiN2Y0NGQ3NjE0ZDViZjYyNDA3NThmOTdmZDkxNzFiMDM2ZmQ1ZDEu
LjRkNDRkZDFkNmFkNzY1NTNhNjU4MzA5OWMwNzk5MjVlOGE4ZWE2ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgUmVmPFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
Y29weSgpCiAgICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQorICAgIGNvcHktPm1faHN0c1N0
b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2VuZGlmCiAg
ICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5t
X21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGQzOGFiNzJm
NTRiYjI0OGQyMmIxZDcwYzM5MmJmNTBkMzdkNjJlYjcuLjYyMzI5MTU1N2QyYWVkNjQ4NWFlYmVm
NTFlNGYzNmQ0OTQ3MzJiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7IH0KICAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9
Ci0KKyNpZiBVU0UoR0xJQikgLy8gQWNjb3JkaW5nIHRvIHIyNDUwNzUgdGhpcyB3aWxsIGV2ZW50
dWFsbHkgbW92ZSBoZXJlLgorICAgIGNvbnN0IFN0cmluZyYgaHN0c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRI
U1RTU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9oc3RzU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorI2VuZGlmCiAgICAgY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRp
cmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsg
fQogCkBAIC0xMTgsNiArMTIxLDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworI2lmIFVT
RShHTElCKQorICAgIFN0cmluZyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2VuZGlmCiAgICAg
U3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGE0NzQyMjliOTkxNGU2OWNmN2I5YTIwM2YzMDAzNGUxMmNiMzc5YTIuLjNlZGEzOTNlODI4
NWYzMGMzZDY2YjdlYWI2YTFkN2RlMzZhMWFjY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOS0wOC0wMiAgQ2xh
dWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGlic291cCAyLjY3LjEgaW50
cm9kdWNlZCBIU1RTIHN1cHBvcnQgdmlhIGEgU291cFNlc3Npb25GZWF0dXJlLgorICAgICAgICBB
ZGQgc3VwcG9ydCB0byB0aGUgc291cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRoZSBmZWF0
dXJlIHRvCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBhbmQgaGFuZGxpbmcgSFNUUyBwcm90
b2NvbCB1cGdyYWRlcywgYnkKKyAgICAgICAgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZSBjaGFuZ2Ug
ZnVydGhlciB0byBjbGllbnRzLiBUaGlzIHBhdGNoIGFkZHMKKyAgICAgICAgdGhlIEhTVFMgZmVh
dHVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzdGlsbCBwb3NzaWJsZSB0byBhZGQKKyAgICAg
ICAgYSBib29sZWFuIHByb3BlcnR5IHRvIHRoZSB3ZWIgY29udGV4dCBjbGFzcyBpZiBkZXNpcmVk
LgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIEFQSSB0byB0aGUgV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgSFNU
UyBkYXRhYmFzZSBpcyBzYXZlZC4gSWYgdGhlIGRpcmVjdG9yeQorICAgICAgICBpcyBub3Qgc2V0
IG9yIGlmIHRoZSBkYXRhIG1hbmFnZXIgaXMgZXBoZW1lcmFsLCB1c2UgYQorICAgICAgICBub24t
cGVyc2lzdGVudCwgbWVtb3J5IG9ubHkgSFNUUyBlbmZvcmNlci4KKworICAgICAgICBJbXBsZW1l
bnQgYXMgd2VsbCB0aGUgbWV0aG9kcyBuZWVkZWQgdG8gY2xlYW4tdXAgYW5kIGRlbGV0ZSBIU1RT
CisgICAgICAgIHBvbGljaWVzIGZyb20gdGhlIHN0b3JhZ2UgYW5kIGV4cG9zZSB0aGUgZmVhdHVy
ZSBpbiBHVEsrCisgICAgICAgIE1pbmlCcm93c2VyJ3MgYWJvdXQ6ZGF0YS4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChnb3RXZWJzaXRlRGF0YUNhbGxiYWNr
KToKKwogMjAxOS0wOC0wMSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgcmVzdWx0cy53ZWJraXQub3JnOiBGb3JjZSB1cGRhdGUgY2FjaGUgd2hlbiB0aW1l
bGluZSB1cGRhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCBkYjgxZTE1ZDUwNzkzYjNjMWI3OTI4
YjE0ODQzZjZhYjVhMDFjODE0Li43NDE4ZmQ4MjdmZDYzMDg2OGQ0OTdhNDUwMDJmZTFhZGY3NmU1
MWZiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTQxNCw2ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCBn
b3RXZWJzaXRlRGF0YUNhbGxiYWNrKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwg
R0FzeW5jUmVzdQogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBk
YXRhTGlzdCwgIlNlc3Npb24gU3RvcmFnZSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfU0VTU0lPTl9T
VE9SQUdFLCBOVUxMLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRh
dGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkxvY2FsIFN0b3JhZ2UiLCBXRUJLSVRfV0VCU0lURV9EQVRB
X0xPQ0FMX1NUT1JBR0UsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3Rv
cmFnZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxl
KHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSW5kZXhlZERCIERhdGFiYXNlcyIsIFdF
QktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUywgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOworICAg
IGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkhTVFMg
RGF0YWJhc2UiLCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUsIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CiAgICAg
YWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiUGx1Z2lu
cyBEYXRhIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSwgTlVMTCwgcGFnZUlEKTsK
ICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJP
ZmZsaW5lIFdlYiBBcHBsaWNhdGlvbnMgQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJ
TkVfQVBQTElDQVRJT05fQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2Zm
bGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375615</attachid>
            <date>2019-08-06 02:25:01 -0700</date>
            <delta_ts>2019-08-06 04:04:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190806122458.patch</filename>
            <type>text/plain</type>
            <size>45364</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY3MDIyZDg5YmYzYWFh
ZWU4ZDUxNzgyNzBlNDQyM2Y4N2YzYTViNC4uNDEzNDE1Yzk5N2E3MGIyNjY5MGM5NTI5NTg1NmM3
MGRlNWY4N2RiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTAyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6
CisKIDIwMTktMDgtMDUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXSBSZW1vdmUgb3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgZnJvbSBDb250YWluZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNGU3NTRiODViOThhMWM1ZDNiMzFmZmRhYTEwZTA0MmZlY2FlNjU2Yy4uMmQ1OWJj
ZmUxYTYyYmMyZjA2ZDEzYjhhYzBiYjEwMDQxNGIwNzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NCBAQAorMjAxOS0wOC0wMiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdv
cmsgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgbGlic291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBvcnQgdmlhIGEgU291cFNlc3Np
b25GZWF0dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUgc291cCBuZXR3b3JrIGJhY2tl
bmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBh
bmQgaGFuZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkKKyAgICAgICAgcHJvcGFnYXRp
bmcgdGhlIHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRzLiBUaGlzIHBhdGNoIGFkZHMK
KyAgICAgICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzdGlsbCBw
b3NzaWJsZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3BlcnR5IHRvIHRoZSB3ZWIgY29u
dGV4dCBjbGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIEFQSSB0
byB0aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGRp
cmVjdG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZlZC4gSWYgdGhlIGRpcmVjdG9y
eQorICAgICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1hbmFnZXIgaXMgZXBoZW1lcmFs
LCB1c2UgYQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5IG9ubHkgSFNUUyBlbmZvcmNl
ci4KKworICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0aG9kcyBuZWVkZWQgdG8gY2xl
YW4tdXAgYW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVzIGZyb20gdGhlIHN0b3JhZ2Ug
YW5kIGV4cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAgIE1pbmlCcm93c2VyJ3MgYWJv
dXQ6ZGF0YS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1cHBy
ZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQcm90
b2NvbFVwZ3JhZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpwcm90
b2NvbFVwZ3JhZGVkVmlhSFNUUyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OmhzdHNFbmZvcmNlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRIU1RTRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHA6Cisg
ICAgICAgIChyZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyk6CisgICAgICAgICh0b1dl
YktpdFdlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkpOgorICAgICAgICAodG9X
ZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJz
aXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNp
dGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6aHN0c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0SFNUU1N0b3JhZ2VE
aXJlY3RvcnkpOgorCiAyMDE5LTA4LTA1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW01pbmlCcm93c2VyXVtXSzJdIFVuaGFuZGxlZCBr
ZXkgZXZlbnRzIHNob3VsZCBiZSBidWJibGVkIHVwIHRvIHRoZSBwYXJlbnQgd2luZG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291
cC5oCmluZGV4IDBiNGZiMzRmODZmMjRhNDYyMWUwZjkwNjcwNjc3NWY5NDgxODU5OTYuLmIyYWJk
MDJlNjA3MjJkODIyZjJhMDJlZDc0ODkyNGNiY2E1MWY1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCkBAIC0zMiw2
ICszMiw5IEBAIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUp
CiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQog
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9i
dWZmZXJfZnJlZSkKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCitXVEZfREVGSU5F
X0dQVFJfREVMRVRFUihTb3VwSFNUU1BvbGljeSwgc291cF9oc3RzX3BvbGljeV9mcmVlKTsKKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAx
MjZiMDNlYjQxNzViMDdhMTZhYzE4NTkyNzA1MGEwOTk4Y2E4Mzg5Li43MGI3MDdmMDI3OTY2M2Q0
YzQ0YTBiODg5ZDYwNmY1NWQ1YmYzZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNTks
NiArNTksMTIgQEAgc3RhdGljIFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYgcHJveHlTZXR0aW5n
cygpCiAgICAgcmV0dXJuIHNldHRpbmdzLmdldCgpOwogfQogCitzdGF0aWMgQ1N0cmluZyYgaHN0
c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU3RyaW5n
PiBkaXJlY3Rvcnk7CisgICAgcmV0dXJuIGRpcmVjdG9yeS5nZXQoKTsKK30KKwogI2lmICFMT0df
RElTQUJMRUQKIGlubGluZSBzdGF0aWMgdm9pZCBzb3VwTG9nUHJpbnRlcihTb3VwTG9nZ2VyKiwg
U291cExvZ2dlckxvZ0xldmVsLCBjaGFyIGRpcmVjdGlvbiwgY29uc3QgY2hhciogZGF0YSwgZ3Bv
aW50ZXIpCiB7CkBAIC0xNDEsNiArMTQ3LDcgQEAgU291cE5ldHdvcmtTZXNzaW9uOjpTb3VwTmV0
d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIGlmIChwcm94eVNldHRp
bmdzKCkubW9kZSAhPSBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1bHQpCiAg
ICAgICAgIHNldHVwUHJveHkoKTsKICAgICBzZXR1cExvZ2dlcigpOworICAgIHNldHVwSFNUU0Vu
Zm9yY2VyKCk7CiB9CiAKIFNvdXBOZXR3b3JrU2Vzc2lvbjo6flNvdXBOZXR3b3JrU2Vzc2lvbigp
ID0gZGVmYXVsdDsKQEAgLTE2OSw2ICsxNzYsODQgQEAgU291cENvb2tpZUphciogU291cE5ldHdv
cmtTZXNzaW9uOjpjb29raWVKYXIoKSBjb25zdAogICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIo
c291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9D
T09LSUVfSkFSKSk7CiB9CiAKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRIU1RTUGVyc2lz
dGVudFN0b3JhZ2UoY29uc3QgQ1N0cmluZyYgZGlyZWN0b3J5KQoreworICAgIGhzdHNTdG9yYWdl
RGlyZWN0b3J5KCkgPSBkaXJlY3Rvcnk7Cit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpz
ZXR1cEhTVFNFbmZvcmNlcigpCit7CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQor
ICAgIGlmIChzb3VwX3Nlc3Npb25faGFzX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09V
UF9UWVBFX0hTVFNfRU5GT1JDRVIpKQorICAgICAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1
cmVfYnlfdHlwZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUik7
CisKKyAgICBTb3VwSFNUU0VuZm9yY2VyKiBlbmZvcmNlcjsKKyAgICBpZiAoaHN0c1N0b3JhZ2VE
aXJlY3RvcnkoKS5pc051bGwoKSkKKyAgICAgICAgZW5mb3JjZXIgPSBzb3VwX2hzdHNfZW5mb3Jj
ZXJfbmV3KCk7CisgICAgZWxzZSB7CisgICAgICAgIENTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5k
YXRhKCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRiRmlsZW5hbWUoZ19idWlsZF9maWxl
bmFtZShzdG9yYWdlUGF0aC5kYXRhKCksICJoc3RzLXN0b3JhZ2Uuc3FsaXRlIiwgbnVsbHB0cikp
OworICAgICAgICBlbmZvcmNlciA9IHNvdXBfaHN0c19lbmZvcmNlcl9kYl9uZXcoZGJGaWxlbmFt
ZS5nZXQoKSk7CisgICAgfQorICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNz
aW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShlbmZvcmNlcikpOworI2VuZGlmCit9CisK
K3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKEhhc2hT
ZXQ8U3RyaW5nPiYgaG9zdE5hbWVzKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2Nywg
OTEpCisgICAgaWYgKCFzb3VwX3Nlc3Npb25faGFzX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3Vw
SFNUU0VuZm9yY2VyKiBlbmZvcmNlciA9IFNPVVBfSFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25f
Z2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIp
KTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBkb21haW5zKHNvdXBfaHN0c19lbmZvcmNlcl9nZXRf
ZG9tYWlucyhlbmZvcmNlciwgZmFsc2UpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gZG9tYWlu
cy5nZXQoKTsgaXRlciAhPSBudWxscHRyOyBpdGVyID0gaXRlci0+bmV4dCkgeworICAgICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBkb21haW4oc3RhdGljX2Nhc3Q8Z2NoYXIqPihpdGVyLT5kYXRhKSk7
CisgICAgICAgIGhvc3ROYW1lcy5hZGQoZG9tYWluLmdldCgpKTsKKyAgICB9CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShob3N0TmFtZXMpOworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtT
ZXNzaW9uOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvc3ROYW1lcykKK3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisgICAgaWYg
KCFzb3VwX3Nlc3Npb25faGFzX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBF
X0hTVFNfRU5GT1JDRVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3VwSFNUU0VuZm9yY2Vy
KiBlbmZvcmNlciA9IFNPVVBfSFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUo
bV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsKKyAgICBmb3Ig
KGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEhT
VFNQb2xpY3k+IHBvbGljeShzb3VwX2hzdHNfcG9saWN5X25ldyhob3N0TmFtZS51dGY4KCkuZGF0
YSgpLCBTT1VQX0hTVFNfUE9MSUNZX01BWF9BR0VfUEFTVCwgZmFsc2UpKTsKKyAgICAgICAgc291
cF9oc3RzX2VuZm9yY2VyX3NldF9wb2xpY3koZW5mb3JjZXIsIHBvbGljeS5nZXQoKSk7CisgICAg
fQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaG9zdE5hbWVzKTsKKyNlbmRpZgorfQorCit2b2lk
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSkKK3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDkxKQorICAgIGlmICghc291cF9z
ZXNzaW9uX2hhc19mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VO
Rk9SQ0VSKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cEhTVFNFbmZvcmNlciogZW5mb3Jj
ZXIgPSBTT1VQX0hTVFNfRU5GT1JDRVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNl
c3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSk7CisgICAgR1VuaXF1ZVB0cjxH
TGlzdD4gcG9saWNpZXMoc291cF9oc3RzX2VuZm9yY2VyX2dldF9wb2xpY2llcyhlbmZvcmNlciwg
ZmFsc2UpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gcG9saWNpZXMuZ2V0KCk7IGl0ZXIgIT0g
bnVsbHB0cjsgaXRlciA9IGl0ZXItPm5leHQpIHsKKyAgICAgICAgYXV0byogcG9saWN5ID0gc3Rh
dGljX2Nhc3Q8U291cEhTVFNQb2xpY3kqPihpdGVyLT5kYXRhKTsKKyAgICAgICAgYXV0byBtb2Rp
ZmllZCA9IHNvdXBfZGF0ZV90b190aW1lX3QocG9saWN5LT5leHBpcmVzKSAtIHBvbGljeS0+bWF4
X2FnZTsKKyAgICAgICAgaWYgKG1vZGlmaWVkID49IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNl
RXBvY2goKS5zZWNvbmRzKCkpIHsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xp
Y3k+IG5ld1BvbGljeShzb3VwX2hzdHNfcG9saWN5X25ldyhwb2xpY3ktPmRvbWFpbiwgU09VUF9I
U1RTX1BPTElDWV9NQVhfQUdFX1BBU1QsIGZhbHNlKSk7CisgICAgICAgICAgICBzb3VwX2hzdHNf
ZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlciwgbmV3UG9saWN5LmdldCgpKTsKKyAgICAgICAg
fQorICAgICAgICBzb3VwX2hzdHNfcG9saWN5X2ZyZWUocG9saWN5KTsKKyAgICB9CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc3RyaW5nSXNOdW1lcmljKGNvbnN0IGNoYXIqIHN0cikKIHsKICAgICB3aGlsZSAo
KnN0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDVlMzJkMzFhZDRmZGEwNzc5YTIxZTE2MzI4
NzgzNzViYmY4Y2E1NDguLmNhNjMwMzIwYThhNWZlZDU1YTVhNGQ3NmNhMTMyYTU4OWI3MzliMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29va2llSmFyKFNvdXBDb29raWVKYXIqKTsKICAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIoKSBjb25zdDsKIAorICAgIHN0YXRpYyB2b2lkIHNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZShj
b25zdCBDU3RyaW5nJiBoc3RzU3RvcmFnZURpcmVjdG9yeSk7CisgICAgdm9pZCBzZXR1cEhTVFNF
bmZvcmNlcigpOworCiAgICAgc3RhdGljIHZvaWQgY2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3Ry
aW5nJiBjYWNoZURpcmVjdG9yeSk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcm94eVNldHRpbmdz
KGNvbnN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwpAQCAtNzIsNiArNzUsMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUp
OwogICAgIHZvaWQgc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKIAorICAgIHZvaWQgZ2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0ZUhTVFND
YWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgY2xlYXJI
U1RTQ2FjaGUoV2FsbFRpbWUpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBMb2dnZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCBjMzMzOTU3MGI4NzQwYjE4ODk0NjI0N2YyYmJlMDdhODhkZTI3YWY5Li40ZWIwYmQ5ZDY0
ZjMwZjMzOTgxZWYwOTk4MDM3ODFjMzVhZTk2MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMzOSw3ICsxMzM5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUpOwpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICAgICBpZiAoIXNlc3Npb25JRC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkp
IHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBjbGVhckhTVFNDYWNoZSgqbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBtb2RpZmllZFNpbmNlKTsKQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29va2llSG9zdE5hbWVzKTsKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7CkBAIC0xNjcwLDcgKzE2NzAs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+
IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBo
b3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsCiAgICAgfQogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dp
dGhIU1RTVG9EZWxldGU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIGdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vic2l0ZURhdGFTdG9y
ZS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA1NDZkNWVmM2NjZDhmNmJiZTRjMDE1M2Q5YmJiN2Jl
ZDhhY2VmZDYzLi5kYmYyMzEyMTQ2MmM4YWM2ZjlhZDMwOGQ0M2JlNjIzMWYzYjYxOTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xOTQs
MTAgKzE5NCwxMiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OworICAgIGJv
b2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7
IH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICB2b2lkIGdl
dEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
SGFzaFNldDxTdHJpbmc+Jik7CiAgICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
ICAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwotICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25U
ZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc2VzQ29u
bmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7IH0KICNlbmRpZgogCiAgICAgdm9pZCBm
aW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKaW5kZXggODdlODViNTVlOTFlYzY5NmFjMTViMWM1ZjFhMTEzNTFhM2UyNmFi
Ny4uZjJkNTdlMzFlOGM0OTQ1NDg5NjMyMTUzZWVlMGQ3Y2JhNGE3Yzk2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3Vm
Zml4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5n
Lmg+CkBAIC0xNDcsNiArMTQ4LDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogI2VuZGlmCiAgICAgfQogCisjaWYg
U09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorICAgIGlmICgobV9jdXJyZW50UmVxdWVzdC51
cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmICFzaG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5n
KCkpIHx8IChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHAiKSAmJiAhc2hv
dWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlKCkpKQorICAgICAgICBzb3VwX21lc3NhZ2VfZGlz
YWJsZV9mZWF0dXJlKHNvdXBNZXNzYWdlLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUik7
CisgICAgZWxzZQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNvdXBfc2Vzc2lvbl9nZXRfZmVh
dHVyZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vz
c2lvbigpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUiksICJoc3RzLWVuZm9yY2VkIiwgR19DQUxM
QkFDSyhoc3RzRW5mb3JjZWQpLCB0aGlzKTsKKyNlbmRpZgorCiAgICAgLy8gTWFrZSBzdXJlIHdl
IGhhdmUgYW4gQWNjZXB0IGhlYWRlciBmb3Igc3VicmVzb3VyY2VzOyBzb21lIHNpdGVzIHdhbnQg
dGhpcyB0byBzZXJ2ZSBzb21lIG9mIHRoZWlyIHN1YnJlc291cmNlcy4KICAgICBpZiAoIXNvdXBf
bWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoc291cE1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFj
Y2VwdCIpKQogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQoc291cE1lc3NhZ2Ut
PnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIsICIqLyoiKTsKQEAgLTE5Miw4ICsyMDAsMTIgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjbGVhclJlcXVlc3QoKQogICAgICAgICAgICAgc291
cF9zZXNzaW9uX2NhbmNlbF9tZXNzYWdlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+
KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIG1fc291cE1lc3NhZ2UuZ2V0KCksIFNPVVBfU1RB
VFVTX0NBTkNFTExFRCk7CiAgICAgICAgIG1fc291cE1lc3NhZ2UgPSBudWxscHRyOwogICAgIH0K
LSAgICBpZiAobV9zZXNzaW9uKQorICAgIGlmIChtX3Nlc3Npb24pIHsKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9u
U291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAs
IDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2
NywgMSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKHNvdXBf
c2Vzc2lvbl9nZXRfZmVhdHVyZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9z
ZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUiksIHRoaXMpOwor
I2VuZGlmCisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnJlc3VtZSgpCkBA
IC0xMDYwLDYgKzEwNzIsNDUgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzdGFydGluZ0Nh
bGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGEKICAgICB0YXNrLT5k
aWRTdGFydFJlcXVlc3QoKTsKIH0KIAorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkK
K2Jvb2wgTmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUG9saWN5U2V0dGluZygp
Cit7CisgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRpZ2F0aW9uIDE6CisgICAg
Ly8gICJMaW1pdCBIU1RTIFN0YXRlIHRvIHRoZSBIb3N0bmFtZSwgb3IgdGhlIFRvcCBMZXZlbCBE
b21haW4gKyAxIgorICAgIGlmIChpc1RvcExldmVsTmF2aWdhdGlvbigpIHx8IGhvc3RzQXJlRXF1
YWwobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgbV9jdXJyZW50UmVxdWVzdC5maXJzdFBhcnR5Rm9y
Q29va2llcygpKSB8fCBpc1B1YmxpY1N1ZmZpeChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3Qo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxv
d0hTVFNQcm90b2NvbFVwZ3JhZGUoKQoreworICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMgYWJ1
c2UgbWl0Z2F0aW9uIDI6CisgICAgLy8gIklnbm9yZSBIU1RTIFN0YXRlIGZvciBTdWJyZXNvdXJj
ZSBSZXF1ZXN0cyB0byBCbG9ja2VkIERvbWFpbnMiCisgICAgaWYgKCFpc1RvcExldmVsTmF2aWdh
dGlvbigpICYmICFtX2N1cnJlbnRSZXF1ZXN0LmFsbG93Q29va2llcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCit7
CisgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVz
cG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9n
ZXRfdXJpKHNvdXBNZXNzYWdlKSkpOworICAgIGNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCk7Cit9
CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKFNvdXBIU1RTRW5mb3Jj
ZXIqLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2sp
Cit7CisgICAgaWYgKHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCB0YXNrLT5z
dGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgIXRhc2stPm1fY2xpZW50KSB7CisgICAgICAg
IHRhc2stPmNsZWFyUmVxdWVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHNvdXBNZXNzYWdlID09IHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0KCkpCisgICAgICAgIHRhc2st
PnByb3RvY29sVXBncmFkZWRWaWFIU1RTKHNvdXBNZXNzYWdlKTsKK30KKyNlbmRpZgorCiB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7CiAgICAgbV9uZXR3b3Jr
TG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0
VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oCmluZGV4IGFkMzA2M2Q2YjcyNWZhZjhiYTE5NzM4YzNhYjMxODU3
MGRmMDZmMTAuLjE5OTZhMTY1NGUzMWQzMDBmMDkxYWNiYWU1NzVlNzc1MGI2YTJmODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuaApAQCAtMTExLDYgKzExMSwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CiAj
ZWxzZQogICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdGFydGVkQ2FsbGJhY2soU291cFNlc3Npb24q
LCBTb3VwTWVzc2FnZSosIFNvdXBTb2NrZXQqLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CisjZW5k
aWYKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisgICAgYm9vbCBzaG91bGRBbGxv
d0hTVFNQb2xpY3lTZXR0aW5nKCk7CisgICAgYm9vbCBzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVw
Z3JhZGUoKTsKKyAgICB2b2lkIHByb3RvY29sVXBncmFkZWRWaWFIU1RTKFNvdXBNZXNzYWdlKik7
CisgICAgc3RhdGljIHZvaWQgaHN0c0VuZm9yY2VkKFNvdXBIU1RTRW5mb3JjZXIqLCBTb3VwTWVz
c2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKICNlbmRpZgogICAgIHZvaWQgZGlkU3RhcnRS
ZXF1ZXN0KCk7CiAgICAgc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291cE1lc3NhZ2Uq
LCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJmMjhlYTVj
NzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjhlM2Q0ODUyZTA4MDdhM2Y5YjAxNDVkNzhj
YmI1NDVlMWVlOGU5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC05NSw2ICs5NSwyNCBAQCBzdGF0
aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFu
Z3VhZ2VzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdE5h
bWVzKQoreworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwor
ICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoaG9zdE5hbWVzKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hl
Rm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Np
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCit7CisgICAgY29uc3QgYXV0byog
c2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9u
KHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtT
ZXNzaW9uKCkuZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKGhvc3ROYW1lcyk7Cit9CisKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAg
Y29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5l
dHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgc2Vzc2lvbi0+
c291cE5ldHdvcmtTZXNzaW9uKCkuY2xlYXJIU1RTQ2FjaGUobW9kaWZpZWRTaW5jZSk7Cit9CisK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCiB7CiAgICAgYXV0byBhY2NlcHRMYW5ndWFnZXMg
PSBidWlsZEFjY2VwdExhbmd1YWdlcyhsYW5ndWFnZXMpOwpAQCAtMTI5LDYgKzE0NywxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25z
dCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZChwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CiAKICAgICBzZXRJZ25vcmVUTFNFcnJvcnMocGFy
YW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOworCisgICAgaWYgKCFwYXJhbWV0ZXJzLmhzdHNTdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRI
U1RTUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeS51dGY4
KCkpOworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShjb25zdCBhdXRvJiBzZXNzaW9uKSB7
CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE5ldHdvcmtTZXNzaW9uU291cCY+KHNlc3Npb24p
LnNvdXBOZXR3b3JrU2Vzc2lvbigpLnNldHVwSFNUU0VuZm9yY2VyKCk7CisgICAgfSk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAppbmRl
eCA5YzlhNDNiNzNjNDNkZDZkMmIzMmI3ZTg2MGQ4NWU2MWJhODEwYmYyLi5iMTJjZjBkMTNiOGZm
ZWYwODZmMzdjMTQ2M2MzMzhiZmJiOWFkNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTY2LDYgKzY2LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpOworI2lmIFVTRShHTElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0SFNUU0RpcmVjdG9yeSgpOworI2VuZGlmCiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMjUyNTgzYzVlYzljNDRkOWNiOWIyNzZkZWY2NTM2MDc5
Mjc4NTc3Zi4uNWQzZDk3OGRjZGE1NjljNGQ3ZmNmNWJjNmRhMTBkODhmNDM2M2Y4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcApAQCAtODQsNiArODQsMTEgQEAgV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKICAgICByZXR1cm4g
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RP
UlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwogfQogCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TKTsKK30KKwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewogICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBH
X0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRl
eCBiZmM1NjdjZWQ1YmIxNzAxZDNhYzkyNzY3YWViYWE0MmRiMmMzOTdhLi5lOTVhNzIzNGY0YjE4
Mjg3ZjdkYTM5M2EyNWY0ODk5OTJlNTkzNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzQwLDYgKzM0MCw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19j
YWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtD
YWNoZVN1YmRpcmVjdG9yeSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25f
Y2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAKaW5kZXgg
N2M5N2UwYjFiMjRhMWIzYTZhYTIxMzNmODk0YTFlOGE3OGUwMDM5ZC4uZGQ4ZmNkZjk5ZmVhN2Qw
M2ZlNjFmM2M3NGRjZDg0N2NiYTVmNjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcApAQCAtNzMsNiArNzMsNyBA
QCBzdGF0aWMgYm9vbCByZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyhjb25zdCBXZWJz
aXRlRGF0YVJlY29yZCYgcmVjb3JkKQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3Rv
cmFnZSwKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMsCiAgICAgICAg
IFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLAorICAgICAgICBXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAg
ICAgV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhLAogI2VuZGlmCkBAIC05OCw2ICs5OSw4IEBA
IHN0YXRpYyBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHRvV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyhP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9X
RUJTSVRFX0RBVEFfV0VCU1FMX0RBVEFCQVNFUzsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQogICAgICAgICByZXR1cm5WYWx1ZSB8
PSBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVM7CisgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAgICAgcmV0dXJuVmFs
dWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFOwogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlBs
dWdJbkRhdGEpKQogICAgICAgICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX1BM
VUdJTl9EQVRBOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggYzBmOTFjYzU2ZWE1MjQ0
ODlhMjZhOGExNGU4NTg0YjJhYjQ5ZTY0ZS4uYjkzN2Q3ZmJiZjM1MTQwN2JiYjliMDgxYTJmZGQ1
OWE0NmNiMzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC04NCw2ICs4NCw3IEBA
IGVudW0gewogICAgIFBST1BfQVBQTElDQVRJT05fQ0FDSEVfRElSRUNUT1JZLAogICAgIFBST1Bf
SU5ERVhFRERCX0RJUkVDVE9SWSwKICAgICBQUk9QX1dFQlNRTF9ESVJFQ1RPUlksCisgICAgUFJP
UF9IU1RTX0RJUkVDVE9SWSwKICAgICBQUk9QX0lTX0VQSEVNRVJBTAogfTsKIApAQCAtMTAxLDYg
KzEwMiw3IEBAIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gaW5kZXhlZERCRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gd2ViU1FM
RGlyZWN0b3J5OworICAgIEdVbmlxdWVQdHI8Y2hhcj4gSFNUU0RpcmVjdG9yeTsKIAogICAgIEdS
ZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBWZWN0b3I8V2Vi
UHJvY2Vzc1Bvb2wqPiBwcm9jZXNzUG9vbHM7CkBAIC0xMzYsNiArMTM4LDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSUQsIEcKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkobWFuYWdlcikpOwogICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0hTVFNfRElSRUNUT1JZOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmco
dmFsdWUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkobWFu
YWdlcikpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzAsNiArMTc1
LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGMKICAgICBjYXNlIFBST1BfV0VCU1FMX0RJUkVD
VE9SWToKICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfdmFs
dWVfZHVwX3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSFNU
U19ESVJFQ1RPUlk6CisgICAgICAgIG1hbmFnZXItPnByaXYtPkhTVFNEaXJlY3RvcnkucmVzZXQo
Z192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJP
UF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkK
ICAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKQEAgLTE5MSw2ICsx
OTksOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiAgICAgICAgICAgICBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSwgImRhdGFi
YXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7CiAgICAgICAgIGlmICghcHJpdi0+d2ViU1FM
RGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJkYXRhYmFzZXMiLCBu
dWxscHRyKSk7CisgICAgICAgIGlmICghcHJpdi0+SFNUU0RpcmVjdG9yeSkKKyAgICAgICAgICAg
IHByaXYtPkhTVFNEaXJlY3RvcnkucmVzZXQocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCkp
OwogICAgIH0KIAogICAgIGlmIChwcml2LT5iYXNlQ2FjaGVEaXJlY3RvcnkpIHsKQEAgLTMzMiw2
ICszNDIsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNz
X2luaXQoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ2xhc3MKICAgICAgICAgICAgIG51bGxwdHIs
CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURX
UklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKSk7CiAK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aHN0cy1kaXJlY3Rvcnk6
CisgICAgICoKKyAgICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIVFRQIFN0cmljdC1UcmFu
c3BvcnQtU2VjdXJpdHkgKEhTVFMpIGRhdGFiYXNlIHdpbGwgYmUgc3RvcmVkLgorICAgICAqCisg
ICAgICogU2luY2U6IDIuMjYKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSFNUU19ESVJFQ1RP
UlksCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAiaHN0cy1kaXJl
Y3RvcnkiLAorICAgICAgICAgICAgXygiSFNUUyBEaXJlY3RvcnkiKSwKKyAgICAgICAgICAgIF8o
IlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSBk
YXRhYmFzZSB3aWxsIGJlIHN0b3JlZCIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19Q
QVJBTV9DT05TVFJVQ1RfT05MWSB8IEdfUEFSQU1fREVQUkVDQVRFRCkpKTsKKwogICAgIC8qKgog
ICAgICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjppcy1lcGhlbWVyYWw6CiAgICAgICoKQEAg
LTM3NCw2ICs0MDEsOCBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwogICAgICAg
ICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEhT
VFNTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5IU1RTRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+SFNUU0RpcmVjdG9yeS5n
ZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSk7CiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC02
MTIsNiArNjQxLDI5IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3dlYnNxbF9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZURhdGFNCiAgICAgcmV0dXJuIHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5OgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcgorICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpo
c3RzLWRpcmVjdG9yeSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRo
ZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEhTVFMgZGF0YWJhc2UgaXMgc3RvcmVkIG9yICVOVUxMIGlm
IEBtYW5hZ2VyIGlzIGVwaGVtZXJhbC4KKyAqCisgKiBTaW5jZTogMi4yNgorICovCitjb25zdCBn
Y2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeShXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKKwor
ICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2
OworICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAo
IXByaXYtPkhTVFNEaXJlY3RvcnkpCisgICAgICAgIHByaXYtPkhTVFNEaXJlY3RvcnkucmVzZXQo
Z19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICByZXR1cm4gcHJpdi0+SFNUU0RpcmVjdG9yeS5nZXQoKTsKK30K
KwogLyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2Vy
OgogICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpAQCAtNjQ5LDYgKzcw
MSw4IEBAIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlw
ZXMoV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyB0eXBlCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChX
ZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lU
X1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTKQogICAgICAgICByZXR1cm5WYWx1ZS5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgIGlmICh0eXBlcyAm
IFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSkKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBKQog
ICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEu
aAppbmRleCAwMTg4ZTc3ZDkwMTBjMWVkZmY2YjA1NzBlYzg0YzVhNDNmNDhmNzJiLi45YzRkODE0
NTg0Zjk3NTY1Y2Y3ZGM3NTMyOGUwODg1MmRiZjUxYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCkBAIC00NSw2ICs0NSw3
IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YSBXZWJLaXRXZWJzaXRlRGF0YTsK
ICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVnaW5zIGRhdGEuCiAgKiBA
V0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICogQFdFQktJVF9XRUJTSVRF
X0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQgdG8gZ2VuZXJhdGUgdGhl
IGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAorICogQFdFQktJVF9XRUJT
SVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4yNgogICogQFdFQktJVF9X
RUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2YWx1ZXMgd2l0aCBmbGFn
cyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAtNjIsNyArNjMsOCBAQCB0
eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEgICAgICAg
ICAgICAgICA9IDEgPDwgNywKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURf
SEFTSF9TQUxUICAgICAgID0gMSA8PCA5LAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAg
ICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEwKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9E
QVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIFdFQktJVF9XRUJT
SVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDExKSAtIDEKIH0gV2Vi
S2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmgKaW5kZXggOGRlN2M0YmIyYzI2MGU1NzBmYzZkMDllYjA0MTRkZjkxMjIzZTM3Ni4uNTU0OGRm
NGQ2ZTI5MDJkNWY0YzI4YjA3ZWYwYmJiZDlkZGZmMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5o
CkBAIC05MCw2ICs5MCw5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhl
ZGRiX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViCiBXRUJLSVRfREVQUkVD
QVRFRCBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNx
bF9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdENv
b2tpZU1hbmFnZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFu
YWdlciAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1h
bmFnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBkZjU4NWEyZTZk
ZWVhMzg5NGFjZjk0MzA5M2NlM2ExN2IwNzM1MjcyLi4zYWM1MGMxOWUwZWQ1M2JiN2E2YjdmYTIx
ZDRhMmYxZTY5Y2RlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE0
MDMsNiArMTQwMyw3IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNo
ZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBs
aWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aW5kZXhlZGRiX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJz
cWxfZGlyZWN0b3J5Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0
b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9mZXRjaF9maW5pc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2Vic2l0ZURhdGEuaAppbmRleCA3NzhmZjUwOTEwZTlkNGM1Zjg1ZDVlNzc0YzYyM2Jk
MTViNTc1Njc3Li45NzNhNTUwNTYwZmUzODMwZDZkZDg4ZWJiNGRjOTU1Yzg3YmZiYWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YSBX
ZWJLaXRXZWJzaXRlRGF0YTsKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQ
bHVnaW5zIGRhdGEuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgog
ICogQFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVz
ZWQgdG8gZ2VuZXJhdGUgdGhlIGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4y
NAorICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2Ug
Mi4yNgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51
bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpA
QCAtNjIsNyArNjMsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFf
UExVR0lOX0RBVEEgICAgICAgICAgICAgICA9IDEgPDwgNywKICAgICBXRUJLSVRfV0VCU0lURV9E
QVRBX0NPT0tJRVMgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgV0VCS0lUX1dFQlNJ
VEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUICAgICAgID0gMSA8PCA5LAotICAgIFdFQktJVF9X
RUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEwKSAtIDEKKyAg
ICBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEw
LAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgx
IDw8IDExKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VCS0lUX0FQSSBHVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggMWU2Y2M1NmFhNGY3ZWMzODdhYzY2ZGY2MDgxM2M4
NTJiYTcwMTIwOS4uODQ1NzEwYjcxMzQ3ZDcxZjAwYzNlMGE4MGU1MWZjODM5YTM4ZTU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCkBAIC05MCw2ICs5MCw5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViCiBXRUJLSVRfREVQUkVDQVRFRCBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIg
Kgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeSAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBX
RUJLSVRfQVBJIFdlYktpdENvb2tpZU1hbmFnZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9jb29raWVfbWFuYWdlciAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKaW5kZXggMWI3ZjQ0ZDc2MTRkNWJmNjI0MDc1OGY5N2ZkOTE3MWIwMzZmZDVk
MS4uNGQ0NGRkMWQ2YWQ3NjU1M2E2NTgzMDk5YzA3OTkyNWU4YThlYTZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTAsNiArNTAsOSBAQCBSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5KCkKICAgICBjb3B5LT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisjaWYgVVNFKEdMSUIpCisgICAgY29weS0+bV9oc3Rz
U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYK
ICAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwogICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZDM4YWI3
MmY1NGJiMjQ4ZDIyYjFkNzBjMzkyYmY1MGQzN2Q2MmViNy4uNjIzMjkxNTU3ZDJhZWQ2NDg1YWVi
ZWY1MWU0ZjM2ZDQ5NDczMmJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCkBAIC02MSw3ICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsgfQogICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nJiYgZGly
ZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7
IH0KLQorI2lmIFVTRShHTElCKSAvLyBBY2NvcmRpbmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZl
bnR1YWxseSBtb3ZlIGhlcmUuCisgICAgY29uc3QgU3RyaW5nJiBoc3RzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNl
dEhTVFNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2hzdHNTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisjZW5kaWYKICAgICBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYg
ZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rvcnkp
OyB9CiAKQEAgLTExOCw2ICsxMjEsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisjaWYg
VVNFKEdMSUIpCisgICAgU3RyaW5nIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYKICAg
ICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYjZjOTk2MTNlZTNlZWZiN2ExN2Y4MWJkZDU5YWY1YWUyNDczZWE2Ny4uMjBiMzhiMGE0
MDU0ZWE5YmZiNzhiZjE2NDkyMDgxNDNjMmJkY2Q2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA4LTAyICBD
bGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBp
bnRyb2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAg
IEFkZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZl
YXR1cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHBy
b3RvY29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5n
ZSBmdXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBm
ZWF0dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAg
ICAgICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2ly
ZWQuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBI
U1RTIGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBz
ZXQgb3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5v
bi1wZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxl
bWVudCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhT
VFMKKyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0
dXJlIGluIEdUSysKKyAgICAgICAgTWluaUJyb3dzZXIncyBhYm91dDpkYXRhLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGdvdFdlYnNpdGVEYXRhQ2FsbGJh
Y2spOgorICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6IEJ1bXAgbGlic291cCB0byAyLjY3
LjkxIGZvciB0aGUgbmV3IEFQSXMKKyAgICAgICAgKiB3cGUvamhidWlsZC5tb2R1bGVzOiBEaXR0
bworCiAyMDE5LTA4LTA1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgogCiAgICAgICAgIFtNaW5pQnJvd3Nlcl1bV0syXSBVbmhhbmRsZWQga2V5IGV2ZW50cyBzaG91
bGQgYmUgYnViYmxlZCB1cCB0byB0aGUgcGFyZW50IHdpbmRvdwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5k
ZXggZGI4MWUxNWQ1MDc5M2IzYzFiNzkyOGIxNDg0M2Y2YWI1YTAxYzgxNC4uNzQxOGZkODI3ZmQ2
MzA4NjhkNDk3YTQ1MDAyZmUxYWRmNzZlNTFmYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00MTQs
NiArNDE0LDcgQEAgc3RhdGljIHZvaWQgZ290V2Vic2l0ZURhdGFDYWxsYmFjayhXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsIEdBc3luY1Jlc3UKICAgICBhYm91dERhdGFGaWxsVGFi
bGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJTZXNzaW9uIFN0b3JhZ2UiLCBXRUJL
SVRfV0VCU0lURV9EQVRBX1NFU1NJT05fU1RPUkFHRSwgTlVMTCwgcGFnZUlEKTsKICAgICBhYm91
dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJMb2NhbCBTdG9y
YWdlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFLCB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQp
OwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwg
IkluZGV4ZWREQiBEYXRhYmFzZXMiLCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRB
QkFTRVMsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eShtYW5hZ2VyKSwgcGFnZUlEKTsKKyAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRh
UmVxdWVzdCwgZGF0YUxpc3QsICJIU1RTIERhdGFiYXNlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9I
U1RTX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5
KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFS
ZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdpbnMgRGF0YSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfUExV
R0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwg
ZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiT2ZmbGluZSBXZWIgQXBwbGljYXRpb25zIENhY2hlIiwg
V0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFLCB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5
KG1hbmFnZXIpLCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1
bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCAwMjRiYWZiNTA3NjgzNzg3N2E3
NGZmZDhiYzkxYTBkMThhMjA4NzBlLi5iZGEzZTkxMGJjMjBkYzk5YjcwM2JlMmU2MTY2ZTAzMjVk
NTMzODFjIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xz
L2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTIzOCw5ICsyMzgsOSBAQAogICAgICAgPGRlcCBwYWNr
YWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGlicHNsIi8+CiAg
ICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNl
cy9saWJzb3VwLzIuNjcvbGlic291cC0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMi42Ny45
MCIKKyAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9s
aWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9uPSIyLjY3LjkxIgogICAgICAgICAgICAg
cmVwbz0iZnRwLmdub21lLm9yZyIKLSAgICAgICAgICAgIGhhc2g9InNoYTI1NjozMDM2ODYwMDJi
ZDdkN2JmOTMyMDRlZWJlMGQ1ZWM5ZjVkNTdkMDcxZTM0MTFlMjMwNGQ2ZjhiY2ZhOTdlZjc5Ij4K
KyAgICAgICAgICAgIGhhc2g9InNoYTI1NjozOTBiNWIyODI2M2QzYmRmOTg2NmZhNjk0MzQ2Y2Fh
NWU0YmNiOTg2ZTAxNGUzMzgzZTliNjEzMGI3MDZmM2RhIj4KICAgICA8L2JyYW5jaD4KICAgPC9t
ZXNvbj4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL3dw
ZS9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggNWI5NGYxYjU2YzhiMzcyYzA3ZGZkMjYwNzJiYzE4MmE5
NzVlMDVhNS4uZDI4NWVkZDFlNGE4NmQ1ZjEyNDNkOWM3MzVjMDVkOWZlYjQwYmMwMyAxMDA2NDQK
LS0tIGEvVG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy93cGUvamhidWlsZC5t
b2R1bGVzCkBAIC05Niw5ICs5Niw5IEBACiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWItbmV0d29y
a2luZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJwc2wiLz4KICAgICA8L2RlcGVuZGVuY2ll
cz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9s
aWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9uPSIyLjY3LjkwIgorICAgIDxicmFuY2gg
bW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvbGlic291cC8yLjY3L2xpYnNvdXAtJHt2ZXJzaW9u
fS50YXIueHoiIHZlcnNpb249IjIuNjcuOTEiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUu
b3JnIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjMwMzY4NjAwMmJkN2Q3YmY5MzIwNGVlYmUw
ZDVlYzlmNWQ1N2QwNzFlMzQxMWUyMzA0ZDZmOGJjZmE5N2VmNzkiPgorICAgICAgICAgICAgaGFz
aD0ic2hhMjU2OjM5MGI1YjI4MjYzZDNiZGY5ODY2ZmE2OTQzNDZjYWE1ZTRiY2I5ODZlMDE0ZTMz
ODNlOWI2MTMwYjcwNmYzZGEiPgogICAgIDwvYnJhbmNoPgogICA8L21lc29uPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375618</attachid>
            <date>2019-08-06 04:04:57 -0700</date>
            <delta_ts>2019-08-08 05:51:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190806140456.patch</filename>
            <type>text/plain</type>
            <size>46195</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY3MDIyZDg5YmYzYWFh
ZWU4ZDUxNzgyNzBlNDQyM2Y4N2YzYTViNC4uNDEzNDE1Yzk5N2E3MGIyNjY5MGM5NTI5NTg1NmM3
MGRlNWY4N2RiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTAyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6
CisKIDIwMTktMDgtMDUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXSBSZW1vdmUgb3V0LW9mLWZsb3cgZGVzY2VuZGFudHMgZnJvbSBDb250YWluZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNGU3NTRiODViOThhMWM1ZDNiMzFmZmRhYTEwZTA0MmZlY2FlNjU2Yy4uODUwMjE2
ZGUyZmFmMDhkMzM0ZGJiMjMwNTM5OTI3ODEzYzUwMzVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NSBAQAorMjAxOS0wOC0wMiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdv
cmsgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgbGlic291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBvcnQgdmlhIGEgU291cFNlc3Np
b25GZWF0dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUgc291cCBuZXR3b3JrIGJhY2tl
bmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBh
bmQgaGFuZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkKKyAgICAgICAgcHJvcGFnYXRp
bmcgdGhlIHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRzLiBUaGlzIHBhdGNoIGFkZHMK
KyAgICAgICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzdGlsbCBw
b3NzaWJsZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3BlcnR5IHRvIHRoZSB3ZWIgY29u
dGV4dCBjbGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIEFQSSB0
byB0aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGRp
cmVjdG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZlZC4gSWYgdGhlIGRpcmVjdG9y
eQorICAgICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1hbmFnZXIgaXMgZXBoZW1lcmFs
LCB1c2UgYQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5IG9ubHkgSFNUUyBlbmZvcmNl
ci4KKworICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0aG9kcyBuZWVkZWQgdG8gY2xl
YW4tdXAgYW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVzIGZyb20gdGhlIHN0b3JhZ2Ug
YW5kIGV4cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAgIE1pbmlCcm93c2VyJ3MgYWJv
dXQ6ZGF0YS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1cHBy
ZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQcm90
b2NvbFVwZ3JhZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpwcm90
b2NvbFVwZ3JhZGVkVmlhSFNUUyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OmhzdHNFbmZvcmNlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRIU1RTRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHA6Cisg
ICAgICAgIChyZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyk6CisgICAgICAgICh0b1dl
YktpdFdlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkpOgorICAgICAgICAodG9X
ZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJz
aXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNp
dGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpoc3RzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRIU1RTU3RvcmFnZURp
cmVjdG9yeSk6CisKIDIwMTktMDgtMDUgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bTWluaUJyb3dzZXJdW1dLMl0gVW5oYW5kbGVkIGtl
eSBldmVudHMgc2hvdWxkIGJlIGJ1YmJsZWQgdXAgdG8gdGhlIHBhcmVudCB3aW5kb3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291
cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3Vw
LmgKaW5kZXggMGI0ZmIzNGY4NmYyNGE0NjIxZTBmOTA2NzA2Nzc1Zjk0ODE4NTk5Ni4uYjJhYmQw
MmU2MDcyMmQ4MjJmMmEwMmVkNzQ4OTI0Y2JjYTUxZjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKQEAgLTMyLDYg
KzMyLDkgQEAgV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91cmlfZnJlZSkK
IFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2llX2ZyZWUpCiBX
VEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9o
ZWFkZXJzX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1
ZmZlcl9mcmVlKQorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKK1dURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKFNvdXBIU1RTUG9saWN5LCBzb3VwX2hzdHNfcG9saWN5X2ZyZWUpOworI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDEy
NmIwM2ViNDE3NWIwN2ExNmFjMTg1OTI3MDUwYTA5OThjYTgzODkuLjcwYjcwN2YwMjc5NjYzZDRj
NDRhMGI4ODlkNjA2ZjU1ZDViZjNlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC01OSw2
ICs1OSwxMiBAQCBzdGF0aWMgU291cE5ldHdvcmtQcm94eVNldHRpbmdzJiBwcm94eVNldHRpbmdz
KCkKICAgICByZXR1cm4gc2V0dGluZ3MuZ2V0KCk7CiB9CiAKK3N0YXRpYyBDU3RyaW5nJiBoc3Rz
U3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENTdHJpbmc+
IGRpcmVjdG9yeTsKKyAgICByZXR1cm4gZGlyZWN0b3J5LmdldCgpOworfQorCiAjaWYgIUxPR19E
SVNBQkxFRAogaW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVyKFNvdXBMb2dnZXIqLCBT
b3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBjaGFyKiBkYXRhLCBncG9p
bnRlcikKIHsKQEAgLTE0MSw2ICsxNDcsNyBAQCBTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3
b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgaWYgKHByb3h5U2V0dGlu
Z3MoKS5tb2RlICE9IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkKICAg
ICAgICAgc2V0dXBQcm94eSgpOwogICAgIHNldHVwTG9nZ2VyKCk7CisgICAgc2V0dXBIU1RTRW5m
b3JjZXIoKTsKIH0KIAogU291cE5ldHdvcmtTZXNzaW9uOjp+U291cE5ldHdvcmtTZXNzaW9uKCkg
PSBkZWZhdWx0OwpAQCAtMTY5LDYgKzE3Niw4NCBAQCBTb3VwQ29va2llSmFyKiBTb3VwTmV0d29y
a1Nlc3Npb246OmNvb2tpZUphcigpIGNvbnN0CiAgICAgcmV0dXJuIFNPVVBfQ09PS0lFX0pBUihz
b3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0NP
T0tJRV9KQVIpKTsKIH0KIAordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldEhTVFNQZXJzaXN0
ZW50U3RvcmFnZShjb25zdCBDU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaHN0c1N0b3JhZ2VE
aXJlY3RvcnkoKSA9IGRpcmVjdG9yeTsKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNl
dHVwSFNUU0VuZm9yY2VyKCkKK3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisg
ICAgaWYgKHNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQ
X1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVy
ZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsK
KworICAgIFNvdXBIU1RTRW5mb3JjZXIqIGVuZm9yY2VyOworICAgIGlmIChoc3RzU3RvcmFnZURp
cmVjdG9yeSgpLmlzTnVsbCgpKQorICAgICAgICBlbmZvcmNlciA9IHNvdXBfaHN0c19lbmZvcmNl
cl9uZXcoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQ1N0cmluZyBzdG9yYWdlUGF0aCA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihoc3RzU3RvcmFnZURpcmVjdG9yeSgpLmRh
dGEoKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKHN0b3JhZ2VQYXRoLmRhdGEoKSwgImhzdHMtc3RvcmFnZS5zcWxpdGUiLCBudWxscHRyKSk7
CisgICAgICAgIGVuZm9yY2VyID0gc291cF9oc3RzX2VuZm9yY2VyX2RiX25ldyhkYkZpbGVuYW1l
LmdldCgpKTsKKyAgICB9CisgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKG1fc291cFNlc3Np
b24uZ2V0KCksIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGVuZm9yY2VyKSk7CisjZW5kaWYKK30KKwor
dm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoSGFzaFNl
dDxTdHJpbmc+JiBob3N0TmFtZXMpCit7CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCA5
MSkKKyAgICBpZiAoIXNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgp
LCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXBI
U1RTRW5mb3JjZXIqIGVuZm9yY2VyID0gU09VUF9IU1RTX0VORk9SQ0VSKHNvdXBfc2Vzc2lvbl9n
ZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikp
OworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGRvbWFpbnMoc291cF9oc3RzX2VuZm9yY2VyX2dldF9k
b21haW5zKGVuZm9yY2VyLCBmYWxzZSkpOworICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBkb21haW5z
LmdldCgpOyBpdGVyICE9IG51bGxwdHI7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7CisgICAgICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGRvbWFpbihzdGF0aWNfY2FzdDxnY2hhcio+KGl0ZXItPmRhdGEpKTsK
KyAgICAgICAgaG9zdE5hbWVzLmFkZChkb21haW4uZ2V0KCkpOworICAgIH0KKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGhvc3ROYW1lcyk7CisjZW5kaWYKK30KKwordm9pZCBTb3VwTmV0d29ya1Nl
c3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdE5hbWVzKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICBpZiAo
IXNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVf
SFNUU19FTkZPUkNFUikpCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXBIU1RTRW5mb3JjZXIq
IGVuZm9yY2VyID0gU09VUF9IU1RTX0VORk9SQ0VSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZSht
X3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpOworICAgIGZvciAo
YXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxTb3VwSFNU
U1BvbGljeT4gcG9saWN5KHNvdXBfaHN0c19wb2xpY3lfbmV3KGhvc3ROYW1lLnV0ZjgoKS5kYXRh
KCksIFNPVVBfSFNUU19QT0xJQ1lfTUFYX0FHRV9QQVNULCBmYWxzZSkpOworICAgICAgICBzb3Vw
X2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlciwgcG9saWN5LmdldCgpKTsKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShob3N0TmFtZXMpOworI2VuZGlmCit9CisKK3ZvaWQg
U291cE5ldHdvcmtTZXNzaW9uOjpjbGVhckhTVFNDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNl
KQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTEpCisgICAgaWYgKCFzb3VwX3Nl
c3Npb25faGFzX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5G
T1JDRVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3VwSFNUU0VuZm9yY2VyKiBlbmZvcmNl
ciA9IFNPVVBfSFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vz
c2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsKKyAgICBHVW5pcXVlUHRyPEdM
aXN0PiBwb2xpY2llcyhzb3VwX2hzdHNfZW5mb3JjZXJfZ2V0X3BvbGljaWVzKGVuZm9yY2VyLCBm
YWxzZSkpOworICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBwb2xpY2llcy5nZXQoKTsgaXRlciAhPSBu
dWxscHRyOyBpdGVyID0gaXRlci0+bmV4dCkgeworICAgICAgICBhdXRvKiBwb2xpY3kgPSBzdGF0
aWNfY2FzdDxTb3VwSFNUU1BvbGljeSo+KGl0ZXItPmRhdGEpOworICAgICAgICBhdXRvIG1vZGlm
aWVkID0gc291cF9kYXRlX3RvX3RpbWVfdChwb2xpY3ktPmV4cGlyZXMpIC0gcG9saWN5LT5tYXhf
YWdlOworICAgICAgICBpZiAobW9kaWZpZWQgPj0gbW9kaWZpZWRTaW5jZS5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHMoKSkgeworICAgICAgICAgICAgR1VuaXF1ZVB0cjxTb3VwSFNUU1BvbGlj
eT4gbmV3UG9saWN5KHNvdXBfaHN0c19wb2xpY3lfbmV3KHBvbGljeS0+ZG9tYWluLCBTT1VQX0hT
VFNfUE9MSUNZX01BWF9BR0VfUEFTVCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHNvdXBfaHN0c19l
bmZvcmNlcl9zZXRfcG9saWN5KGVuZm9yY2VyLCBuZXdQb2xpY3kuZ2V0KCkpOworICAgICAgICB9
CisgICAgICAgIHNvdXBfaHN0c19wb2xpY3lfZnJlZShwb2xpY3kpOworICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxp
bmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQogewogICAgIHdoaWxlICgq
c3RyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5kZXggNWUzMmQzMWFkNGZkYTA3NzlhMjFlMTYzMjg3
ODM3NWJiZjhjYTU0OC4uY2E2MzAzMjBhOGE1ZmVkNTVhNWE0ZDc2Y2ExMzJhNTg5YjczOWIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDb29raWVKYXIoU291cENvb2tpZUphciopOwogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0OwogCisgICAgc3RhdGljIHZvaWQgc2V0SFNUU1BlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IENTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2b2lkIHNldHVwSFNUU0Vu
Zm9yY2VyKCk7CisKICAgICBzdGF0aWMgdm9pZCBjbGVhck9sZFNvdXBDYWNoZShjb25zdCBTdHJp
bmcmIGNhY2hlRGlyZWN0b3J5KTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByb3h5U2V0dGluZ3Mo
Y29uc3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzJik7CkBAIC03Miw2ICs3NSwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShHVHlwZSk7
CiAgICAgdm9pZCBzZXR1cEN1c3RvbVByb3RvY29scygpOwogCisgICAgdm9pZCBnZXRIb3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKEhhc2hTZXQ8U3RyaW5nPiYpOworICAgIHZvaWQgZGVsZXRlSFNUU0Nh
Y2hlRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBjbGVhckhT
VFNDYWNoZShXYWxsVGltZSk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cExvZ2dlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGMzMzM5NTcwYjg3NDBiMTg4OTQ2MjQ3ZjJiYmUwN2E4OGRlMjdhZjkuLjRlYjBiZDlkNjRm
MzBmMzM5ODFlZjA5OTgwMzc4MWMzNWFlOTYxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICB9KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0
aEhTVFNDYWNoZSk7CkBAIC0xMzgzLDcgKzEzODMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aQogICAgIGlmICghc2Vzc2lvbklELmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkg
ewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIG1vZGlmaWVkU2luY2UpOwpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW8KICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyhjb29raWVIb3N0TmFtZXMpOwogICAgIH0KIAotI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hlSG9zdE5hbWVzKTsKQEAgLTE2NzAsNyArMTY3MCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4g
aG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZTsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
ICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0
aEhTVFNUb0RlbGV0ZTsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgZ2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3Jl
Lmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU0NmQ1ZWYzY2NkOGY2YmJlNGMwMTUzZDliYmI3YmVk
OGFjZWZkNjMuLmRiZjIzMTIxNDYyYzhhYzZmOWFkMzA4ZDQzYmU2MjMxZjNiNjE5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE5NCwx
MCArMTk0LDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7CisgICAgYm9v
bCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsg
fQorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIHZvaWQgZ2V0
SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBI
YXNoU2V0PFN0cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwog
ICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7Ci0gICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRl
cm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNDb25u
ZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGZp
bmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3
Li5mMmQ1N2UzMWU4YzQ5NDU0ODk2MzIxNTNlZWUwZDdjYmE0YTdjOTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNTdWZm
aXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rpbmcu
aD4KQEAgLTE0Nyw2ICsxNDgsMTMgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBT
T1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisgICAgaWYgKChtX2N1cnJlbnRSZXF1ZXN0LnVy
bCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmco
KSkgfHwgKG1fY3VycmVudFJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cCIpICYmICFzaG91
bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUoKSkpCisgICAgICAgIHNvdXBfbWVzc2FnZV9kaXNh
YmxlX2ZlYXR1cmUoc291cE1lc3NhZ2UuZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsK
KyAgICBlbHNlCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cF9zZXNzaW9uX2dldF9mZWF0
dXJlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNz
aW9uKCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSwgImhzdHMtZW5mb3JjZWQiLCBHX0NBTExC
QUNLKGhzdHNFbmZvcmNlZCksIHRoaXMpOworI2VuZGlmCisKICAgICAvLyBNYWtlIHN1cmUgd2Ug
aGF2ZSBhbiBBY2NlcHQgaGVhZGVyIGZvciBzdWJyZXNvdXJjZXM7IHNvbWUgc2l0ZXMgd2FudCB0
aGlzIHRvIHNlcnZlIHNvbWUgb2YgdGhlaXIgc3VicmVzb3VyY2VzLgogICAgIGlmICghc291cF9t
ZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNj
ZXB0IikpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwTWVzc2FnZS0+
cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IiwgIiovKiIpOwpAQCAtMTkyLDggKzIwMCwxMiBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCgpCiAgICAgICAgICAgICBzb3Vw
X3Nlc3Npb25fY2FuY2VsX21lc3NhZ2Uoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4o
Km1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgbV9zb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9TVEFU
VVNfQ0FOQ0VMTEVEKTsKICAgICAgICAgbV9zb3VwTWVzc2FnZSA9IG51bGxwdHI7CiAgICAgfQot
ICAgIGlmIChtX3Nlc3Npb24pCisgICAgaWYgKG1fc2Vzc2lvbikgewogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25T
b3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwg
MCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3
LCAxKQorICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEoc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nl
c3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSwgdGhpcyk7Cisj
ZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVzdW1lKCkKQEAg
LTEwNjAsNiArMTA3Miw0NSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2Fs
bGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0YQogICAgIHRhc2stPmRp
ZFN0YXJ0UmVxdWVzdCgpOwogfQogCisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQor
Ym9vbCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5nKCkK
K3sKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGlnYXRpb24gMToKKyAgICAv
LyAgIkxpbWl0IEhTVFMgU3RhdGUgdG8gdGhlIEhvc3RuYW1lLCBvciB0aGUgVG9wIExldmVsIERv
bWFpbiArIDEiCisgICAgaWYgKGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgfHwgaG9zdHNBcmVFcXVh
bChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBtX2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JD
b29raWVzKCkpIHx8IGlzUHVibGljU3VmZml4KG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93
SFNUU1Byb3RvY29sVXBncmFkZSgpCit7CisgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVz
ZSBtaXRnYXRpb24gMjoKKyAgICAvLyAiSWdub3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJlc291cmNl
IFJlcXVlc3RzIHRvIEJsb2NrZWQgRG9tYWlucyIKKyAgICBpZiAoIWlzVG9wTGV2ZWxOYXZpZ2F0
aW9uKCkgJiYgIW1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OnByb3RvY29sVXBncmFkZWRWaWFIU1RTKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKK3sK
KyAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6c3ludGhldGljUmVkaXJlY3RSZXNw
b25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dl
dF91cmkoc291cE1lc3NhZ2UpKSk7CisgICAgY29udGludWVIVFRQUmVkaXJlY3Rpb24oKTsKK30K
Kwordm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNl
ciosIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykK
K3sKKyAgICBpZiAodGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0
YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAhdGFzay0+bV9jbGllbnQpIHsKKyAgICAgICAg
dGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
c291cE1lc3NhZ2UgPT0gdGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSkKKyAgICAgICAgdGFzay0+
cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoc291cE1lc3NhZ2UpOworfQorI2VuZGlmCisKIHZvaWQg
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkU3RhcnRSZXF1ZXN0KCkKIHsKICAgICBtX25ldHdvcmtM
b2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRU
aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmgKaW5kZXggYWQzMDYzZDZiNzI1ZmFmOGJhMTk3MzhjM2FiMzE4NTcw
ZGYwNmYxMC4uMTk5NmExNjU0ZTMxZDMwMGYwOTFhY2JhZTU3NWU3NzUwYjZhMmY4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5oCkBAIC0xMTEsNiArMTExLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
c3RhcnRpbmdDYWxsYmFjayhTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKICNl
bHNlCiAgICAgc3RhdGljIHZvaWQgcmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayhTb3VwU2Vzc2lvbios
IFNvdXBNZXNzYWdlKiwgU291cFNvY2tldCosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKKyNlbmRp
ZgorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICBib29sIHNob3VsZEFsbG93
SFNUU1BvbGljeVNldHRpbmcoKTsKKyAgICBib29sIHNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBn
cmFkZSgpOworICAgIHZvaWQgcHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqKTsK
KyAgICBzdGF0aWMgdm9pZCBoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNz
YWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogI2VuZGlmCiAgICAgdm9pZCBkaWRTdGFydFJl
cXVlc3QoKTsKICAgICBzdGF0aWMgdm9pZCByZXN0YXJ0ZWRDYWxsYmFjayhTb3VwTWVzc2FnZSos
IE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3
MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uOGUzZDQ4NTJlMDgwN2EzZjliMDE0NWQ3OGNi
YjU0NWUxZWU4ZTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTk1LDYgKzk1LDI0IEBAIHN0YXRp
YyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5n
dWFnZXMpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0TmFt
ZXMpCit7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7Cisg
ICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCkuZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZShob3N0TmFtZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVG
b3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3sKKyAgICBjb25zdCBhdXRvKiBz
ZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24o
c3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nl
c3Npb24oKS5kZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoaG9zdE5hbWVzKTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBj
b25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0
d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9uLT5z
b3VwTmV0d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKK30KKwog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKIHsKICAgICBhdXRvIGFjY2VwdExhbmd1YWdlcyA9
IGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcyk7CkBAIC0xMjksNiArMTQ3LDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFu
Z2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKIAogICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJh
bWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7CisKKyAgICBpZiAoIXBhcmFtZXRlcnMuaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldEhT
VFNQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5LnV0Zjgo
KSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGNvbnN0IGF1dG8mIHNlc3Npb24pIHsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgTmV0d29ya1Nlc3Npb25Tb3VwJj4oc2Vzc2lvbiku
c291cE5ldHdvcmtTZXNzaW9uKCkuc2V0dXBIU1RTRW5mb3JjZXIoKTsKKyAgICB9KTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IDljOWE0M2I3M2M0M2RkNmQyYjMyYjdlODYwZDg1ZTYxYmE4MTBiZjIuLmIxMmNmMGQxM2I4ZmZl
ZjA4NmYzN2MxNDYzYzMzOGJmYmI5YWQ1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdMSUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5kaWYKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNjNWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzky
Nzg1NzdmLi41ZDNkOTc4ZGNkYTU2OWM0ZDdmY2Y1YmM2ZGExMGQ4OGY0MzYzZjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0
ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC04NCw2ICs4NCwxMSBAQCBXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7CiB9CiAKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MpOworfQorCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IGJmYzU2N2NlZDViYjE3MDFkM2FjOTI3NjdhZWJhYTQyZGIyYzM5N2EuLmU5NWE3MjM0ZjRiMTgy
ODdmN2RhMzkzYTI1ZjQ4OTk5MmU1OTM1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNDAsNiArMzQwLDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2Nh
Y2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0Nh
Y2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9j
YWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAgICAg
ICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcAppbmRleCA3
Yzk3ZTBiMWIyNGExYjNhNmFhMjEzM2Y4OTRhMWU4YTc4ZTAwMzlkLi5kZDhmY2RmOTlmZWE3ZDAz
ZmU2MWYzYzc0ZGNkODQ3Y2JhNWY2NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCkBAIC03Myw2ICs3Myw3IEBA
IHN0YXRpYyBib29sIHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKGNvbnN0IFdlYnNp
dGVEYXRhUmVjb3JkJiByZWNvcmQpCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcywKICAgICAgICAg
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsCisgICAgICAgIFdlYnNpdGVEYXRh
VHlwZTo6SFNUU0NhY2hlLAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAg
ICBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEsCiAjZW5kaWYKQEAgLTk4LDYgKzk5LDggQEAg
c3RhdGljIFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdG9XZWJLaXRXZWJzaXRlRGF0YVR5cGVzKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VCS0lUX1dF
QlNJVEVfREFUQV9XRUJTUUxfREFUQUJBU0VTOwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCiAgICAgICAgIHJldHVyblZhbHVlIHw9
IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUzsKKyAgICBpZiAodHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICByZXR1cm5WYWx1
ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEU7CiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1
Z0luRGF0YSkpCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfUExV
R0lOX0RBVEE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBjMGY5MWNjNTZlYTUyNDQ4
OWEyNmE4YTE0ZTg1ODRiMmFiNDllNjRlLi5iOTM3ZDdmYmJmMzUxNDA3YmJiOWIwODFhMmZkZDU5
YTQ2Y2IzMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTg0LDYgKzg0LDcgQEAg
ZW51bSB7CiAgICAgUFJPUF9BUFBMSUNBVElPTl9DQUNIRV9ESVJFQ1RPUlksCiAgICAgUFJPUF9J
TkRFWEVEREJfRElSRUNUT1JZLAogICAgIFBST1BfV0VCU1FMX0RJUkVDVE9SWSwKKyAgICBQUk9Q
X0hTVFNfRElSRUNUT1JZLAogICAgIFBST1BfSVNfRVBIRU1FUkFMCiB9OwogCkBAIC0xMDEsNiAr
MTAyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIHsKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBpbmRleGVkREJEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB3ZWJTUUxE
aXJlY3Rvcnk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBIU1RTRGlyZWN0b3J5OwogCiAgICAgR1Jl
ZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBjb29raWVNYW5hZ2VyOwogICAgIFZlY3RvcjxXZWJQ
cm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsKQEAgLTEzNiw2ICsxMzgsOSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJRCwgRwogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShtYW5hZ2VyKSk7CiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfSFNUU19ESVJFQ1RPUlk6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2
YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeShtYW5h
Z2VyKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9pc19lcGhlbWVyYWwobWFuYWdlcikpOwogICAgICAgICBicmVhazsKQEAgLTE3MCw2ICsxNzUs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgYwogICAgIGNhc2UgUFJPUF9XRUJTUUxfRElSRUNU
T1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ192YWx1
ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IU1RT
X0RJUkVDVE9SWToKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+SFNUU0RpcmVjdG9yeS5yZXNldChn
X3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X0lTX0VQSEVNRVJBTDoKICAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQog
ICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwpAQCAtMTkxLDYgKzE5
OSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKICAgICAgICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNl
dChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpLCAiZGF0YWJh
c2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFwcml2LT53ZWJTUUxE
aXJlY3RvcnkpCiAgICAgICAgICAgICBwcml2LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ19idWls
ZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSwgImRhdGFiYXNlcyIsIG51
bGxwdHIpKTsKKyAgICAgICAgaWYgKCFwcml2LT5IU1RTRGlyZWN0b3J5KQorICAgICAgICAgICAg
cHJpdi0+SFNUU0RpcmVjdG9yeS5yZXNldChwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSk7
CiAgICAgfQogCiAgICAgaWYgKHByaXYtPmJhc2VDYWNoZURpcmVjdG9yeSkgewpAQCAtMzMyLDYg
KzM0MiwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3Nf
aW5pdChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgbnVsbHB0ciwK
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSB8IEdfUEFSQU1fREVQUkVDQVRFRCkpKTsKIAor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpoc3RzLWRpcmVjdG9yeToK
KyAgICAgKgorICAgICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEhUVFAgU3RyaWN0LVRyYW5z
cG9ydC1TZWN1cml0eSAoSFNUUykgZGF0YWJhc2Ugd2lsbCBiZSBzdG9yZWQuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi4yNgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9IU1RTX0RJUkVDVE9S
WSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJoc3RzLWRpcmVj
dG9yeSIsCisgICAgICAgICAgICBfKCJIU1RTIERpcmVjdG9yeSIpLAorICAgICAgICAgICAgXygi
VGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgSFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IGRh
dGFiYXNlIHdpbGwgYmUgc3RvcmVkIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZIHwgR19QQVJBTV9ERVBSRUNBVEVEKSkpOworCiAgICAgLyoqCiAg
ICAgICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmlzLWVwaGVtZXJhbDoKICAgICAgKgpAQCAt
Mzc0LDYgKzQwMSw4IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/CiAgICAgICAg
ICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2
LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0SFNU
U1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPkhTVFNEaXJlY3RvcnkgPworICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5IU1RTRGlyZWN0b3J5Lmdl
dCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTYx
Miw2ICs2NDEsMjkgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfd2Vic3FsX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGF0YU0KICAgICByZXR1cm4gcHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfaHN0c19kaXJlY3Rvcnk6CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyCisgKgorICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmhz
dHMtZGlyZWN0b3J5IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IChhbGxvdy1ub25lKTogdGhl
IGRpcmVjdG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzdG9yZWQgb3IgJU5VTEwgaWYg
QG1hbmFnZXIgaXMgZXBoZW1lcmFsLgorICoKKyAqIFNpbmNlOiAyLjI2CisgKi8KK2NvbnN0IGdj
aGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIG51bGxwdHIpOworCisg
ICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7
CisgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhU3RvcmUgJiYgIXByaXYtPndlYnNpdGVEYXRhU3Rv
cmUtPmlzUGVyc2lzdGVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICgh
cHJpdi0+SFNUU0RpcmVjdG9yeSkKKyAgICAgICAgcHJpdi0+SFNUU0RpcmVjdG9yeS5yZXNldChn
X3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkudXRm
OCgpLmRhdGEoKSkpOworICAgIHJldHVybiBwcml2LT5IU1RTRGlyZWN0b3J5LmdldCgpOworfQor
CiAvKioKICAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXI6
CiAgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCkBAIC02NDksNiArNzAx
LDggQEAgc3RhdGljIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBl
cyhXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdl
YnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRf
V0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMpCiAgICAgICAgIHJldHVyblZhbHVlLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgaWYgKHR5cGVzICYg
V0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFKQorICAgICAgICByZXR1cm5WYWx1ZS5hZGQo
V2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEpCiAg
ICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0
YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5o
CmluZGV4IDAxODhlNzdkOTAxMGMxZWRmZjZiMDU3MGVjODRjNWE0M2Y0OGY3MmIuLjljNGQ4MTQ1
ODRmOTc1NjVjZjdkYzc1MzI4ZTA4ODUyZGJmNTFhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRhOwog
ICogQFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE6IFBsdWdpbnMgZGF0YS4KICAqIEBX
RUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVM6IENvb2tpZXMuCiAgKiBAV0VCS0lUX1dFQlNJVEVf
REFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUOiBIYXNoIHNhbHQgdXNlZCB0byBnZW5lcmF0ZSB0aGUg
ZGV2aWNlIGlkcyB1c2VkIGJ5IHdlYnBhZ2VzLiBTaW5jZSAyLjI0CisgKiBAV0VCS0lUX1dFQlNJ
VEVfREFUQV9IU1RTX0NBQ0hFOiBIU1RTIGNhY2hlLiBTaW5jZSAyLjI2CiAgKiBAV0VCS0lUX1dF
QlNJVEVfREFUQV9BTEw6IEFsbCB0eXBlcy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdz
IHJlcHJlc2VudGluZyB0eXBlcyBvZiBXZWJzaXRlIGRhdGEuCkBAIC02Miw3ICs2Myw4IEBAIHR5
cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSAgICAgICAg
ICAgICAgID0gMSA8PCA3LAogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUyAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9I
QVNIX1NBTFQgICAgICAgPSAxIDw8IDksCi0gICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwgICAg
ICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTApIC0gMQorICAgIFdFQktJVF9XRUJTSVRFX0RB
VEFfSFNUU19DQUNIRSAgICAgICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgV0VCS0lUX1dFQlNJ
VEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTEpIC0gMQogfSBXZWJL
aXRXZWJzaXRlRGF0YVR5cGVzOwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
aAppbmRleCA4ZGU3YzRiYjJjMjYwZTU3MGZjNmQwOWViMDQxNGRmOTEyMjNlMzc2Li41NTQ4ZGY0
ZDZlMjkwMmQ1ZjRjMjhiMDdlZjBiYmJkOWRkZmYyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgK
QEAgLTkwLDYgKzkwLDkgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVk
ZGJfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWIKIFdFQktJVF9ERVBSRUNB
VEVEIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3Fs
X2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
ICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0Q29v
a2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5h
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFu
YWdlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGRmNTg1YTJlNmRl
ZWEzODk0YWNmOTQzMDkzY2UzYTE3YjA3MzUyNzIuLjNhYzUwYzE5ZTBlZDUzYmI3YTZiN2ZhMjFk
NGEyZjFlNjljZGU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQw
Myw2ICsxNDAzLDcgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hl
X2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxp
Y2F0aW9uX2NhY2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9p
bmRleGVkZGJfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNx
bF9kaXJlY3RvcnkKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIKIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2ZldGNoX2ZpbmlzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRXZWJzaXRlRGF0YS5oCmluZGV4IDc3OGZmNTA5MTBlOWQ0YzVmODVkNWU3NzRjNjIzYmQx
NWI1NzU2NzcuLjk3M2E1NTA1NjBmZTM4MzBkNmRkODhlYmI0ZGM5NTVjODdiZmJhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRh
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdl
YktpdFdlYnNpdGVEYXRhOwogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE6IFBs
dWdpbnMgZGF0YS4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVM6IENvb2tpZXMuCiAg
KiBAV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUOiBIYXNoIHNhbHQgdXNl
ZCB0byBnZW5lcmF0ZSB0aGUgZGV2aWNlIGlkcyB1c2VkIGJ5IHdlYnBhZ2VzLiBTaW5jZSAyLjI0
CisgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFOiBIU1RTIGNhY2hlLiBTaW5jZSAy
LjI2CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6IEFsbCB0eXBlcy4KICAqCiAgKiBFbnVt
IHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0eXBlcyBvZiBXZWJzaXRlIGRhdGEuCkBA
IC02Miw3ICs2Myw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9Q
TFVHSU5fREFUQSAgICAgICAgICAgICAgID0gMSA8PCA3LAogICAgIFdFQktJVF9XRUJTSVRFX0RB
VEFfQ09PS0lFUyAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lU
RV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQgICAgICAgPSAxIDw8IDksCi0gICAgV0VCS0lUX1dF
QlNJVEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTApIC0gMQorICAg
IFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSAgICAgICAgICAgICAgICA9IDEgPDwgMTAs
CisgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAgICAgID0gKDEg
PDwgMTEpIC0gMQogfSBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzOwogCiBXRUJLSVRfQVBJIEdUeXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuaAppbmRleCAxZTZjYzU2YWE0ZjdlYzM4N2FjNjZkZjYwODEzYzg1
MmJhNzAxMjA5Li44NDU3MTBiNzEzNDdkNzFmMDBjM2UwYTgwZTUxZmM4MzlhMzhlNTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmgKQEAgLTkwLDYgKzkwLDkgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWIKIFdFQktJVF9ERVBSRUNBVEVEIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAq
Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5ICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdF
QktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA2NGVhMzBl
OTNjZDRlOWRkMjRjMzYzZjc5NzNjMGVmMGNkYzBjYWVhLi45MGQ4MzE1MDU4M2M1NDQwYmVlYzI1
NDVjYzQ1Y2MwMzkzNjAwNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xMjc3LDYgKzEyNzcs
NyBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5
CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2Fj
aGVfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9k
aXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9y
eQord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeQogd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcgogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2ZldGNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmlu
aXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMWI3ZjQ0
ZDc2MTRkNWJmNjI0MDc1OGY5N2ZkOTE3MWIwMzZmZDVkMS4uNGQ0NGRkMWQ2YWQ3NjU1M2E2NTgz
MDk5YzA3OTkyNWU4YThlYTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTAsNiArNTAsOSBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX2lu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeTsKICAgICBjb3B5LT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0
aGlzLT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgY29weS0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
CisjaWYgVVNFKEdMSUIpCisgICAgY29weS0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYKICAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeTsKICAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZDM4YWI3MmY1NGJiMjQ4ZDIyYjFkNzBjMzkyYmY1
MGQzN2Q2MmViNy4uNjIzMjkxNTU3ZDJhZWQ2NDg1YWViZWY1MWU0ZjM2ZDQ5NDczMmJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC02MSw3ICs2MSwxMCBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KLQorI2lmIFVTRShHTElCKSAvLyBB
Y2NvcmRpbmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZlbnR1YWxseSBtb3ZlIGhlcmUuCisgICAg
Y29uc3QgU3RyaW5nJiBoc3RzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faHN0
c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJl
Y3RvcnkpOyB9CisjZW5kaWYKICAgICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBz
ZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKQEAgLTExOCw2ICsxMjEsOSBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAg
IFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU3RyaW5n
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisjaWYgVVNFKEdMSUIpCisgICAgU3RyaW5nIG1f
aHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisjZW5kaWYKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBT
dHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjZjOTk2MTNlZTNlZWZiN2Ex
N2Y4MWJkZDU5YWY1YWUyNDczZWE2Ny4uMjBiMzhiMGE0MDU0ZWE5YmZiNzhiZjE2NDkyMDgxNDNj
MmJkY2Q2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA4LTAyICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZl
ZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBJbXBsZW1lbnQgSFNUUyBmb3Ig
dGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRyb2R1Y2VkIEhTVFMgc3VwcG9ydCB2
aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIHRoZSBzb3Vw
IG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1cmUgdG8KKyAgICAgICAgU291cE5l
dHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3RvY29sIHVwZ3JhZGVzLCBieQorICAg
ICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBmdXJ0aGVyIHRvIGNsaWVudHMuIFRo
aXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0dXJlIHVuY29uZGl0aW9uYWxseSwg
YnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAgICBhIGJvb2xlYW4gcHJvcGVydHkg
dG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQuCisKKyAgICAgICAgQWRkaXRpb25h
bGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8gc3BlY2lmeQor
ICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RTIGRhdGFiYXNlIGlzIHNhdmVkLiBJ
ZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQgb3IgaWYgdGhlIGRhdGEgbWFuYWdl
ciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1wZXJzaXN0ZW50LCBtZW1vcnkgb25s
eSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVudCBhcyB3ZWxsIHRoZSBtZXRob2Rz
IG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMKKyAgICAgICAgcG9saWNpZXMgZnJv
bSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJlIGluIEdUSysKKyAgICAgICAgTWlu
aUJyb3dzZXIncyBhYm91dDpkYXRhLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4u
YzoKKyAgICAgICAgKGdvdFdlYnNpdGVEYXRhQ2FsbGJhY2spOgorICAgICAgICAqIGd0ay9qaGJ1
aWxkLm1vZHVsZXM6IEJ1bXAgbGlic291cCB0byAyLjY3LjkxIGZvciB0aGUgbmV3IEFQSXMKKyAg
ICAgICAgKiB3cGUvamhidWlsZC5tb2R1bGVzOiBEaXR0bworCiAyMDE5LTA4LTA1ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtNaW5pQnJvd3Nl
cl1bV0syXSBVbmhhbmRsZWQga2V5IGV2ZW50cyBzaG91bGQgYmUgYnViYmxlZCB1cCB0byB0aGUg
cGFyZW50IHdpbmRvdwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggZGI4MWUxNWQ1MDc5M2IzYzFiNzky
OGIxNDg0M2Y2YWI1YTAxYzgxNC4uNzQxOGZkODI3ZmQ2MzA4NjhkNDk3YTQ1MDAyZmUxYWRmNzZl
NTFmYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00MTQsNiArNDE0LDcgQEAgc3RhdGljIHZvaWQg
Z290V2Vic2l0ZURhdGFDYWxsYmFjayhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIs
IEdBc3luY1Jlc3UKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwg
ZGF0YUxpc3QsICJTZXNzaW9uIFN0b3JhZ2UiLCBXRUJLSVRfV0VCU0lURV9EQVRBX1NFU1NJT05f
U1RPUkFHRSwgTlVMTCwgcGFnZUlEKTsKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBk
YXRhUmVxdWVzdCwgZGF0YUxpc3QsICJMb2NhbCBTdG9yYWdlIiwgV0VCS0lUX1dFQlNJVEVfREFU
QV9MT0NBTF9TVE9SQUdFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0
b3JhZ2VfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJs
ZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkluZGV4ZWREQiBEYXRhYmFzZXMiLCBX
RUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMsIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKKyAg
ICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJIU1RT
IERhdGFiYXNlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFLCB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAg
IGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdp
bnMgRGF0YSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7
CiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAi
T2ZmbGluZSBXZWIgQXBwbGljYXRpb25zIENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZM
SU5FX0FQUExJQ0FUSU9OX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29m
ZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQu
bW9kdWxlcwppbmRleCAwMjRiYWZiNTA3NjgzNzg3N2E3NGZmZDhiYzkxYTBkMThhMjA4NzBlLi5i
ZGEzZTkxMGJjMjBkYzk5YjcwM2JlMmU2MTY2ZTAzMjVkNTMzODFjIDEwMDY0NAotLS0gYS9Ub29s
cy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAg
LTIzOCw5ICsyMzgsOSBAQAogICAgICAgPGRlcCBwYWNrYWdlPSJnbGliLW5ldHdvcmtpbmciLz4K
ICAgICAgIDxkZXAgcGFja2FnZT0ibGlicHNsIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAg
PGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9saWJzb3VwLzIuNjcvbGlic291cC0k
e3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMi42Ny45MCIKKyAgICA8YnJhbmNoIG1vZHVsZT0i
L3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9saWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6
IiB2ZXJzaW9uPSIyLjY3LjkxIgogICAgICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKLSAg
ICAgICAgICAgIGhhc2g9InNoYTI1NjozMDM2ODYwMDJiZDdkN2JmOTMyMDRlZWJlMGQ1ZWM5ZjVk
NTdkMDcxZTM0MTFlMjMwNGQ2ZjhiY2ZhOTdlZjc5Ij4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1
NjozOTBiNWIyODI2M2QzYmRmOTg2NmZhNjk0MzQ2Y2FhNWU0YmNiOTg2ZTAxNGUzMzgzZTliNjEz
MGI3MDZmM2RhIj4KICAgICA8L2JyYW5jaD4KICAgPC9tZXNvbj4KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvd3BlL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL3dwZS9qaGJ1aWxkLm1vZHVsZXMKaW5kZXgg
NWI5NGYxYjU2YzhiMzcyYzA3ZGZkMjYwNzJiYzE4MmE5NzVlMDVhNS4uZDI4NWVkZDFlNGE4NmQ1
ZjEyNDNkOWM3MzVjMDVkOWZlYjQwYmMwMyAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2poYnVpbGQu
bW9kdWxlcworKysgYi9Ub29scy93cGUvamhidWlsZC5tb2R1bGVzCkBAIC05Niw5ICs5Niw5IEBA
CiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgICAgPGRlcCBwYWNr
YWdlPSJsaWJwc2wiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0i
L3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9saWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6
IiB2ZXJzaW9uPSIyLjY3LjkwIgorICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJj
ZXMvbGlic291cC8yLjY3L2xpYnNvdXAtJHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjIuNjcu
OTEiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFzaD0i
c2hhMjU2OjMwMzY4NjAwMmJkN2Q3YmY5MzIwNGVlYmUwZDVlYzlmNWQ1N2QwNzFlMzQxMWUyMzA0
ZDZmOGJjZmE5N2VmNzkiPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjM5MGI1YjI4MjYzZDNi
ZGY5ODY2ZmE2OTQzNDZjYWE1ZTRiY2I5ODZlMDE0ZTMzODNlOWI2MTMwYjcwNmYzZGEiPgogICAg
IDwvYnJhbmNoPgogICA8L21lc29uPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375799</attachid>
            <date>2019-08-08 05:51:17 -0700</date>
            <delta_ts>2019-08-21 08:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190808155115.patch</filename>
            <type>text/plain</type>
            <size>57260</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlNGM4YmRhNGIzMzZk
YmRkZjg4NGNjNGI5MDIwNGY1ZWVkNTIxOS4uMzQwNjdkYWRmNzk2ZGVlNTEyOTE0OWFhODI0Y2Uy
YTQyODMwNmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTAyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6
CisKIDIwMTktMDgtMDggIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFdlYktpdFdlYlByb2Nlc3MgY3Jhc2hlcyB3aGVuIHZpZXdpbmcgYW4gSFRN
TCB3aXRoIGEgPHZpZGVvPiBlbGVtZW50IHJlZmVyZW5jaW5nIHVua25vd24gZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzY2M0ODk4ODlmNzk2YzkyOGFkYTJmMjY3NGY4ZjY1YWRjNGYyNDAzLi4zNTM3YTBiNGU2
N2FmODhhYjA0ODY3Nzk4ZjI1MTMwZjE3MjM1OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBA
CisyMDE5LTA4LTAyICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS11bV1BFXSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBi
YWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTIwNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBs
aWJzb3VwIDIuNjcuMSBpbnRyb2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZl
YXR1cmUuCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBi
eSBhZGRpbmcgdGhlIGZlYXR1cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBo
YW5kbGluZyBIU1RTIHByb3RvY29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0
aGUgc2NoZW1lIGNoYW5nZSBmdXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAg
ICAgICB0aGUgSFNUUyBmZWF0dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3Np
YmxlIHRvIGFkZAorICAgICAgICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0
IGNsYXNzIGlmIGRlc2lyZWQuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRo
ZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0
b3J5IHdoZXJlIHRoZSBIU1RTIGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5Cisg
ICAgICAgIGlzIG5vdCBzZXQgb3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVz
ZSBhCisgICAgICAgIG5vbi1wZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgor
CisgICAgICAgIEltcGxlbWVudCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11
cCBhbmQgZGVsZXRlIEhTVFMKKyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQg
ZXhwb3NlIHRoZSBmZWF0dXJlIGluIEdUSysKKyAgICAgICAgTWluaUJyb3dzZXIncyBhYm91dDpk
YXRhLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFi
bGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y2xlYXJSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUG9saWN5U2V0dGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1Byb3RvY29s
VXBncmFkZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnByb3RvY29s
VXBncmFkZWRWaWFIU1RTKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
aHN0c0VuZm9yY2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNX
aXRoSFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhT
VFNDYWNoZUZvckhvc3ROYW1lcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpj
bGVhckhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEhTVFNEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAg
ICAgKHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKToKKyAgICAgICAgKHRvV2ViS2l0
V2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUpOgorICAgICAgICAod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeSk6CisgICAgICAgICh0b1dlYnNp
dGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVE
YXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURh
dGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmhzdHNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldEhTVFNTdG9yYWdlRGlyZWN0
b3J5KToKKwogMjAxOS0wOC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFR1cm4gc29tZSBJVFAgdGhyZWFkaW5nIEFTU0VSVHMgaW50byBSRUxFQVNFX0FTU0VS
VHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5p
cXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlx
dWVQdHJTb3VwLmgKaW5kZXggMGI0ZmIzNGY4NmYyNGE0NjIxZTBmOTA2NzA2Nzc1Zjk0ODE4NTk5
Ni4uYjJhYmQwMmU2MDcyMmQ4MjJmMmEwMmVkNzQ4OTI0Y2JjYTUxZjVkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgK
QEAgLTMyLDYgKzMyLDkgQEAgV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91
cmlfZnJlZSkKIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2ll
X2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVy
LCBzb3VwX2J1ZmZlcl9mcmVlKQorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKK1dU
Rl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBIU1RTUG9saWN5LCBzb3VwX2hzdHNfcG9saWN5X2Zy
ZWUpOworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDEyNmIwM2ViNDE3NWIwN2ExNmFjMTg1OTI3MDUwYTA5OThjYTgzODkuLmNhZjc5NDNk
NTUxMWFiMjM1ODZjMDU5MWI3MDgwZDgwY2I1ZmVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC01OSw2ICs1OSwxMiBAQCBzdGF0aWMgU291cE5ldHdvcmtQcm94eVNldHRpbmdzJiBwcm94
eVNldHRpbmdzKCkKICAgICByZXR1cm4gc2V0dGluZ3MuZ2V0KCk7CiB9CiAKK3N0YXRpYyBDU3Ry
aW5nJiBoc3RzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PENTdHJpbmc+IGRpcmVjdG9yeTsKKyAgICByZXR1cm4gZGlyZWN0b3J5LmdldCgpOworfQorCiAj
aWYgIUxPR19ESVNBQkxFRAogaW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmludGVyKFNvdXBM
b2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25zdCBjaGFyKiBk
YXRhLCBncG9pbnRlcikKIHsKQEAgLTE0MSw2ICsxNDcsNyBAQCBTb3VwTmV0d29ya1Nlc3Npb246
OlNvdXBOZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgaWYgKHBy
b3h5U2V0dGluZ3MoKS5tb2RlICE9IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczo6TW9kZTo6RGVm
YXVsdCkKICAgICAgICAgc2V0dXBQcm94eSgpOwogICAgIHNldHVwTG9nZ2VyKCk7CisgICAgc2V0
dXBIU1RTRW5mb3JjZXIoKTsKIH0KIAogU291cE5ldHdvcmtTZXNzaW9uOjp+U291cE5ldHdvcmtT
ZXNzaW9uKCkgPSBkZWZhdWx0OwpAQCAtMTY5LDYgKzE3Niw4OCBAQCBTb3VwQ29va2llSmFyKiBT
b3VwTmV0d29ya1Nlc3Npb246OmNvb2tpZUphcigpIGNvbnN0CiAgICAgcmV0dXJuIFNPVVBfQ09P
S0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09V
UF9UWVBFX0NPT0tJRV9KQVIpKTsKIH0KIAordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldEhT
VFNQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBDU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaHN0
c1N0b3JhZ2VEaXJlY3RvcnkoKSA9IGRpcmVjdG9yeTsKK30KKwordm9pZCBTb3VwTmV0d29ya1Nl
c3Npb246OnNldHVwSFNUU0VuZm9yY2VyKCkKK3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwg
NjcsIDEpCisgICAgaWYgKHNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdl
dCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHNvdXBfc2Vzc2lvbl9yZW1v
dmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VO
Rk9SQ0VSKTsKKworICAgIEdSZWZQdHI8U291cEhTVFNFbmZvcmNlcj4gZW5mb3JjZXI7CisgICAg
aWYgKGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkuaXNOdWxsKCkpCisgICAgICAgIGVuZm9yY2VyID0g
YWRvcHRHUmVmKHNvdXBfaHN0c19lbmZvcmNlcl9uZXcoKSk7CisgICAgZWxzZSB7CisgICAgICAg
IGlmIChGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoaHN0c1N0b3JhZ2VEaXJlY3Rvcnko
KS5kYXRhKCkpKSB7CisgICAgICAgICAgICBDU3RyaW5nIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKHN0b3JhZ2VQYXRoLmRhdGEoKSwgImhzdHMtc3RvcmFnZS5zcWxpdGUiLCBudWxscHRyKSk7
CisgICAgICAgICAgICBlbmZvcmNlciA9IGFkb3B0R1JlZihzb3VwX2hzdHNfZW5mb3JjZXJfZGJf
bmV3KGRiRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIHRoZSBIU1RTIHN0b3JhZ2UgZGlyZWN0
b3J5IFwiJXNcIi4gVXNpbmcgYSBtZW1vcnkgZW5mb3JjZXIgaW5zdGVhZC4iLCBoc3RzU3RvcmFn
ZURpcmVjdG9yeS5kYXRhKCkpOworICAgICAgICAgICAgZW5mb3JjZXIgPSBhZG9wdEdSZWYoc291
cF9oc3RzX2VuZm9yY2VyX25ldygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzb3VwX3Nlc3Np
b25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUo
ZW5mb3JjZXIuZ2V0KCkpKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK3sK
KyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDkxKQorICAgIGlmICghc291cF9zZXNzaW9u
X2hhc19mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VS
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cEhTVFNFbmZvcmNlciogZW5mb3JjZXIgPSBT
T1VQX0hTVFNfRU5GT1JDRVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24u
Z2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4g
ZG9tYWlucyhzb3VwX2hzdHNfZW5mb3JjZXJfZ2V0X2RvbWFpbnMoZW5mb3JjZXIsIGZhbHNlKSk7
CisgICAgZm9yIChHTGlzdCogaXRlciA9IGRvbWFpbnMuZ2V0KCk7IGl0ZXIgIT0gbnVsbHB0cjsg
aXRlciA9IGl0ZXItPm5leHQpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZG9tYWluKHN0
YXRpY19jYXN0PGdjaGFyKj4oaXRlci0+ZGF0YSkpOworICAgICAgICBob3N0TmFtZXMuYWRkKGRv
bWFpbi5nZXQoKSk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaG9zdE5hbWVzKTsK
KyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlSFNUU0NhY2hlRm9y
SG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCit7CisjaWYgU09VUF9D
SEVDS19WRVJTSU9OKDIsIDY3LCAxKQorICAgIGlmICghc291cF9zZXNzaW9uX2hhc19mZWF0dXJl
KG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgU291cEhTVFNFbmZvcmNlciogZW5mb3JjZXIgPSBTT1VQX0hTVFNfRU5G
T1JDRVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBf
VFlQRV9IU1RTX0VORk9SQ0VSKSk7CisgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1l
cykgeworICAgICAgICBHVW5pcXVlUHRyPFNvdXBIU1RTUG9saWN5PiBwb2xpY3koc291cF9oc3Rz
X3BvbGljeV9uZXcoaG9zdE5hbWUudXRmOCgpLmRhdGEoKSwgU09VUF9IU1RTX1BPTElDWV9NQVhf
QUdFX1BBU1QsIGZhbHNlKSk7CisgICAgICAgIHNvdXBfaHN0c19lbmZvcmNlcl9zZXRfcG9saWN5
KGVuZm9yY2VyLCBwb2xpY3kuZ2V0KCkpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGhvc3ROYW1lcyk7CisjZW5kaWYKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFy
SFNUU0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisjaWYgU09VUF9DSEVDS19WRVJT
SU9OKDIsIDY3LCA5MSkKKyAgICBpZiAoIXNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBT
ZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHJldHVybjsK
KworICAgIFNvdXBIU1RTRW5mb3JjZXIqIGVuZm9yY2VyID0gU09VUF9IU1RTX0VORk9SQ0VSKHNv
dXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNU
U19FTkZPUkNFUikpOworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHBvbGljaWVzKHNvdXBfaHN0c19l
bmZvcmNlcl9nZXRfcG9saWNpZXMoZW5mb3JjZXIsIGZhbHNlKSk7CisgICAgZm9yIChHTGlzdCog
aXRlciA9IHBvbGljaWVzLmdldCgpOyBpdGVyICE9IG51bGxwdHI7IGl0ZXIgPSBpdGVyLT5uZXh0
KSB7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IHBvbGljeShzdGF0aWNfY2Fz
dDxTb3VwSFNUU1BvbGljeSo+KGl0ZXItPmRhdGEpKTsKKyAgICAgICAgYXV0byBtb2RpZmllZCA9
IHNvdXBfZGF0ZV90b190aW1lX3QocG9saWN5LmdldCgpLT5leHBpcmVzKSAtIHBvbGljeS5nZXQo
KS0+bWF4X2FnZTsKKyAgICAgICAgaWYgKG1vZGlmaWVkID49IG1vZGlmaWVkU2luY2Uuc2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpIHsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8U291cEhT
VFNQb2xpY3k+IG5ld1BvbGljeShzb3VwX2hzdHNfcG9saWN5X25ldyhwb2xpY3kuZ2V0KCktPmRv
bWFpbiwgU09VUF9IU1RTX1BPTElDWV9NQVhfQUdFX1BBU1QsIGZhbHNlKSk7CisgICAgICAgICAg
ICBzb3VwX2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlciwgbmV3UG9saWN5LmdldCgp
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2lu
Y2UpOworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29u
c3QgY2hhciogc3RyKQogewogICAgIHdoaWxlICgqc3RyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggNWUzMmQzMWFkNGZkYTA3NzlhMjFlMTYzMjg3ODM3NWJiZjhjYTU0OC4uY2E2MzAzMjBhOGE1
ZmVkNTVhNWE0ZDc2Y2ExMzJhNTg5YjczOWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNTcs
NiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb29raWVKYXIoU291cENvb2tpZUphciop
OwogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphcigpIGNvbnN0OwogCisgICAgc3RhdGljIHZv
aWQgc2V0SFNUU1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IENTdHJpbmcmIGhzdHNTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICB2b2lkIHNldHVwSFNUU0VuZm9yY2VyKCk7CisKICAgICBzdGF0aWMgdm9p
ZCBjbGVhck9sZFNvdXBDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5KTsKIAogICAg
IHN0YXRpYyB2b2lkIHNldFByb3h5U2V0dGluZ3MoY29uc3QgU291cE5ldHdvcmtQcm94eVNldHRp
bmdzJik7CkBAIC03Miw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0Q3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0VHlwZShHVHlwZSk7CiAgICAgdm9pZCBzZXR1cEN1c3RvbVByb3Rv
Y29scygpOwogCisgICAgdm9pZCBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKEhhc2hTZXQ8U3Ry
aW5nPiYpOworICAgIHZvaWQgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CisgICAgdm9pZCBjbGVhckhTVFNDYWNoZShXYWxsVGltZSk7CisKIHByaXZh
dGU6CiAgICAgdm9pZCBzZXR1cExvZ2dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGMzMzM5NTcwYjg3NDBiMTg4OTQ2MjQ3
ZjJiYmUwN2E4OGRlMjdhZjkuLjRlYjBiZDlkNjRmMzBmMzM5ODFlZjA5OTgwMzc4MWMzNWFlOTYx
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAg
ICB9KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgZ2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjYWxsYmFja0FnZ3JlZ2F0
b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CkBAIC0xMzgzLDcgKzEz
ODMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIGlmICghc2Vzc2lvbklELmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAg
IGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2luY2UpOwpA
QCAtMTQ4NSw3ICsxNDg1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb29raWVI
b3N0TmFtZXMpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hl
SG9zdE5hbWVzKTsKQEAgLTE2NzAsNyArMTY3MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZTsK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2Fj
aGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwpAQCAt
MTg1Niw3ICsxODU2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5z
V2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICB9CiAgICAgCiAg
ICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZTsKLSNpZiBQTEFURk9S
TShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDU0
NmQ1ZWYzY2NkOGY2YmJlNGMwMTUzZDliYmI3YmVkOGFjZWZkNjMuLmRiZjIzMTIxNDYyYzhhYzZm
OWFkMzA4ZDQzYmU2MjMxZjNiNjE5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE5NCwxMCArMTk0LDEyIEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1p
bmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mKTsKICAgICB2b2lk
IGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7Ci0g
ICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNo
YW5nZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihO
ZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5
MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3Li5mMmQ1N2UzMWU4YzQ5NDU0ODk2MzIxNTNl
ZWUwZDdjYmE0YTdjOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNTdWZmaXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KQEAgLTE0Nyw2ICsxNDgsMTMgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEp
CisgICAgaWYgKChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYg
IXNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcoKSkgfHwgKG1fY3VycmVudFJlcXVlc3QudXJs
KCkucHJvdG9jb2xJcygiaHR0cCIpICYmICFzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUo
KSkpCisgICAgICAgIHNvdXBfbWVzc2FnZV9kaXNhYmxlX2ZlYXR1cmUoc291cE1lc3NhZ2UuZ2V0
KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsKKyAgICBlbHNlCisgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3Qoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9IU1RTX0VORk9S
Q0VSKSwgImhzdHMtZW5mb3JjZWQiLCBHX0NBTExCQUNLKGhzdHNFbmZvcmNlZCksIHRoaXMpOwor
I2VuZGlmCisKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBBY2NlcHQgaGVhZGVyIGZvciBz
dWJyZXNvdXJjZXM7IHNvbWUgc2l0ZXMgd2FudCB0aGlzIHRvIHNlcnZlIHNvbWUgb2YgdGhlaXIg
c3VicmVzb3VyY2VzLgogICAgIGlmICghc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShzb3Vw
TWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IikpCiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0Iiwg
IiovKiIpOwpAQCAtMTkyLDggKzIwMCwxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNs
ZWFyUmVxdWVzdCgpCiAgICAgICAgICAgICBzb3VwX3Nlc3Npb25fY2FuY2VsX21lc3NhZ2Uoc3Rh
dGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwg
bV9zb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEKTsKICAgICAgICAgbV9z
b3VwTWVzc2FnZSA9IG51bGxwdHI7CiAgICAgfQotICAgIGlmIChtX3Nlc3Npb24pCisgICAgaWYg
KG1fc2Vzc2lvbikgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNo
ZWQoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Np
b24oKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7
CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorICAgICAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2RhdGEoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19j
YXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBf
VFlQRV9IU1RTX0VORk9SQ0VSKSwgdGhpcyk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6cmVzdW1lKCkKQEAgLTEwNjAsNiArMTA3Miw0NSBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBOZXR3b3JrRGF0YQogICAgIHRhc2stPmRpZFN0YXJ0UmVxdWVzdCgpOwogfQogCisjaWYg
U09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorYm9vbCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpz
aG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5nKCkKK3sKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBI
U1RTIGFidXNlIG1pdGlnYXRpb24gMToKKyAgICAvLyAgIkxpbWl0IEhTVFMgU3RhdGUgdG8gdGhl
IEhvc3RuYW1lLCBvciB0aGUgVG9wIExldmVsIERvbWFpbiArIDEiCisgICAgaWYgKGlzVG9wTGV2
ZWxOYXZpZ2F0aW9uKCkgfHwgaG9zdHNBcmVFcXVhbChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBt
X2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpIHx8IGlzUHVibGljU3VmZml4
KG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSgpCit7Cisg
ICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRnYXRpb24gMjoKKyAgICAvLyAiSWdu
b3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJlc291cmNlIFJlcXVlc3RzIHRvIEJsb2NrZWQgRG9tYWlu
cyIKKyAgICBpZiAoIWlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgJiYgIW1fY3VycmVudFJlcXVlc3Qu
YWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnByb3RvY29sVXBncmFkZWRWaWFIU1RT
KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKK3sKKyAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6c3ludGhldGljUmVkaXJlY3RSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgp
LCBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dldF91cmkoc291cE1lc3NhZ2UpKSk7CisgICAg
Y29udGludWVIVFRQUmVkaXJlY3Rpb24oKTsKK30KKwordm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2Fn
ZSwgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKK3sKKyAgICBpZiAodGFzay0+c3RhdGUoKSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8
fCAhdGFzay0+bV9jbGllbnQpIHsKKyAgICAgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc291cE1lc3NhZ2UgPT0gdGFzay0+bV9zb3Vw
TWVzc2FnZS5nZXQoKSkKKyAgICAgICAgdGFzay0+cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoc291
cE1lc3NhZ2UpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkU3Rh
cnRSZXF1ZXN0KCkKIHsKICAgICBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKaW5kZXggYWQz
MDYzZDZiNzI1ZmFmOGJhMTk3MzhjM2FiMzE4NTcwZGYwNmYxMC4uMTk5NmExNjU0ZTMxZDMwMGYw
OTFhY2JhZTU3NWU3NzUwYjZhMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCkBAIC0xMTEsNiArMTExLDEy
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRpbmdDYWxsYmFjayhTb3VwTWVzc2Fn
ZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKICNlbHNlCiAgICAgc3RhdGljIHZvaWQgcmVxdWVz
dFN0YXJ0ZWRDYWxsYmFjayhTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiwgU291cFNvY2tldCos
IE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKKyNlbmRpZgorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigy
LCA2NywgMSkKKyAgICBib29sIHNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcoKTsKKyAgICBi
b29sIHNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSgpOworICAgIHZvaWQgcHJvdG9jb2xV
cGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBoc3RzRW5mb3Jj
ZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCop
OwogI2VuZGlmCiAgICAgdm9pZCBkaWRTdGFydFJlcXVlc3QoKTsKICAgICBzdGF0aWMgdm9pZCBy
ZXN0YXJ0ZWRDYWxsYmFjayhTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFm
OS4uOGUzZDQ4NTJlMDgwN2EzZjliMDE0NWQ3OGNiYjU0NWUxZWU4ZTlkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKQEAgLTk1LDYgKzk1LDI0IEBAIHN0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3Vh
Z2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0TmFtZXMpCit7CisgICAgY29uc3QgYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0
b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNz
aW9uKCkuZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShob3N0TmFtZXMpOworfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhv
c3ROYW1lcykKK3sKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29y
a1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkp
KTsKKyAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5kZWxldGVIU1RTQ2FjaGVGb3JI
b3N0TmFtZXMoaG9zdE5hbWVzKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RT
Q2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24u
c2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5jbGVhckhT
VFNDYWNoZShtb2RpZmllZFNpbmNlKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykK
IHsKICAgICBhdXRvIGFjY2VwdExhbmd1YWdlcyA9IGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1
YWdlcyk7CkBAIC0xMjksNiArMTQ3LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAg
ICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsK
IAogICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7CisK
KyAgICBpZiAoIXBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAg
ICAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0
ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFtdKGNvbnN0IGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
TmV0d29ya1Nlc3Npb25Tb3VwJj4oc2Vzc2lvbikuc291cE5ldHdvcmtTZXNzaW9uKCkuc2V0dXBI
U1RTRW5mb3JjZXIoKTsKKyAgICB9KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDljOWE0M2I3M2M0M2RkNmQyYjMyYjdlODYw
ZDg1ZTYxYmE4MTBiZjIuLmIxMmNmMGQxM2I4ZmZlZjA4NmYzN2MxNDYzYzMzOGJmYmI5YWQ1Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdM
SUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5k
aWYKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1
ODNjNWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYwNzkyNzg1NzdmLi41ZDNkOTc4ZGNkYTU2OWM0ZDdm
Y2Y1YmM2ZGExMGQ4OGY0MzYzZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC04NCw2
ICs4NCwxMSBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJh
c2VzIik7CiB9CiAKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOworfQorCiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGJmYzU2N2NlZDViYjE3MDFkM2FjOTI3Njdh
ZWJhYTQyZGIyYzM5N2EuLmU5NWE3MjM0ZjRiMTgyODdmN2RhMzkzYTI1ZjQ4OTk5MmU1OTM1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCkBAIC0zNDAsNiArMzQwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0
b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJh
dGlvbi5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19k
aXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcAppbmRleCA3Yzk3ZTBiMWIyNGExYjNhNmFhMjEzM2Y4OTRh
MWU4YTc4ZTAwMzlkLi5kZDhmY2RmOTlmZWE3ZDAzZmU2MWYzYzc0ZGNkODQ3Y2JhNWY2NmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyBib29sIHJlY29yZENvbnRhaW5z
U3VwcG9ydGVkRGF0YVR5cGVzKGNvbnN0IFdlYnNpdGVEYXRhUmVjb3JkJiByZWNvcmQpCiAgICAg
ICAgIFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLAogICAgICAgICBXZWJzaXRlRGF0YVR5
cGU6OldlYlNRTERhdGFiYXNlcywKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJE
YXRhYmFzZXMsCisgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlLAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRh
dGEsCiAjZW5kaWYKQEAgLTk4LDYgKzk5LDggQEAgc3RhdGljIFdlYktpdFdlYnNpdGVEYXRhVHlw
ZXMgdG9XZWJLaXRXZWJzaXRlRGF0YVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGUKICAg
ICAgICAgcmV0dXJuVmFsdWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJTUUxfREFUQUJBU0VT
OwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykpCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhF
RERCX0RBVEFCQVNFUzsKKyAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpI
U1RTQ2FjaGUpKQorICAgICAgICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX0hT
VFNfQ0FDSEU7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSkpCiAgICAgICAgIHJldHVyblZh
bHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmNwcAppbmRleCBkNTNlYTk4ZTUzNmQ0NjFhZjlmYWVlOGQyZmY2MjkyMmZmODEzMTYwLi4z
YjRiOTMzMzUzYTJjZjBmODYxMmE5NGNiMzMzZTlmMGI0Yjc3YmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgZW51bSB7CiAgICAgUFJPUF9BUFBMSUNBVElP
Tl9DQUNIRV9ESVJFQ1RPUlksCiAgICAgUFJPUF9JTkRFWEVEREJfRElSRUNUT1JZLAogICAgIFBS
T1BfV0VCU1FMX0RJUkVDVE9SWSwKKyAgICBQUk9QX0hTVFNfRElSRUNUT1JZLAogICAgIFBST1Bf
SVNfRVBIRU1FUkFMCiB9OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJQcml2YXRlIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbmRleGVkREJEaXJlY3Rvcnk7
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB3ZWJTUUxEaXJlY3Rvcnk7CisgICAgR1VuaXF1ZVB0cjxj
aGFyPiBoc3RzRGlyZWN0b3J5OwogCiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBj
b29raWVNYW5hZ2VyOwogICAgIFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsK
QEAgLTEzNiw2ICsxMzgsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgRwogICAgICAgICBnX3Zh
bHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vi
c3FsX2RpcmVjdG9yeShtYW5hZ2VyKSk7CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSFNUU19ESVJFQ1RPUlk6
CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeShtYW5hZ2VyKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlcikpOwog
ICAgICAgICBicmVhazsKQEAgLTE3MCw2ICsxNzUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
YwogICAgIGNhc2UgUFJPUF9XRUJTUUxfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2
LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IU1RTX0RJUkVDVE9SWToKKyAgICAgICAgbWFuYWdl
ci0+cHJpdi0+aHN0c0RpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgaWYg
KGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQogICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+
d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lz
dGVudERhdGFTdG9yZSgpOwpAQCAtMTkxLDYgKzE5OSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgICAg
IHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJh
c2VEYXRhRGlyZWN0b3J5LmdldCgpLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIp
KTsKICAgICAgICAgaWYgKCFwcml2LT53ZWJTUUxEaXJlY3RvcnkpCiAgICAgICAgICAgICBwcml2
LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURp
cmVjdG9yeS5nZXQoKSwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKKyAgICAgICAgaWYgKCFwcml2
LT5oc3RzRGlyZWN0b3J5KQorICAgICAgICAgICAgcHJpdi0+aHN0c0RpcmVjdG9yeS5yZXNldChn
X3N0cmR1cChwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSkpOwogICAgIH0KIAogICAgIGlm
IChwcml2LT5iYXNlQ2FjaGVEaXJlY3RvcnkpIHsKQEAgLTMzMiw2ICszNDIsMjMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyQ2xhc3MKICAgICAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKSk7CiAKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aHN0cy1kaXJlY3Rvcnk6CisgICAgICoKKyAgICAgKiBU
aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIVFRQIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkgKEhT
VFMpIGRhdGFiYXNlIHdpbGwgYmUgc3RvcmVkLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjYK
KyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBn
T2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSFNUU19ESVJFQ1RPUlksCisgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAiaHN0cy1kaXJlY3RvcnkiLAorICAgICAgICAg
ICAgXygiSFNUUyBEaXJlY3RvcnkiKSwKKyAgICAgICAgICAgIF8oIlRoZSBkaXJlY3Rvcnkgd2hl
cmUgdGhlIEhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSBkYXRhYmFzZSB3aWxsIGJlIHN0
b3JlZCIpLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M
WSB8IEdfUEFSQU1fREVQUkVDQVRFRCkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcjppcy1lcGhlbWVyYWw6CiAgICAgICoKQEAgLTM3NCw2ICs0MDEsOCBAQCBB
UEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9y
ZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KCFwcml2LT5oc3RzRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0RpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBj
b25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2Fj
eShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC02MTIsNiArNjQxLDI5IEBAIGNv
bnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3Rv
cnkoV2ViS2l0V2Vic2l0ZURhdGFNCiAgICAgcmV0dXJuIHByaXYtPndlYlNRTERpcmVjdG9yeS5n
ZXQoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNf
ZGlyZWN0b3J5OgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgorICoK
KyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpoc3RzLWRpcmVjdG9yeSBwcm9w
ZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRoZSBkaXJlY3Rvcnkgd2hlcmUg
dGhlIEhTVFMgZGF0YWJhc2UgaXMgc3RvcmVkIG9yICVOVUxMIGlmIEBtYW5hZ2VyIGlzIGVwaGVt
ZXJhbC4KKyAqCisgKiBTaW5jZTogMi4yNgorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJ
VEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKKworICAgIFdlYktpdFdlYnNpdGVE
YXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OworICAgIGlmIChwcml2LT53
ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXByaXYtPmhzdHNEaXJlY3Rv
cnkpCisgICAgICAgIHByaXYtPmhzdHNEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICByZXR1cm4gcHJpdi0+aHN0c0RpcmVjdG9yeS5nZXQoKTsKK30KKwogLyoqCiAgKiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyOgogICogQG1hbmFnZXI6IGEg
I1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpAQCAtNjQ5LDYgKzcwMSw4IEBAIHN0YXRpYyBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV2ViS2l0V2Vic2l0ZURh
dGFUeXBlcyB0eXBlCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6Oldl
YlNRTERhdGFiYXNlcyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRF
WEVEREJfREFUQUJBU0VTKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfSFNUU19DQUNIRSkKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
SFNUU0NhY2hlKTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAodHlw
ZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBKQogICAgICAgICByZXR1cm5WYWx1
ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAppbmRleCAwMTg4ZTc3ZDkw
MTBjMWVkZmY2YjA1NzBlYzg0YzVhNDNmNDhmNzJiLi45YzRkODE0NTg0Zjk3NTY1Y2Y3ZGM3NTMy
OGUwODg1MmRiZjUxYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJzaXRlRGF0YSBXZWJLaXRXZWJzaXRlRGF0YTsKICAqIEBXRUJLSVRfV0VCU0lU
RV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVnaW5zIGRhdGEuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFU
QV9DT09LSUVTOiBDb29raWVzLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hB
U0hfU0FMVDogSGFzaCBzYWx0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRldmljZSBpZHMgdXNlZCBi
eSB3ZWJwYWdlcy4gU2luY2UgMi4yNAorICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNI
RTogSFNUUyBjYWNoZS4gU2luY2UgMi4yNgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBB
bGwgdHlwZXMuCiAgKgogICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlw
ZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAtNjIsNyArNjMsOCBAQCB0eXBlZGVmIGVudW0gewogICAg
IFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEgICAgICAgICAgICAgICA9IDEgPDwgNywK
ICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDgsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUICAgICAgID0g
MSA8PCA5LAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAg
ICA9ICgxIDw8IDEwKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAg
ICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAg
ICAgICAgICAgICAgICAgICA9ICgxIDw8IDExKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBl
czsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggOGRlN2M0YmIy
YzI2MGU1NzBmYzZkMDllYjA0MTRkZjkxMjIzZTM3Ni4uNTU0OGRmNGQ2ZTI5MDJkNWY0YzI4YjA3
ZWYwYmJiZDlkZGZmMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCkBAIC05MCw2ICs5MCw5IEBA
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViCiBXRUJLSVRfREVQUkVDQVRFRCBjb25zdCBnY2hhciAq
CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dF
QktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9o
c3RzX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIgKm1hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdENvb2tpZU1hbmFnZXIgKgogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlciAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBkZjU4NWEyZTZkZWVhMzg5NGFjZjk0MzA5M2Nl
M2ExN2IwNzM1MjcyLi4zYWM1MGMxOWUwZWQ1M2JiN2E2YjdmYTIxZDRhMmYxZTY5Y2RlNzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE0MDMsNiArMTQwMyw3IEBAIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJl
Y3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5Cit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZmV0Y2gKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaF9maW5pc2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEu
aAppbmRleCA3NzhmZjUwOTEwZTlkNGM1Zjg1ZDVlNzc0YzYyM2JkMTViNTc1Njc3Li45NzNhNTUw
NTYwZmUzODMwZDZkZDg4ZWJiNGRjOTU1Yzg3YmZiYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5oCkBAIC00NSw2ICs0NSw3
IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YSBXZWJLaXRXZWJzaXRlRGF0YTsK
ICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVnaW5zIGRhdGEuCiAgKiBA
V0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICogQFdFQktJVF9XRUJTSVRF
X0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQgdG8gZ2VuZXJhdGUgdGhl
IGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAorICogQFdFQktJVF9XRUJT
SVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4yNgogICogQFdFQktJVF9X
RUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2YWx1ZXMgd2l0aCBmbGFn
cyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAtNjIsNyArNjMsOCBAQCB0
eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEgICAgICAg
ICAgICAgICA9IDEgPDwgNywKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURf
SEFTSF9TQUxUICAgICAgID0gMSA8PCA5LAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAg
ICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEwKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9E
QVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIFdFQktJVF9XRUJT
SVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDExKSAtIDEKIH0gV2Vi
S2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmgKaW5kZXggMWU2Y2M1NmFhNGY3ZWMzODdhYzY2ZGY2MDgxM2M4NTJiYTcwMTIwOS4uODQ1NzEw
YjcxMzQ3ZDcxZjAwYzNlMGE4MGU1MWZjODM5YTM4ZTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5o
CkBAIC05MCw2ICs5MCw5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhl
ZGRiX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViCiBXRUJLSVRfREVQUkVD
QVRFRCBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNx
bF9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdENv
b2tpZU1hbmFnZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFu
YWdlciAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1h
bmFnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggNjRlYTMwZTkzY2Q0ZTlkZDI0YzM2M2Y3
OTczYzBlZjBjZGMwY2FlYS4uOTBkODMxNTA1ODNjNTQ0MGJlZWMyNTQ1Y2M0NWNjMDM5MzYwMDY4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0x
LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9j
cy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTI3Nyw2ICsxMjc3LDcgQEAgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeQogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5CiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkKK3dlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfY29va2llX21hbmFnZXIKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRj
aAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDFiN2Y0NGQ3NjE0ZDViZjYyNDA3NThm
OTdmZDkxNzFiMDM2ZmQ1ZDEuLjRkNDRkZDFkNmFkNzY1NTNhNjU4MzA5OWMwNzk5MjVlOGE4ZWE2
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTUwLDYg
KzUwLDkgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQor
ICAgIGNvcHktPm1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2hzdHNTdG9yYWdlRGly
ZWN0b3J5OworI2VuZGlmCiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlz
LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+
bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2RldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCmluZGV4IGQzOGFiNzJmNTRiYjI0OGQyMmIxZDcwYzM5MmJmNTBkMzdkNjJlYjcuLjYyMzI5
MTU1N2QyYWVkNjQ4NWFlYmVmNTFlNGYzNmQ0OTQ3MzJiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogCiAgICAgY29u
c3QgU3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV1RG
TW92ZShkaXJlY3RvcnkpOyB9Ci0KKyNpZiBVU0UoR0xJQikgLy8gQWNjb3JkaW5nIHRvIHIyNDUw
NzUgdGhpcyB3aWxsIGV2ZW50dWFsbHkgbW92ZSBoZXJlLgorICAgIGNvbnN0IFN0cmluZyYgaHN0
c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5
OyB9CisgICAgdm9pZCBzZXRIU1RTU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3Rvcnkp
IHsgbV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorI2VuZGlm
CiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdU
Rk1vdmUoZGlyZWN0b3J5KTsgfQogCkBAIC0xMTgsNiArMTIxLDkgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OworI2lmIFVTRShHTElCKQorICAgIFN0cmluZyBtX2hzdHNTdG9yYWdlRGlyZWN0
b3J5OworI2VuZGlmCiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkyZGIxZjk1ZmQ5OGU0NWVjM2RlZjQxZTE1YmNhNjIyYzEz
NDQzNjIuLjQ5ODVlNmNmNGI1NmJmNTI0OTlhYjMzNWU0M2ZjOTU4YzZlYzY3YzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBA
QAorMjAxOS0wOC0wMiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdvcmsg
YmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
bGlic291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBvcnQgdmlhIGEgU291cFNlc3Npb25G
ZWF0dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUgc291cCBuZXR3b3JrIGJhY2tlbmQg
YnkgYWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBhbmQg
aGFuZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkKKyAgICAgICAgcHJvcGFnYXRpbmcg
dGhlIHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRzLiBUaGlzIHBhdGNoIGFkZHMKKyAg
ICAgICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzdGlsbCBwb3Nz
aWJsZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3BlcnR5IHRvIHRoZSB3ZWIgY29udGV4
dCBjbGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIEFQSSB0byB0
aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGRpcmVj
dG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZlZC4gSWYgdGhlIGRpcmVjdG9yeQor
ICAgICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1hbmFnZXIgaXMgZXBoZW1lcmFsLCB1
c2UgYQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5IG9ubHkgSFNUUyBlbmZvcmNlci4K
KworICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0aG9kcyBuZWVkZWQgdG8gY2xlYW4t
dXAgYW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVzIGZyb20gdGhlIHN0b3JhZ2UgYW5k
IGV4cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAgIE1pbmlCcm93c2VyJ3MgYWJvdXQ6
ZGF0YS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChnb3RX
ZWJzaXRlRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAg
ICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAodGVzdFdlYnNp
dGVEYXRhRXBoZW1lcmFsKToKKyAgICAgICAgKHByZXBvcHVsYXRlSHN0c0RhdGEpOgorICAgICAg
ICAodGVzdFdlYnNpdGVEYXRhSHN0cyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmg6CisgICAgICAgIChUZXN0
OjpUZXN0KToKKyAgICAgICAgKiBndGsvamhidWlsZC5tb2R1bGVzOiBCdW1wIGxpYnNvdXAgdG8g
Mi42Ny45MSBmb3IgdGhlIG5ldyBBUElzCisgICAgICAgICogd3BlL2poYnVpbGQubW9kdWxlczog
RGl0dG8KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoZ290V2Vi
c2l0ZURhdGFDYWxsYmFjayk6CisKIDIwMTktMDgtMDggIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlh
LmNvbT4KIAogICAgICAgICBJbXBvcnQgbGF6eSBsb2FkaW5nIFdQVCB0ZXN0cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMKaW5kZXggZGI4MWUxNWQ1MDc5M2IzYzFiNzkyOGIxNDg0M2Y2YWI1YTAxYzgxNC4uNzQx
OGZkODI3ZmQ2MzA4NjhkNDk3YTQ1MDAyZmUxYWRmNzZlNTFmYiAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
CkBAIC00MTQsNiArNDE0LDcgQEAgc3RhdGljIHZvaWQgZ290V2Vic2l0ZURhdGFDYWxsYmFjayhX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsIEdBc3luY1Jlc3UKICAgICBhYm91dERh
dGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJTZXNzaW9uIFN0b3Jh
Z2UiLCBXRUJLSVRfV0VCU0lURV9EQVRBX1NFU1NJT05fU1RPUkFHRSwgTlVMTCwgcGFnZUlEKTsK
ICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJM
b2NhbCBTdG9yYWdlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFLCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KG1hbmFnZXIp
LCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBk
YXRhTGlzdCwgIkluZGV4ZWREQiBEYXRhYmFzZXMiLCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVY
RUREQl9EQVRBQkFTRVMsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKKyAgICBhYm91dERhdGFGaWxsVGFibGUocmVz
dWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJIU1RTIERhdGFiYXNlIiwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9IU1RTX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNf
ZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1
bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdpbnMgRGF0YSIsIFdFQktJVF9XRUJTSVRF
X0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxl
KHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiT2ZmbGluZSBXZWIgQXBwbGljYXRpb25z
IENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFLCB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVf
ZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDJmN2M4
MWYxNzEyMGE3YzI5NmYzOWFmNTJlZDRkZGI5NmUzNzY2NDIuLjdmZWRhMjQwMTYwYjg3NDkyZTA3
Yjc0Y2QzYTMzZWVlNmIxNzNhYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC0xOSw2ICsxOSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNv
dXAuaD4KICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rl
c3QuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzUsNiArMzYsNyBAQCBzdGF0aWMg
dm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjaGFyKgogICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5IikpIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9ICI8aHRtbD48Ym9keT48L2Jv
ZHk+PC9odG1sPiI7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2Fn
ZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIp
OworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNl
X2hlYWRlcnMsICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgIm1heC1hZ2U9MzYwMCIpOwog
ICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwg
U09VUF9NRU1PUllfU1RBVElDLCBlbXB0eUhUTUwsIHN0cmxlbihlbXB0eUhUTUwpKTsKICAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsK
QEAgLTE2Miw5ICsxNjQsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJh
dGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRf
Y21wc3RyKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CiAgICAg
Z19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCksIEdfRklM
RV9URVNUX0lTX0RJUikpOwogCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3RzRGlyZWN0b3J5KGdf
YnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaHN0cyIsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIoaHN0c0RpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChoc3RzRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVf
VEVTVF9JU19ESVIpKTsKKwogICAgIC8vIENsZWFyIGFsbCBwZXJzaXN0ZW50IGNhY2hlcywgc2lu
Y2UgdGhlIGRhdGEgZGlyIGlzIGNvbW1vbiB0byBhbGwgdGVzdCBjYXNlcy4KICAgICBzdGF0aWMg
Y29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBwZXJzaXN0ZW50Q2FjaGVzID0gc3RhdGljX2Nh
c3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hF
IHwgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFCi0gICAgICAgIHwgV0VCS0lUX1dF
QlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZM
SU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFT
SF9TQUxUKTsKKyAgICAgICAgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFT
RVMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUgfCBXRUJL
SVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQgfCBXRUJLSVRfV0VCU0lURV9EQVRB
X0hTVFNfQ0FDSEUpOwogICAgIHRlc3QtPmNsZWFyKHBlcnNpc3RlbnRDYWNoZXMsIDApOwogICAg
IGdfYXNzZXJ0X251bGwodGVzdC0+ZmV0Y2gocGVyc2lzdGVudENhY2hlcykpOwogCkBAIC0xNzYs
NiArMTgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSh0ZXN0LT5t
X21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJf
ZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5h
Z2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkoZGVmYXVsdE1hbmFnZXIpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeSh0
ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZs
aW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShkZWZhdWx0TWFuYWdlcikpOworICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0
b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2hzdHNfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAKICAgICAvLyBVc2luZyBUZXN0Ojpk
YXRhRGlyZWN0b3J5KCkgd2UgZ2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYnV0IGZvciBh
IGRpZmZlcnJlbnQgcHJlZml4LgogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
PiBiYXNlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X25ldygiYmFzZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImJhc2Ut
Y2FjaGUtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBudWxscHRyKSk7CkBAIC0y
MjIsNiArMjI5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgp
KSk7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29m
ZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKICAgICBn
X2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2Rp
cmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKIAogICAg
IC8vIENvbmZpZ3VyYXRpb24gaXMgaWdub3JlZCB3aGVuIGlzLWVwaGVtZXJhbCBpcyB1c2VkLgog
ICAgIG1hbmFnZXIgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgImJhc2UtZGF0YS1kaXJl
Y3RvcnkiLCBUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJpcy1lcGhlbWVyYWwiLCBUUlVFLCBudWxs
cHRyKSkpOwpAQCAtNDgxLDYgKzQ4OSw2NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFB
cHBjYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3Nl
cnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDkx
KQorc3RhdGljIHZvaWQgcHJlcG9wdWxhdGVIc3RzRGF0YSgpCit7CisgICAgLy8gSFNUUyBoZWFk
ZXJzIHdpbGwgYmUgaWdub3JlZCBpbiB0aGlzIHRlc3QgYmVjYXVzZSB0aGUgc3BlYyBmb3JiaWRz
IFNUUyBwb2xpY2llcyBmcm9tIGJlaW5nIGhvbm9yZWQgZm9yIGhvc3RzIHdpdGgKKyAgICAvLyBh
biBJUCBhZGRyZXNzIGluc3RlYWQgb2YgYSBkb21haW4uIEluIG9yZGVyIHRvIGJlIGFibGUgdG8g
dGVzdCB0aGUgZGF0YSBtYW5hZ2VyIEFQSSB3aXRoIEhTVFMgd2Vic2l0ZSBkYXRhLCB3ZQorICAg
IC8vIHByZXBvcHVsYXRlIHRoZSBIU1RTIHN0b3JhZ2UgdXNpbmcgdGhlIGxpYnNvdXAgQVBJIGRp
cmVjdGx5LgorCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3RzRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaHN0cyIsIG51bGxwdHIpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IGhzdHNEYXRhYmFzZShnX2J1aWxkX2ZpbGVuYW1lKGhzdHNEaXJlY3Rvcnku
Z2V0KCksICJoc3RzLXN0b3JhZ2Uuc3FsaXRlIiwgbnVsbHB0cikpOworICAgIGdfbWtkaXJfd2l0
aF9wYXJlbnRzKGhzdHNEaXJlY3RvcnkuZ2V0KCksIDA3MDApOworCisgICAgR1JlZlB0cjxTb3Vw
SFNUU0VuZm9yY2VyPiBlbmZvcmNlciA9IGFkb3B0R1JlZihzb3VwX2hzdHNfZW5mb3JjZXJfZGJf
bmV3KGhzdHNEYXRhYmFzZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+
IHBvbGljeShzb3VwX2hzdHNfcG9saWN5X25ldygid2Via2l0Z3RrLm9yZyIsIDM2MDAsIHRydWUp
KTsKKyAgICBzb3VwX2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlci5nZXQoKSwgcG9s
aWN5LmdldCgpKTsKKworICAgIC8vIFdlIHdhaXQgNSBzZWNvbmRzIGJlZm9yZSBhZGRpbmcgbW9y
ZSBlbnRyaWVzIHNvIHRoYXQgd2UgY2FuIHRlc3QgdGhlIGNsZWFyIEFQSSB3aXRoIGEgdGltZSBv
dGhlciB0aGFuIHplcm8uCisgICAgc2xlZXAoNSk7CisKKyAgICBwb2xpY3kucmVzZXQoc291cF9o
c3RzX3BvbGljeV9uZXcoImdub21lLm9yZyIsIDM2MDAsIHRydWUpKTsKKyAgICBzb3VwX2hzdHNf
ZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlci5nZXQoKSwgcG9saWN5LmdldCgpKTsKKyAgICBw
b2xpY3kucmVzZXQoc291cF9oc3RzX3BvbGljeV9uZXcoIndlYmtpdC5vcmciLCAzNjAwLCB0cnVl
KSk7CisgICAgc291cF9oc3RzX2VuZm9yY2VyX3NldF9wb2xpY3koZW5mb3JjZXIuZ2V0KCksIHBv
bGljeS5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUhzdHMoV2Vic2l0
ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdMaXN0KiBkYXRhTGlzdCA9
IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSk7CisgICAgZ19hc3Nl
cnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDMpOworICAgIFdlYktpdFdl
YnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlz
dC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90
eXBlcyhkYXRhKSwgPT0sIFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSk7CisgICAgLy8g
SFNUUyBkYXRhIHNpemUgaXMgdW5rbm93bi4KKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93
ZWJzaXRlX2RhdGFfZ2V0X3NpemUoZGF0YSwgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hF
KSwgPT0sIDApOworCisgICAgLy8gVGhlIGxhc3QgcGFydCBvZiB0aGUgdGVzdCBhc3N1bWVzIHRo
YXQgdGhlIGVudHJ5IHRvIGJlIGRlbGV0ZWQgbmV4dCBpcyBOT1QgdGhlIG9uZSBmb3Igd2Via2l0
Z3RrLm9yZywgd2hpY2ggY2Fubm90IGJlCisgICAgLy8gZ3VhcmFudGVlZCBieSB0aGUgQVBJIHVu
Zm9ydHVuYXRlbHkuIFdoaWxlIHRoYXQgaGFwcGVuaW5nIHdvdWxkbid0IGNvbnN0aXR1dGUgYW4g
QVBJIGVycm9yLCBhc3NlcnQgb24gdGhhdCBqdXN0IHRvIG1ha2UKKyAgICAvLyBzdXJlIHRoYXQg
dGhlIHJlc3Qgb2YgdGhlIHRlc3Qgd29ya3MuIElmIHRoaXMgaGFwcGVucyB0byBmYWlsIGF0IHNv
bWUgcG9pbnQsIHRoZSB0ZXN0IHdpbGwgbmVlZCBmaXhpbmcsIG5vdCB0aGUgY29kZS4KKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgIT0sICJ3
ZWJraXRndGsub3JnIik7CisKKyAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRy
LCBudWxscHRyIH07CisgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19D
QUNIRSwgJnJlbW92ZUxpc3QpOworICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dF
QlNJVEVfREFUQV9IU1RTX0NBQ0hFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5n
dGgoZGF0YUxpc3QpLCA9PSwgMik7CisgICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNp
dGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dl
YnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSksID09LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNf
Q0FDSEUpOworCisgICAgLy8gUmVtb3ZlIGFsbCBIU1RTIGRhdGEgdGhhdCBpcyBsZXNzIHRoYW4g
MyBzZWNvbmRzIG9sZC4gVGhpcyB3aWxsIG9ubHkgbGVhdmUgdGhlIGZpcnN0IHBvbGljeSB0aGF0
IHdhcyBhZGRlZCBpbgorICAgIC8vIHByZXBvcHVsYXRlSHN0c0RhdGEoKSBhYm92ZS4KKyAgICB0
ZXN0LT5jbGVhcihXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUsIDMgKiAxMDAwICogMTAw
MCk7CisgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNf
Q0FDSEUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09
LCAxKTsKKyAgICBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlz
dC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25h
bWUoZGF0YSksID09LCAid2Via2l0Z3RrLm9yZyIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSksID09LCBXRUJLSVRfV0VCU0lURV9EQVRB
X0hTVFNfQ0FDSEUpOworCisgICAgLy8gUmVtb3ZlIGFsbCBIU1RTIGRhdGEuCisgICAgdGVzdC0+
Y2xlYXIoV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFLCAwKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSkpOworfQorI2Vu
ZGlmCisKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMoV2Vic2l0ZURhdGFUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZl
dGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUyk7CkBAIC01NjksNiArNjM3LDEwIEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKICAg
ICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCisjaWYgU09VUF9DSEVDS19WRVJTSU9O
KDIsIDY3LCA5MSkKKyAgICBwcmVwb3B1bGF0ZUhzdHNEYXRhKCk7CisjZW5kaWYKKwogICAgIFdl
YnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJjb25maWd1cmF0aW9uIiwg
dGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbik7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2Vic2l0ZURhdGEiLCAiZXBoZW1lcmFsIiwgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKTsK
ICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY2FjaGUiLCB0
ZXN0V2Vic2l0ZURhdGFDYWNoZSk7CkBAIC01NzYsNiArNjQ4LDkgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJkYXRhYmFz
ZXMiLCB0ZXN0V2Vic2l0ZURhdGFEYXRhYmFzZXMpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRk
KCJXZWJLaXRXZWJzaXRlRGF0YSIsICJhcHBjYWNoZSIsIHRlc3RXZWJzaXRlRGF0YUFwcGNhY2hl
KTsKICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY29va2ll
cyIsIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMpOworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2
NywgOTEpCisgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImhz
dHMiLCB0ZXN0V2Vic2l0ZURhdGFIc3RzKTsKKyNlbmRpZgogICAgIFdlYnNpdGVEYXRhVGVzdDo6
YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJkZXZpY2VpZGhhc2hzYWx0IiwgdGVzdFdlYnNpdGVE
YXRhRGV2aWNlSWRIYXNoU2FsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4IDk1NTUyMGM4NWVmMTk2ZDNiMjM4MTY4ZDRkYWZm
ZjIxZTc3MzNkNmQuLjI0ZjRiMmYwY2ZjNzNiMjQyNGM0ZjhmYTM0N2I5ZjE3NjQzMjQyNWMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAt
MTIxLDEwICsxMjEsMTEgQEAgcHVibGljOgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tD
YWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImRpc2stY2Fj
aGUiLCBudWxscHRyKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImFwcGNhY2hlIiwg
bnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeShnX2J1
aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgIndlYnNxbCIsIG51bGxwdHIpKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3RzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZGF0YURp
cmVjdG9yeSgpLCAiaHN0cyIsIG51bGxwdHIpKTsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfbmV3KAogICAgICAgICAgICAgImxvY2FsLXN0b3JhZ2UtZGlyZWN0
b3J5IiwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpLCAiaW5kZXhlZGRiLWRpcmVjdG9yeSIs
IGluZGV4ZWREQkRpcmVjdG9yeS5nZXQoKSwKICAgICAgICAgICAgICJkaXNrLWNhY2hlLWRpcmVj
dG9yeSIsIGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgIm9mZmxpbmUtYXBwbGljYXRpb24tY2Fj
aGUtZGlyZWN0b3J5IiwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSwKLSAgICAgICAg
ICAgICJ3ZWJzcWwtZGlyZWN0b3J5Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCBudWxscHRyKSk7
CisgICAgICAgICAgICAid2Vic3FsLWRpcmVjdG9yeSIsIHdlYlNRTERpcmVjdG9yeS5nZXQoKSwg
ImhzdHMtZGlyZWN0b3J5IiwgaHN0c0RpcmVjdG9yeS5nZXQoKSwgbnVsbHB0cikpOwogCiAgICAg
ICAgIG1fd2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhf
d2Vic2l0ZV9kYXRhX21hbmFnZXIod2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAiaW5pdGlhbGl6ZS13ZWItZXh0
ZW5zaW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayksIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9q
aGJ1aWxkLm1vZHVsZXMKaW5kZXggMDI0YmFmYjUwNzY4Mzc4NzdhNzRmZmQ4YmM5MWEwZDE4YTIw
ODcwZS4uYmRhM2U5MTBiYzIwZGM5OWI3MDNiZTJlNjE2NmUwMzI1ZDUzMzgxYyAxMDA2NDQKLS0t
IGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1
bGVzCkBAIC0yMzgsOSArMjM4LDkgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3Jr
aW5nIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYnBzbCIvPgogICAgIDwvZGVwZW5kZW5jaWVz
PgotICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvbGlic291cC8yLjY3L2xp
YnNvdXAtJHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjIuNjcuOTAiCisgICAgPGJyYW5jaCBt
b2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9saWJzb3VwLzIuNjcvbGlic291cC0ke3ZlcnNpb259
LnRhci54eiIgdmVyc2lvbj0iMi42Ny45MSIKICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5v
cmciCi0gICAgICAgICAgICBoYXNoPSJzaGEyNTY6MzAzNjg2MDAyYmQ3ZDdiZjkzMjA0ZWViZTBk
NWVjOWY1ZDU3ZDA3MWUzNDExZTIzMDRkNmY4YmNmYTk3ZWY3OSI+CisgICAgICAgICAgICBoYXNo
PSJzaGEyNTY6MzkwYjViMjgyNjNkM2JkZjk4NjZmYTY5NDM0NmNhYTVlNGJjYjk4NmUwMTRlMzM4
M2U5YjYxMzBiNzA2ZjNkYSI+CiAgICAgPC9icmFuY2g+CiAgIDwvbWVzb24+CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL3dwZS9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy93cGUvamhidWlsZC5tb2R1bGVz
CmluZGV4IDViOTRmMWI1NmM4YjM3MmMwN2RmZDI2MDcyYmMxODJhOTc1ZTA1YTUuLmQyODVlZGQx
ZTRhODZkNWYxMjQzZDljNzM1YzA1ZDlmZWI0MGJjMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9q
aGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcwpAQCAtOTYsOSAr
OTYsOSBAQAogICAgICAgPGRlcCBwYWNrYWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICAgIDxk
ZXAgcGFja2FnZT0ibGlicHNsIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBt
b2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9saWJzb3VwLzIuNjcvbGlic291cC0ke3ZlcnNpb259
LnRhci54eiIgdmVyc2lvbj0iMi42Ny45MCIKKyAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9N
RS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9saWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9u
PSIyLjY3LjkxIgogICAgICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKLSAgICAgICAgICAg
IGhhc2g9InNoYTI1NjozMDM2ODYwMDJiZDdkN2JmOTMyMDRlZWJlMGQ1ZWM5ZjVkNTdkMDcxZTM0
MTFlMjMwNGQ2ZjhiY2ZhOTdlZjc5Ij4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1NjozOTBiNWIy
ODI2M2QzYmRmOTg2NmZhNjk0MzQ2Y2FhNWU0YmNiOTg2ZTAxNGUzMzgzZTliNjEzMGI3MDZmM2Rh
Ij4KICAgICA8L2JyYW5jaD4KICAgPC9tZXNvbj4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376885</attachid>
            <date>2019-08-21 08:27:13 -0700</date>
            <delta_ts>2019-08-28 02:14:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190821182711.patch</filename>
            <type>text/plain</type>
            <size>57463</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E1YWJlODMxM2U1NDI3
YjQ2ZDIwOTU3MjhkOTgzZTI5YjM2MjI3OS4uOGQ1ODEwMTNiMTQ4NWFiMzQ1Yjg1ZjhkYmExYmI0
MDllNjNhMTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTAyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6
CisKIDIwMTktMDgtMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4IHNob3VsZCB1c2Ugc2hhZG93QWRqdXN0
ZWRUYWJJbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NGRjNjg1NDM5YTM2ZTI3OGNlZjExOTcxOTAxZWMwYzli
MGFjMDI3Li45OGY4YzFlNTJjN2Q5Y2EzNDI1YTg4ZjI1NDUzY2VkY2ViNzM2MDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc1IEBACisyMDE5LTA4LTAyICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZl
ZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBJbXBsZW1lbnQgSFNUUyBmb3Ig
dGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRyb2R1Y2VkIEhTVFMgc3VwcG9ydCB2
aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIHRoZSBzb3Vw
IG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1cmUgdG8KKyAgICAgICAgU291cE5l
dHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3RvY29sIHVwZ3JhZGVzLCBieQorICAg
ICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBmdXJ0aGVyIHRvIGNsaWVudHMuIFRo
aXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0dXJlIHVuY29uZGl0aW9uYWxseSwg
YnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAgICBhIGJvb2xlYW4gcHJvcGVydHkg
dG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQuCisKKyAgICAgICAgQWRkaXRpb25h
bGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8gc3BlY2lmeQor
ICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RTIGRhdGFiYXNlIGlzIHNhdmVkLiBJ
ZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQgb3IgaWYgdGhlIGRhdGEgbWFuYWdl
ciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1wZXJzaXN0ZW50LCBtZW1vcnkgb25s
eSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVudCBhcyB3ZWxsIHRoZSBtZXRob2Rz
IG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMKKyAgICAgICAgcG9saWNpZXMgZnJv
bSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJlIGluIEdUSysKKyAgICAgICAgTWlu
aUJyb3dzZXIncyBhYm91dDpkYXRhLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y2xlYXJSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUG9s
aWN5U2V0dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3Vs
ZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza1NvdXA6OnByb3RvY29sVXBncmFkZWRWaWFIU1RTKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcDoKKyAgICAgICAgKHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKToK
KyAgICAgICAgKHRvV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
b25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeSk6
CisgICAgICAgICh0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmhzdHNTdG9yYWdlRGlyZWN0b3J5IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNl
dEhTVFNTdG9yYWdlRGlyZWN0b3J5KToKKwogMjAxOS0wOC0yMSAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBCdWlsZCBmYWlsdXJlIGFmdGVy
IHIyNDg4NDYgKFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
ayBwYXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
R1VuaXF1ZVB0clNvdXAuaAppbmRleCAwYjRmYjM0Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4
MTg1OTk2Li5iMmFiZDAyZTYwNzIyZDgyMmYyYTAyZWQ3NDg5MjRjYmNhNTFmNWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNv
dXAuaApAQCAtMzIsNiArMzIsOSBAQCBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwVVJJLCBz
b3VwX3VyaV9mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cENvb2tpZSwgc291cF9j
b29raWVfZnJlZSkKIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBNZXNzYWdlSGVhZGVycywg
c291cF9tZXNzYWdlX2hlYWRlcnNfZnJlZSkKIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBC
dWZmZXIsIHNvdXBfYnVmZmVyX2ZyZWUpCisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAx
KQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEhTVFNQb2xpY3ksIHNvdXBfaHN0c19wb2xp
Y3lfZnJlZSk7CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKaW5kZXggMTI2YjAzZWI0MTc1YjA3YTE2YWMxODU5MjcwNTBhMDk5OGNhODM4OS4uY2Fm
Nzk0M2Q1NTExYWIyMzU4NmMwNTkxYjcwODBkODBjYjVmZWYyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTU5LDYgKzU5LDEyIEBAIHN0YXRpYyBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3Mm
IHByb3h5U2V0dGluZ3MoKQogICAgIHJldHVybiBzZXR0aW5ncy5nZXQoKTsKIH0KIAorc3RhdGlj
IENTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q1N0cmluZz4gZGlyZWN0b3J5OworICAgIHJldHVybiBkaXJlY3RvcnkuZ2V0KCk7Cit9
CisKICNpZiAhTE9HX0RJU0FCTEVECiBpbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIo
U291cExvZ2dlciosIFNvdXBMb2dnZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNo
YXIqIGRhdGEsIGdwb2ludGVyKQogewpAQCAtMTQxLDYgKzE0Nyw3IEBAIFNvdXBOZXR3b3JrU2Vz
c2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBp
ZiAocHJveHlTZXR0aW5ncygpLm1vZGUgIT0gU291cE5ldHdvcmtQcm94eVNldHRpbmdzOjpNb2Rl
OjpEZWZhdWx0KQogICAgICAgICBzZXR1cFByb3h5KCk7CiAgICAgc2V0dXBMb2dnZXIoKTsKKyAg
ICBzZXR1cEhTVFNFbmZvcmNlcigpOwogfQogCiBTb3VwTmV0d29ya1Nlc3Npb246On5Tb3VwTmV0
d29ya1Nlc3Npb24oKSA9IGRlZmF1bHQ7CkBAIC0xNjksNiArMTc2LDg4IEBAIFNvdXBDb29raWVK
YXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y29va2llSmFyKCkgY29uc3QKICAgICByZXR1cm4gU09V
UF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgp
LCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwogfQogCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6
c2V0SFNUU1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IENTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAg
ICBoc3RzU3RvcmFnZURpcmVjdG9yeSgpID0gZGlyZWN0b3J5OworfQorCit2b2lkIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6c2V0dXBIU1RTRW5mb3JjZXIoKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lP
TigyLCA2NywgMSkKKyAgICBpZiAoc291cF9zZXNzaW9uX2hhc19mZWF0dXJlKG1fc291cFNlc3Np
b24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSkKKyAgICAgICAgc291cF9zZXNzaW9u
X3JlbW92ZV9mZWF0dXJlX2J5X3R5cGUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hT
VFNfRU5GT1JDRVIpOworCisgICAgR1JlZlB0cjxTb3VwSFNUU0VuZm9yY2VyPiBlbmZvcmNlcjsK
KyAgICBpZiAoaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc051bGwoKSkKKyAgICAgICAgZW5mb3Jj
ZXIgPSBhZG9wdEdSZWYoc291cF9oc3RzX2VuZm9yY2VyX25ldygpKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhoc3RzU3RvcmFnZURpcmVj
dG9yeSgpLmRhdGEoKSkpIHsKKyAgICAgICAgICAgIENTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5k
YXRhKCkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYkZpbGVuYW1lKGdfYnVpbGRf
ZmlsZW5hbWUoc3RvcmFnZVBhdGguZGF0YSgpLCAiaHN0cy1zdG9yYWdlLnNxbGl0ZSIsIG51bGxw
dHIpKTsKKyAgICAgICAgICAgIGVuZm9yY2VyID0gYWRvcHRHUmVmKHNvdXBfaHN0c19lbmZvcmNl
cl9kYl9uZXcoZGJGaWxlbmFtZS5nZXQoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgdGhlIEhTVFMgc3RvcmFnZSBk
aXJlY3RvcnkgXCIlc1wiLiBVc2luZyBhIG1lbW9yeSBlbmZvcmNlciBpbnN0ZWFkLiIsIGhzdHNT
dG9yYWdlRGlyZWN0b3J5LmRhdGEoKSk7CisgICAgICAgICAgICBlbmZvcmNlciA9IGFkb3B0R1Jl
Zihzb3VwX2hzdHNfZW5mb3JjZXJfbmV3KCkpOworICAgICAgICB9CisgICAgfQorICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVB
VFVSRShlbmZvcmNlci5nZXQoKSkpOworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNz
aW9uOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdE5hbWVz
KQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTEpCisgICAgaWYgKCFzb3VwX3Nl
c3Npb25faGFzX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5G
T1JDRVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3VwSFNUU0VuZm9yY2VyKiBlbmZvcmNl
ciA9IFNPVVBfSFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vz
c2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsKKyAgICBHVW5pcXVlUHRyPEdM
aXN0PiBkb21haW5zKHNvdXBfaHN0c19lbmZvcmNlcl9nZXRfZG9tYWlucyhlbmZvcmNlciwgZmFs
c2UpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gZG9tYWlucy5nZXQoKTsgaXRlciAhPSBudWxs
cHRyOyBpdGVyID0gaXRlci0+bmV4dCkgeworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkb21h
aW4oc3RhdGljX2Nhc3Q8Z2NoYXIqPihpdGVyLT5kYXRhKSk7CisgICAgICAgIGhvc3ROYW1lcy5h
ZGQoZG9tYWluLmdldCgpKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShob3N0TmFt
ZXMpOworI2VuZGlmCit9CisKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpkZWxldGVIU1RTQ2Fj
aGVGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3sKKyNpZiBT
T1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisgICAgaWYgKCFzb3VwX3Nlc3Npb25faGFzX2Zl
YXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBTb3VwSFNUU0VuZm9yY2VyKiBlbmZvcmNlciA9IFNPVVBfSFNU
U19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwg
U09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsKKyAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9z
dE5hbWVzKSB7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IHBvbGljeShzb3Vw
X2hzdHNfcG9saWN5X25ldyhob3N0TmFtZS51dGY4KCkuZGF0YSgpLCBTT1VQX0hTVFNfUE9MSUNZ
X01BWF9BR0VfUEFTVCwgZmFsc2UpKTsKKyAgICAgICAgc291cF9oc3RzX2VuZm9yY2VyX3NldF9w
b2xpY3koZW5mb3JjZXIsIHBvbGljeS5nZXQoKSk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oaG9zdE5hbWVzKTsKKyNlbmRpZgorfQorCit2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6
Y2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyNpZiBTT1VQX0NIRUNL
X1ZFUlNJT04oMiwgNjcsIDkxKQorICAgIGlmICghc291cF9zZXNzaW9uX2hhc19mZWF0dXJlKG1f
c291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgU291cEhTVFNFbmZvcmNlciogZW5mb3JjZXIgPSBTT1VQX0hTVFNfRU5GT1JD
RVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQ
RV9IU1RTX0VORk9SQ0VSKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gcG9saWNpZXMoc291cF9o
c3RzX2VuZm9yY2VyX2dldF9wb2xpY2llcyhlbmZvcmNlciwgZmFsc2UpKTsKKyAgICBmb3IgKEdM
aXN0KiBpdGVyID0gcG9saWNpZXMuZ2V0KCk7IGl0ZXIgIT0gbnVsbHB0cjsgaXRlciA9IGl0ZXIt
Pm5leHQpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxTb3VwSFNUU1BvbGljeT4gcG9saWN5KHN0YXRp
Y19jYXN0PFNvdXBIU1RTUG9saWN5Kj4oaXRlci0+ZGF0YSkpOworICAgICAgICBhdXRvIG1vZGlm
aWVkID0gc291cF9kYXRlX3RvX3RpbWVfdChwb2xpY3kuZ2V0KCktPmV4cGlyZXMpIC0gcG9saWN5
LmdldCgpLT5tYXhfYWdlOworICAgICAgICBpZiAobW9kaWZpZWQgPj0gbW9kaWZpZWRTaW5jZS5z
ZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSkgeworICAgICAgICAgICAgR1VuaXF1ZVB0cjxT
b3VwSFNUU1BvbGljeT4gbmV3UG9saWN5KHNvdXBfaHN0c19wb2xpY3lfbmV3KHBvbGljeS5nZXQo
KS0+ZG9tYWluLCBTT1VQX0hTVFNfUE9MSUNZX01BWF9BR0VfUEFTVCwgZmFsc2UpKTsKKyAgICAg
ICAgICAgIHNvdXBfaHN0c19lbmZvcmNlcl9zZXRfcG9saWN5KGVuZm9yY2VyLCBuZXdQb2xpY3ku
Z2V0KCkpOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZp
ZWRTaW5jZSk7CisjZW5kaWYKK30KKwogc3RhdGljIGlubGluZSBib29sIHN0cmluZ0lzTnVtZXJp
Yyhjb25zdCBjaGFyKiBzdHIpCiB7CiAgICAgd2hpbGUgKCpzdHIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAppbmRleCA1ZTMyZDMxYWQ0ZmRhMDc3OWEyMWUxNjMyODc4Mzc1YmJmOGNhNTQ4Li5jYTYzMDMy
MGE4YTVmZWQ1NWE1YTRkNzZjYTEzMmE1ODliNzM5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBA
IC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvb2tpZUphcihTb3VwQ29va2ll
SmFyKik7CiAgICAgU291cENvb2tpZUphciogY29va2llSmFyKCkgY29uc3Q7CiAKKyAgICBzdGF0
aWMgdm9pZCBzZXRIU1RTUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgQ1N0cmluZyYgaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkpOworICAgIHZvaWQgc2V0dXBIU1RTRW5mb3JjZXIoKTsKKwogICAgIHN0YXRp
YyB2b2lkIGNsZWFyT2xkU291cENhY2hlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkpOwog
CiAgICAgc3RhdGljIHZvaWQgc2V0UHJveHlTZXR0aW5ncyhjb25zdCBTb3VwTmV0d29ya1Byb3h5
U2V0dGluZ3MmKTsKQEAgLTcyLDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBz
ZXRDdXN0b21Qcm90b2NvbFJlcXVlc3RUeXBlKEdUeXBlKTsKICAgICB2b2lkIHNldHVwQ3VzdG9t
UHJvdG9jb2xzKCk7CiAKKyAgICB2b2lkIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoSGFzaFNl
dDxTdHJpbmc+Jik7CisgICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFdhbGxUaW1lKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHNldHVwTG9nZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNWY2Yjk5NTg4ZmZmZjI2ZWY1
ZThlZjU0YTBmZDYxNjM4YWU3YjMwNi4uYzEyMWNmM2Y5YTYzY2VjNmJmMzA1ZjllYzkwYTVkOWIz
YjBlOWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAg
ICAgICAgIH0pOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBnZXRI
b3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKQEAgLTEzODks
NyArMTM4OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAg
ICAgY2xlYXJIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgbW9kaWZpZWRTaW5jZSk7
CkBAIC0xNDkwLDcgKzE0OTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvb2tp
ZUhvc3ROYW1lcyk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIGRl
bGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBIU1RTQ2Fj
aGVIb3N0TmFtZXMpOwpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2kKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRl
OwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFND
YWNoZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CkBA
IC0xODUwLDcgKzE4NTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIH0KICAgICAK
ICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlOwotI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
NjY3YTZlNDc4ZGExMmFiNjY1MTAzMmFhMzEyNWVmN2ZhNDEzY2M3MC4uZTU3NjQ3NjM4MTEwNDU4
NGNhNmQyOTBiMWRmNTFkNTJhNzE2MjVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTkzLDEwICsxOTMsMTIgQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGlj
YXRpb25BdWRpdERhdGEoKSBjb25zdDsKKyAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVy
bWluYXRpb25PblN5c3RlbUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOyB9CisjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKFNPVVApCiAgICAgdm9pZCBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpOwogICAgIHZv
aWQgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCBjbGVhckhTVFNDYWNoZShX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsK
LSAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVt
Q2hhbmdlOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9u
KE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IDRmYWNjODIx
M2VmODUwNWNmOWQ1NDhiMjNjNTY2ZGQzZDBiZTBhYzIuLmM4NDFlNTc3ZTkyN2NmODdmYTM2ZDQz
NTY3YWNhZjMxOTdiZjY2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgpAQCAtMTQ3LDYgKzE0OCwxMyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKICNlbmRpZgogICAgIH0KIAorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2Nywg
MSkKKyAgICBpZiAoKG1fY3VycmVudFJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAm
JiAhc2hvdWxkQWxsb3dIU1RTUG9saWN5U2V0dGluZygpKSB8fCAobV9jdXJyZW50UmVxdWVzdC51
cmwoKS5wcm90b2NvbElzKCJodHRwIikgJiYgIXNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFk
ZSgpKSkKKyAgICAgICAgc291cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZS5n
ZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpOworICAgIGVsc2UKKyAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc3RhdGljX2Nhc3Q8TmV0d29ya1Nl
c3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgU09VUF9UWVBFX0hTVFNfRU5G
T1JDRVIpLCAiaHN0cy1lbmZvcmNlZCIsIEdfQ0FMTEJBQ0soaHN0c0VuZm9yY2VkKSwgdGhpcyk7
CisjZW5kaWYKKwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIEFjY2VwdCBoZWFkZXIgZm9y
IHN1YnJlc291cmNlczsgc29tZSBzaXRlcyB3YW50IHRoaXMgdG8gc2VydmUgc29tZSBvZiB0aGVp
ciBzdWJyZXNvdXJjZXMuCiAgICAgaWYgKCFzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKHNv
dXBNZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQiKSkKICAgICAgICAgc291cF9tZXNz
YWdlX2hlYWRlcnNfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQi
LCAiKi8qIik7CkBAIC0xOTIsOCArMjAwLDEyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
Y2xlYXJSZXF1ZXN0KCkKICAgICAgICAgICAgIHNvdXBfc2Vzc2lvbl9jYW5jZWxfbWVzc2FnZShz
dGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigp
LCBtX3NvdXBNZXNzYWdlLmdldCgpLCBTT1VQX1NUQVRVU19DQU5DRUxMRUQpOwogICAgICAgICBt
X3NvdXBNZXNzYWdlID0gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKG1fc2Vzc2lvbikKKyAgICBp
ZiAobV9zZXNzaW9uKSB7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0
Y2hlZChzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vz
c2lvbigpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlz
KTsKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YShzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc3RhdGlj
X2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgU09V
UF9UWVBFX0hTVFNfRU5GT1JDRVIpLCB0aGlzKTsKKyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpyZXN1bWUoKQpAQCAtMTA2MCw2ICsxMDcyLDQ1IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrU291cDo6c3RhcnRpbmdDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1l
c3NhZ2UsIE5ldHdvcmtEYXRhCiAgICAgdGFzay0+ZGlkU3RhcnRSZXF1ZXN0KCk7CiB9CiAKKyNp
ZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCitib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6
OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcoKQoreworICAgIC8vIEZvbGxvdyBBcHBsZSdz
IEhTVFMgYWJ1c2UgbWl0aWdhdGlvbiAxOgorICAgIC8vICAiTGltaXQgSFNUUyBTdGF0ZSB0byB0
aGUgSG9zdG5hbWUsIG9yIHRoZSBUb3AgTGV2ZWwgRG9tYWluICsgMSIKKyAgICBpZiAoaXNUb3BM
ZXZlbE5hdmlnYXRpb24oKSB8fCBob3N0c0FyZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCks
IG1fY3VycmVudFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkgfHwgaXNQdWJsaWNTdWZm
aXgobV9jdXJyZW50UmVxdWVzdC51cmwoKS5ob3N0KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlKCkKK3sK
KyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGdhdGlvbiAyOgorICAgIC8vICJJ
Z25vcmUgSFNUUyBTdGF0ZSBmb3IgU3VicmVzb3VyY2UgUmVxdWVzdHMgdG8gQmxvY2tlZCBEb21h
aW5zIgorICAgIGlmICghaXNUb3BMZXZlbE5hdmlnYXRpb24oKSAmJiAhbV9jdXJyZW50UmVxdWVz
dC5hbGxvd0Nvb2tpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cHJvdG9jb2xVcGdyYWRlZFZpYUhT
VFMoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQoreworICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJs
KCksIHNvdXBVUklUb1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaShzb3VwTWVzc2FnZSkpKTsKKyAg
ICBjb250aW51ZUhUVFBSZWRpcmVjdGlvbigpOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBOZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQoreworICAgIGlmICh0YXNrLT5zdGF0ZSgp
ID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgdGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVk
IHx8ICF0YXNrLT5tX2NsaWVudCkgeworICAgICAgICB0YXNrLT5jbGVhclJlcXVlc3QoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzb3VwTWVzc2FnZSA9PSB0YXNrLT5tX3Nv
dXBNZXNzYWdlLmdldCgpKQorICAgICAgICB0YXNrLT5wcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhz
b3VwTWVzc2FnZSk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRT
dGFydFJlcXVlc3QoKQogewogICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydCA9
IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCBh
ZDMwNjNkNmI3MjVmYWY4YmExOTczOGMzYWIzMTg1NzBkZjA2ZjEwLi4xOTk2YTE2NTRlMzFkMzAw
ZjA5MWFjYmFlNTc1ZTc3NTBiNmEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTExMSw2ICsxMTEs
MTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzdGFydGluZ0NhbGxiYWNrKFNvdXBNZXNz
YWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogI2Vsc2UKICAgICBzdGF0aWMgdm9pZCByZXF1
ZXN0U3RhcnRlZENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgU291cE1lc3NhZ2UqLCBTb3VwU29ja2V0
KiwgTmV0d29ya0RhdGFUYXNrU291cCopOworI2VuZGlmCisjaWYgU09VUF9DSEVDS19WRVJTSU9O
KDIsIDY3LCAxKQorICAgIGJvb2wgc2hvdWxkQWxsb3dIU1RTUG9saWN5U2V0dGluZygpOworICAg
IGJvb2wgc2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlKCk7CisgICAgdm9pZCBwcm90b2Nv
bFVwZ3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSopOworICAgIHN0YXRpYyB2b2lkIGhzdHNFbmZv
cmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3NhZ2UqLCBOZXR3b3JrRGF0YVRhc2tTb3Vw
Kik7CiAjZW5kaWYKICAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRpYyB2b2lk
IHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcAppbmRleCA3YTc0ODFmN2Q0MjVmMDIzMzdhMGMxMGFkZjlkNjU0ZjcwZWM3
ZGQzLi43NGNlYTE4N2FmMTAwYzEwMjUwY2M3MDBhZWM3MTM4ZjZkNGU1ZDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcApAQCAtOTUsNiArOTUsMjQgQEAgc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5n
dWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK3sKKyAgICBjb25zdCBhdXRvKiBz
ZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24o
c3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nl
c3Npb24oKS5nZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKGhvc3ROYW1lcyk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdE5hbWVzKQoreworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQo
KSkpOworICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhob3N0TmFtZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhT
VFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0
aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lv
bi5zZXNzaW9uSUQoKSkpOworICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmNsZWFy
SFNUU0NhY2hlKG1vZGlmaWVkU2luY2UpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2Vz
KQogewogICAgIGF1dG8gYWNjZXB0TGFuZ3VhZ2VzID0gYnVpbGRBY2NlcHRMYW5ndWFnZXMobGFu
Z3VhZ2VzKTsKQEAgLTEyOSw2ICsxNDcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAg
ICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQocGFyYW1ldGVycy5sYW5ndWFnZXMp
OwogCiAgICAgc2V0SWdub3JlVExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsK
KworICAgIGlmICghcGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisg
ICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFNUU1BlcnNpc3RlbnRTdG9yYWdlKHBhcmFt
ZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkudXRmOCgpKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nl
c3Npb24oW10oY29uc3QgYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBOZXR3b3JrU2Vzc2lvblNvdXAmPihzZXNzaW9uKS5zb3VwTmV0d29ya1Nlc3Npb24oKS5zZXR1
cEhTVFNFbmZvcmNlcigpOworICAgIH0pOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZh
dWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJiMzJiN2U4
NjBkODVlNjFiYTgxMGJmMi4uYjEyY2YwZDEzYjhmZmVmMDg2ZjM3YzE0NjNjMzM4YmZiYjlhZDU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC02Niw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyNpZiBVU0Uo
R0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJlY3RvcnkoKTsKKyNl
bmRpZgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IDI1
MjU4M2M1ZWM5YzQ0ZDljYjliMjc2ZGVmNjUzNjA3OTI3ODU3N2YuLjVkM2Q5NzhkY2RhNTY5YzRk
N2ZjZjViYzZkYTEwZDg4ZjQzNjNmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTg0
LDYgKzg0LDExIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRh
YmFzZXMiKTsKIH0KIAorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7Cit9CisKIFdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggOGM2ODk4Mjk1MzlmNDIyMzhiMzA3ZjU1
NTYwOGE1YzUwMDJkY2Y0My4uMjY0MmFmN2YzOWQ5Nzg5ODk2ZjMxMDE1MThkYmI4MDRmODU4YTVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHAKQEAgLTM0MSw2ICszNDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgICAgICBjb25maWd1cmF0aW9u
LnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJl
Y3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1
cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3Rz
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDdjOTdlMGIxYjI0YTFiM2E2YWEyMTMzZjg5
NGExZThhNzhlMDAzOWQuLmRkOGZjZGY5OWZlYTdkMDNmZTYxZjNjNzRkY2Q4NDdjYmE1ZjY2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YS5jcHAKQEAgLTczLDYgKzczLDcgQEAgc3RhdGljIGJvb2wgcmVjb3JkQ29udGFp
bnNTdXBwb3J0ZWREYXRhVHlwZXMoY29uc3QgV2Vic2l0ZURhdGFSZWNvcmQmIHJlY29yZCkKICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsCiAgICAgICAgIFdlYnNpdGVEYXRh
VHlwZTo6V2ViU1FMRGF0YWJhc2VzLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcywKKyAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUsCiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0lu
RGF0YSwKICNlbmRpZgpAQCAtOTgsNiArOTksOCBAQCBzdGF0aWMgV2ViS2l0V2Vic2l0ZURhdGFU
eXBlcyB0b1dlYktpdFdlYnNpdGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZQog
ICAgICAgICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX1dFQlNRTF9EQVRBQkFT
RVM7CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0
YWJhc2VzKSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRF
WEVEREJfREFUQUJBU0VTOworICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkhTVFNDYWNoZSkpCisgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFf
SFNUU19DQUNIRTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKSkKICAgICAgICAgcmV0dXJu
VmFsdWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwCmluZGV4IGQ1M2VhOThlNTM2ZDQ2MWFmOWZhZWU4ZDJmZjYyOTIyZmY4MTMxNjAu
LjNiNGI5MzMzNTNhMmNmMGY4NjEyYTk0Y2IzMzNlOWYwYjRiNzdiZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyLmNwcApAQCAtODQsNiArODQsNyBAQCBlbnVtIHsKICAgICBQUk9QX0FQUExJQ0FU
SU9OX0NBQ0hFX0RJUkVDVE9SWSwKICAgICBQUk9QX0lOREVYRUREQl9ESVJFQ1RPUlksCiAgICAg
UFJPUF9XRUJTUUxfRElSRUNUT1JZLAorICAgIFBST1BfSFNUU19ESVJFQ1RPUlksCiAgICAgUFJP
UF9JU19FUEhFTUVSQUwKIH07CiAKQEAgLTEwMSw2ICsxMDIsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGluZGV4ZWREQkRpcmVjdG9y
eTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGhzdHNEaXJlY3Rvcnk7CiAKICAgICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+
IGNvb2tpZU1hbmFnZXI7CiAgICAgVmVjdG9yPFdlYlByb2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xz
OwpAQCAtMTM2LDYgKzEzOCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHCiAgICAgICAgIGdf
dmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93
ZWJzcWxfZGlyZWN0b3J5KG1hbmFnZXIpKTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IU1RTX0RJUkVDVE9S
WToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTcwLDYgKzE3NSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElE
LCBjCiAgICAgY2FzZSBQUk9QX1dFQlNRTF9ESVJFQ1RPUlk6CiAgICAgICAgIG1hbmFnZXItPnBy
aXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hTVFNfRElSRUNUT1JZOgorICAgICAgICBtYW5h
Z2VyLT5wcml2LT5oc3RzRGlyZWN0b3J5LnJlc2V0KGdfdmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAgICBp
ZiAoZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpCiAgICAgICAgICAgICBtYW5hZ2VyLT5wcml2
LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJz
aXN0ZW50RGF0YVN0b3JlKCk7CkBAIC0xOTEsNiArMTk5LDggQEAgc3RhdGljIHZvaWQgd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgICAgICAg
ICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+
YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0
cikpOwogICAgICAgICBpZiAoIXByaXYtPndlYlNRTERpcmVjdG9yeSkKICAgICAgICAgICAgIHBy
aXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRh
RGlyZWN0b3J5LmdldCgpLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOworICAgICAgICBpZiAoIXBy
aXYtPmhzdHNEaXJlY3RvcnkpCisgICAgICAgICAgICBwcml2LT5oc3RzRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByaXYtPmJhc2VDYWNoZURpcmVjdG9yeSkgewpAQCAtMzMyLDYgKzM0MiwyMyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdChXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9D
T05TVFJVQ1RfT05MWSB8IEdfUEFSQU1fREVQUkVDQVRFRCkpKTsKIAorICAgIC8qKgorICAgICAq
IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpoc3RzLWRpcmVjdG9yeToKKyAgICAgKgorICAgICAq
IFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSAo
SFNUUykgZGF0YWJhc2Ugd2lsbCBiZSBzdG9yZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4y
NgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAg
IGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9IU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgZ19w
YXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJoc3RzLWRpcmVjdG9yeSIsCisgICAgICAg
ICAgICBfKCJIU1RTIERpcmVjdG9yeSIpLAorICAgICAgICAgICAgXygiVGhlIGRpcmVjdG9yeSB3
aGVyZSB0aGUgSFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IGRhdGFiYXNlIHdpbGwgYmUg
c3RvcmVkIiksCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9P
TkxZIHwgR19QQVJBTV9ERVBSRUNBVEVEKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyOmlzLWVwaGVtZXJhbDoKICAgICAgKgpAQCAtMzc0LDYgKzQwMSw4IEBA
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0
b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/CiAgICAgICAgICAgICBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3Rv
cnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3Rv
cnkoIXByaXYtPmhzdHNEaXJlY3RvcnkgPworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAg
cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVn
YWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTYxMiw2ICs2NDEsMjkgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVj
dG9yeShXZWJLaXRXZWJzaXRlRGF0YU0KICAgICByZXR1cm4gcHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0
c19kaXJlY3Rvcnk6CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisg
KgorICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmhzdHMtZGlyZWN0b3J5IHBy
b3BlcnR5LgorICoKKyAqIFJldHVybnM6IChhbGxvdy1ub25lKTogdGhlIGRpcmVjdG9yeSB3aGVy
ZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzdG9yZWQgb3IgJU5VTEwgaWYgQG1hbmFnZXIgaXMgZXBo
ZW1lcmFsLgorICoKKyAqIFNpbmNlOiAyLjI2CisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
U0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIG51bGxwdHIpOworCisgICAgV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7CisgICAgaWYgKHByaXYt
PndlYnNpdGVEYXRhU3RvcmUgJiYgIXByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmlzUGVyc2lzdGVu
dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghcHJpdi0+aHN0c0RpcmVj
dG9yeSkKKyAgICAgICAgcHJpdi0+aHN0c0RpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIHJldHVybiBwcml2LT5oc3RzRGlyZWN0b3J5LmdldCgpOworfQorCiAvKioKICAqIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXI6CiAgKiBAbWFuYWdlcjog
YSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCkBAIC02NDksNiArNzAxLDggQEAgc3RhdGljIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlcyhXZWJLaXRXZWJzaXRl
RGF0YVR5cGVzIHR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
V2ViU1FMRGF0YWJhc2VzKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lO
REVYRUREQl9EQVRBQkFTRVMpCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CisgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVf
REFUQV9IU1RTX0NBQ0hFKQorICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpIU1RTQ2FjaGUpOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGlmICh0
eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEpCiAgICAgICAgIHJldHVyblZh
bHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCmluZGV4IDAxODhlNzdk
OTAxMGMxZWRmZjZiMDU3MGVjODRjNWE0M2Y0OGY3MmIuLjljNGQ4MTQ1ODRmOTc1NjVjZjdkYzc1
MzI4ZTA4ODUyZGJmNTFhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRhOwogICogQFdFQktJVF9XRUJT
SVRFX0RBVEFfUExVR0lOX0RBVEE6IFBsdWdpbnMgZGF0YS4KICAqIEBXRUJLSVRfV0VCU0lURV9E
QVRBX0NPT0tJRVM6IENvb2tpZXMuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURf
SEFTSF9TQUxUOiBIYXNoIHNhbHQgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZGV2aWNlIGlkcyB1c2Vk
IGJ5IHdlYnBhZ2VzLiBTaW5jZSAyLjI0CisgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NB
Q0hFOiBIU1RTIGNhY2hlLiBTaW5jZSAyLjI2CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6
IEFsbCB0eXBlcy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0
eXBlcyBvZiBXZWJzaXRlIGRhdGEuCkBAIC02Miw3ICs2Myw4IEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSAgICAgICAgICAgICAgID0gMSA8PCA3
LAogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUyAgICAgICAgICAgICAgICAgICA9IDEg
PDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQgICAgICAg
PSAxIDw8IDksCi0gICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAg
ICAgID0gKDEgPDwgMTApIC0gMQorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSAg
ICAgICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwgICAg
ICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTEpIC0gMQogfSBXZWJLaXRXZWJzaXRlRGF0YVR5
cGVzOwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAppbmRleCA4ZGU3YzRi
YjJjMjYwZTU3MGZjNmQwOWViMDQxNGRmOTEyMjNlMzc2Li41NTQ4ZGY0ZDZlMjkwMmQ1ZjRjMjhi
MDdlZjBiYmJkOWRkZmYyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKQEAgLTkwLDYgKzkwLDkg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5ICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWIKIFdFQktJVF9ERVBSRUNBVEVEIGNvbnN0IGdjaGFy
ICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeSAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAor
V0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2hzdHNfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGRmNTg1YTJlNmRlZWEzODk0YWNmOTQzMDkz
Y2UzYTE3YjA3MzUyNzIuLjNhYzUwYzE5ZTBlZDUzYmI3YTZiN2ZhMjFkNGEyZjFlNjljZGU3NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQwMyw2ICsxNDAzLDcgQEAg
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2Rp
cmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0
b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkKK3dl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19kaXJlY3RvcnkKIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIKIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9mZXRjaAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRl
RGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YS5oCmluZGV4IDc3OGZmNTA5MTBlOWQ0YzVmODVkNWU3NzRjNjIzYmQxNWI1NzU2NzcuLjk3M2E1
NTA1NjBmZTM4MzBkNmRkODhlYmI0ZGM5NTVjODdiZmJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ1LDYgKzQ1
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRh
OwogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE6IFBsdWdpbnMgZGF0YS4KICAq
IEBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVM6IENvb2tpZXMuCiAgKiBAV0VCS0lUX1dFQlNJ
VEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUOiBIYXNoIHNhbHQgdXNlZCB0byBnZW5lcmF0ZSB0
aGUgZGV2aWNlIGlkcyB1c2VkIGJ5IHdlYnBhZ2VzLiBTaW5jZSAyLjI0CisgKiBAV0VCS0lUX1dF
QlNJVEVfREFUQV9IU1RTX0NBQ0hFOiBIU1RTIGNhY2hlLiBTaW5jZSAyLjI2CiAgKiBAV0VCS0lU
X1dFQlNJVEVfREFUQV9BTEw6IEFsbCB0eXBlcy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZs
YWdzIHJlcHJlc2VudGluZyB0eXBlcyBvZiBXZWJzaXRlIGRhdGEuCkBAIC02Miw3ICs2Myw4IEBA
IHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSAgICAg
ICAgICAgICAgID0gMSA8PCA3LAogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUyAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9J
RF9IQVNIX1NBTFQgICAgICAgPSAxIDw8IDksCi0gICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwg
ICAgICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTApIC0gMQorICAgIFdFQktJVF9XRUJTSVRF
X0RBVEFfSFNUU19DQUNIRSAgICAgICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgV0VCS0lUX1dF
QlNJVEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAgICAgID0gKDEgPDwgMTEpIC0gMQogfSBX
ZWJLaXRXZWJzaXRlRGF0YVR5cGVzOwogCiBXRUJLSVRfQVBJIEdUeXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaAppbmRleCAxZTZjYzU2YWE0ZjdlYzM4N2FjNjZkZjYwODEzYzg1MmJhNzAxMjA5Li44NDU3
MTBiNzEzNDdkNzFmMDBjM2UwYTgwZTUxZmM4MzlhMzhlNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmgKQEAgLTkwLDYgKzkwLDkgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRl
eGVkZGJfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWIKIFdFQktJVF9ERVBS
RUNBVEVEIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vi
c3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0
Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9t
YW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAq
bWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
ZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA2NGVhMzBlOTNjZDRlOWRkMjRjMzYz
Zjc5NzNjMGVmMGNkYzBjYWVhLi45MGQ4MzE1MDU4M2M1NDQwYmVlYzI1NDVjYzQ1Y2MwMzkzNjAw
NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xMjc3LDYgKzEyNzcsNyBAQCB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5CiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkKIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeQord2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2Zl
dGNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMWI3ZjQ0ZDc2MTRkNWJmNjI0MDc1
OGY5N2ZkOTE3MWIwMzZmZDVkMS4uNGQ0NGRkMWQ2YWQ3NjU1M2E2NTgzMDk5YzA3OTkyNWU4YThl
YTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTAs
NiArNTAsOSBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX2luZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5
LT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisjaWYgVVNFKEdMSUIp
CisgICAgY29weS0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1faHN0c1N0b3JhZ2VE
aXJlY3Rvcnk7CisjZW5kaWYKICAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5
LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgKaW5kZXggZDM4YWI3MmY1NGJiMjQ4ZDIyYjFkNzBjMzkyYmY1MGQzN2Q2MmViNy4uNjIz
MjkxNTU3ZDJhZWQ2NDg1YWViZWY1MWU0ZjM2ZDQ5NDczMmJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC02MSw3ICs2MSwxMCBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBTdHJpbmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KLQorI2lmIFVTRShHTElCKSAvLyBBY2NvcmRpbmcgdG8gcjI0
NTA3NSB0aGlzIHdpbGwgZXZlbnR1YWxseSBtb3ZlIGhlcmUuCisgICAgY29uc3QgU3RyaW5nJiBo
c3RzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faHN0c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KKyAgICB2b2lkIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9y
eSkgeyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisjZW5k
aWYKICAgICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0g
V1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKQEAgLTExOCw2ICsxMjEsOSBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJh
c2VEaXJlY3Rvcnk7CisjaWYgVVNFKEdMSUIpCisgICAgU3RyaW5nIG1faHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisjZW5kaWYKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAg
U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9kZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2VhM2E3ZjQ3YjUzMmMzZDJjMmZhYzRkZmIzMWFmNGZi
NzExZDNlOC4uNWJhODUwZTUyNjY1MDVkYzAzOWU0MTc4OWVmNDkyMTY5NDgwNDFjNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDE5LTA4LTAyICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS11bV1BFXSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29y
ayBiYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTIwNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBsaWJzb3VwIDIuNjcuMSBpbnRyb2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lv
bkZlYXR1cmUuCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2Vu
ZCBieSBhZGRpbmcgdGhlIGZlYXR1cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFu
ZCBoYW5kbGluZyBIU1RTIHByb3RvY29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGlu
ZyB0aGUgc2NoZW1lIGNoYW5nZSBmdXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcwor
ICAgICAgICB0aGUgSFNUUyBmZWF0dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBv
c3NpYmxlIHRvIGFkZAorICAgICAgICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250
ZXh0IGNsYXNzIGlmIGRlc2lyZWQuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRv
IHRoZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSBIU1RTIGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5
CisgICAgICAgIGlzIG5vdCBzZXQgb3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWws
IHVzZSBhCisgICAgICAgIG5vbi1wZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2Vy
LgorCisgICAgICAgIEltcGxlbWVudCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVh
bi11cCBhbmQgZGVsZXRlIEhTVFMKKyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBh
bmQgZXhwb3NlIHRoZSBmZWF0dXJlIGluIEdUSysKKyAgICAgICAgTWluaUJyb3dzZXIncyBhYm91
dDpkYXRhLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGdv
dFdlYnNpdGVEYXRhQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbik6CisgICAgICAgICh0ZXN0V2Vi
c2l0ZURhdGFFcGhlbWVyYWwpOgorICAgICAgICAocHJlcG9wdWxhdGVIc3RzRGF0YSk6CisgICAg
ICAgICh0ZXN0V2Vic2l0ZURhdGFIc3RzKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoKKyAgICAgICAgKFRl
c3Q6OlRlc3QpOgorICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6IEJ1bXAgbGlic291cCB0
byAyLjY3LjkxIGZvciB0aGUgbmV3IEFQSXMKKyAgICAgICAgKiB3cGUvamhidWlsZC5tb2R1bGVz
OiBEaXR0bworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChnb3RX
ZWJzaXRlRGF0YUNhbGxiYWNrKToKKwogMjAxOS0wOC0yMCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHMud2Via2l0Lm9yZyBXZWJraXQuY3Nz
XSBBZGQgcmlnaHQgc2lkZWJhcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggZGI4MWUxNWQ1MDc5M2Iz
YzFiNzkyOGIxNDg0M2Y2YWI1YTAxYzgxNC4uNzQxOGZkODI3ZmQ2MzA4NjhkNDk3YTQ1MDAyZmUx
YWRmNzZlNTFmYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00MTQsNiArNDE0LDcgQEAgc3RhdGlj
IHZvaWQgZ290V2Vic2l0ZURhdGFDYWxsYmFjayhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1h
bmFnZXIsIEdBc3luY1Jlc3UKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVx
dWVzdCwgZGF0YUxpc3QsICJTZXNzaW9uIFN0b3JhZ2UiLCBXRUJLSVRfV0VCU0lURV9EQVRBX1NF
U1NJT05fU1RPUkFHRSwgTlVMTCwgcGFnZUlEKTsKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVz
dWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJMb2NhbCBTdG9yYWdlIiwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9MT0NBTF9TVE9SQUdFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xv
Y2FsX3N0b3JhZ2VfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZp
bGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkluZGV4ZWREQiBEYXRhYmFz
ZXMiLCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMsIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlE
KTsKKyAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3Qs
ICJIU1RTIERhdGFiYXNlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFLCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQp
OwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwg
IlBsdWdpbnMgRGF0YSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBh
Z2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFM
aXN0LCAiT2ZmbGluZSBXZWIgQXBwbGljYXRpb25zIENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFU
QV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDQwOTVmNzZkMTA0NmIzYjk5NTU3OGY5OTUwOGU2NzRm
MWMyZTA3YjEuLjc2ZjJhMzU2YmMxNWEwNTc4MzZkNTYwZDI2ZGVjMDU5OTRhN2Y5YzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURh
dGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
c2l0ZURhdGEuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAor
I2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlICJXZWJLaXRUZXN0
U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRp
by5oPgpAQCAtMzUsNiArMzYsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2Vy
dmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5IikpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGVtcHR5SFRNTCA9ICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiI7CiAgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1D
b29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTdHJpY3QtVHJhbnNwb3J0
LVNlY3VyaXR5IiwgIm1heC1hZ2U9MzYwMCIpOwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBlbXB0eUhU
TUwsIHN0cmxlbihlbXB0eUhUTUwpKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxl
dGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3Rh
dHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKQEAgLTE2Miw5ICsxNjQsMTMgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKGRpc2tDYWNoZURpcmVjdG9yeS5n
ZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChk
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikpOwogCisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBoc3RzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURp
cmVjdG9yeSgpLCAiaHN0cyIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoaHN0c0Rp
cmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19k
aXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVz
dChoc3RzRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKwogICAgIC8vIENs
ZWFyIGFsbCBwZXJzaXN0ZW50IGNhY2hlcywgc2luY2UgdGhlIGRhdGEgZGlyIGlzIGNvbW1vbiB0
byBhbGwgdGVzdCBjYXNlcy4KICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBl
cyBwZXJzaXN0ZW50Q2FjaGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4o
V0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NB
TF9TVE9SQUdFCi0gICAgICAgIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJB
U0VTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwgV0VC
S0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUKTsKKyAgICAgICAgfCBXRUJLSVRf
V0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX09G
RkxJTkVfQVBQTElDQVRJT05fQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9I
QVNIX1NBTFQgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUpOwogICAgIHRlc3QtPmNs
ZWFyKHBlcnNpc3RlbnRDYWNoZXMsIDApOwogICAgIGdfYXNzZXJ0X251bGwodGVzdC0+ZmV0Y2go
cGVyc2lzdGVudENhY2hlcykpOwogCkBAIC0xNzYsNiArMTgyLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlz
a19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoZGVmYXVsdE1hbmFnZXIpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5l
X2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVj
dG9yeShkZWZhdWx0TWFuYWdlcikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGlyZWN0b3J5KGRlZmF1bHRNYW5h
Z2VyKSk7CiAKICAgICAvLyBVc2luZyBUZXN0OjpkYXRhRGlyZWN0b3J5KCkgd2UgZ2V0IHRoZSBk
ZWZhdWx0IGNvbmZpZ3VyYXRpb24gYnV0IGZvciBhIGRpZmZlcnJlbnQgcHJlZml4LgogICAgIEdS
ZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiBiYXNlRGF0YU1hbmFnZXIgPSBhZG9wdEdS
ZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldygiYmFzZS1kYXRhLWRpcmVjdG9yeSIs
IFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImJhc2UtY2FjaGUtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0
YURpcmVjdG9yeSgpLCBudWxscHRyKSk7CkBAIC0yMjIsNiArMjI5LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNr
X2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGly
ZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfZGly
ZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIC8vIENvbmZpZ3VyYXRpb24gaXMgaWdub3Jl
ZCB3aGVuIGlzLWVwaGVtZXJhbCBpcyB1c2VkLgogICAgIG1hbmFnZXIgPSBhZG9wdEdSZWYoV0VC
S0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRF
X0RBVEFfTUFOQUdFUiwgImJhc2UtZGF0YS1kaXJlY3RvcnkiLCBUZXN0OjpkYXRhRGlyZWN0b3J5
KCksICJpcy1lcGhlbWVyYWwiLCBUUlVFLCBudWxscHRyKSkpOwpAQCAtNDgzLDYgKzQ5MSw2NiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFBcHBjYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKKyNp
ZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDkxKQorc3RhdGljIHZvaWQgcHJlcG9wdWxhdGVI
c3RzRGF0YSgpCit7CisgICAgLy8gSFNUUyBoZWFkZXJzIHdpbGwgYmUgaWdub3JlZCBpbiB0aGlz
IHRlc3QgYmVjYXVzZSB0aGUgc3BlYyBmb3JiaWRzIFNUUyBwb2xpY2llcyBmcm9tIGJlaW5nIGhv
bm9yZWQgZm9yIGhvc3RzIHdpdGgKKyAgICAvLyBhbiBJUCBhZGRyZXNzIGluc3RlYWQgb2YgYSBk
b21haW4uIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gdGVzdCB0aGUgZGF0YSBtYW5hZ2VyIEFQSSB3
aXRoIEhTVFMgd2Vic2l0ZSBkYXRhLCB3ZQorICAgIC8vIHByZXBvcHVsYXRlIHRoZSBIU1RTIHN0
b3JhZ2UgdXNpbmcgdGhlIGxpYnNvdXAgQVBJIGRpcmVjdGx5LgorCisgICAgR1VuaXF1ZVB0cjxj
aGFyPiBoc3RzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgp
LCAiaHN0cyIsIG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGhzdHNEYXRhYmFzZShn
X2J1aWxkX2ZpbGVuYW1lKGhzdHNEaXJlY3RvcnkuZ2V0KCksICJoc3RzLXN0b3JhZ2Uuc3FsaXRl
IiwgbnVsbHB0cikpOworICAgIGdfbWtkaXJfd2l0aF9wYXJlbnRzKGhzdHNEaXJlY3RvcnkuZ2V0
KCksIDA3MDApOworCisgICAgR1JlZlB0cjxTb3VwSFNUU0VuZm9yY2VyPiBlbmZvcmNlciA9IGFk
b3B0R1JlZihzb3VwX2hzdHNfZW5mb3JjZXJfZGJfbmV3KGhzdHNEYXRhYmFzZS5nZXQoKSkpOwor
ICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IHBvbGljeShzb3VwX2hzdHNfcG9saWN5X25l
dygid2Via2l0Z3RrLm9yZyIsIDM2MDAsIHRydWUpKTsKKyAgICBzb3VwX2hzdHNfZW5mb3JjZXJf
c2V0X3BvbGljeShlbmZvcmNlci5nZXQoKSwgcG9saWN5LmdldCgpKTsKKworICAgIC8vIFdlIHdh
aXQgNSBzZWNvbmRzIGJlZm9yZSBhZGRpbmcgbW9yZSBlbnRyaWVzIHNvIHRoYXQgd2UgY2FuIHRl
c3QgdGhlIGNsZWFyIEFQSSB3aXRoIGEgdGltZSBvdGhlciB0aGFuIHplcm8uCisgICAgc2xlZXAo
NSk7CisKKyAgICBwb2xpY3kucmVzZXQoc291cF9oc3RzX3BvbGljeV9uZXcoImdub21lLm9yZyIs
IDM2MDAsIHRydWUpKTsKKyAgICBzb3VwX2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNl
ci5nZXQoKSwgcG9saWN5LmdldCgpKTsKKyAgICBwb2xpY3kucmVzZXQoc291cF9oc3RzX3BvbGlj
eV9uZXcoIndlYmtpdC5vcmciLCAzNjAwLCB0cnVlKSk7CisgICAgc291cF9oc3RzX2VuZm9yY2Vy
X3NldF9wb2xpY3koZW5mb3JjZXIuZ2V0KCksIHBvbGljeS5nZXQoKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHRlc3RXZWJzaXRlRGF0YUhzdHMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRF
X0RBVEFfSFNUU19DQUNIRSk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRh
dGFMaXN0KSwgPT0sIDMpOworICAgIFdlYktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nh
c3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSwgPT0sIFdFQktJVF9XRUJT
SVRFX0RBVEFfSFNUU19DQUNIRSk7CisgICAgLy8gSFNUUyBkYXRhIHNpemUgaXMgdW5rbm93bi4K
KyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3NpemUoZGF0YSwg
V0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFKSwgPT0sIDApOworCisgICAgLy8gVGhlIGxh
c3QgcGFydCBvZiB0aGUgdGVzdCBhc3N1bWVzIHRoYXQgdGhlIGVudHJ5IHRvIGJlIGRlbGV0ZWQg
bmV4dCBpcyBOT1QgdGhlIG9uZSBmb3Igd2Via2l0Z3RrLm9yZywgd2hpY2ggY2Fubm90IGJlCisg
ICAgLy8gZ3VhcmFudGVlZCBieSB0aGUgQVBJIHVuZm9ydHVuYXRlbHkuIFdoaWxlIHRoYXQgaGFw
cGVuaW5nIHdvdWxkbid0IGNvbnN0aXR1dGUgYW4gQVBJIGVycm9yLCBhc3NlcnQgb24gdGhhdCBq
dXN0IHRvIG1ha2UKKyAgICAvLyBzdXJlIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIHRlc3Qgd29ya3Mu
IElmIHRoaXMgaGFwcGVucyB0byBmYWlsIGF0IHNvbWUgcG9pbnQsIHRoZSB0ZXN0IHdpbGwgbmVl
ZCBmaXhpbmcsIG5vdCB0aGUgY29kZS4KKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNp
dGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgIT0sICJ3ZWJraXRndGsub3JnIik7CisKKyAgICBHTGlz
dCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07CisgICAgdGVzdC0+cmVt
b3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSwgJnJlbW92ZUxpc3QpOworICAgIGRh
dGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMik7CisgICAg
ZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSks
ID09LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUpOworCisgICAgLy8gUmVtb3ZlIGFs
bCBIU1RTIGRhdGEgdGhhdCBpcyBsZXNzIHRoYW4gMyBzZWNvbmRzIG9sZC4gVGhpcyB3aWxsIG9u
bHkgbGVhdmUgdGhlIGZpcnN0IHBvbGljeSB0aGF0IHdhcyBhZGRlZCBpbgorICAgIC8vIHByZXBv
cHVsYXRlSHN0c0RhdGEoKSBhYm92ZS4KKyAgICB0ZXN0LT5jbGVhcihXRUJLSVRfV0VCU0lURV9E
QVRBX0hTVFNfQ0FDSEUsIDMgKiAxMDAwICogMTAwMCk7CisgICAgZGF0YUxpc3QgPSB0ZXN0LT5m
ZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUpOworICAgIGdfYXNzZXJ0X2NtcHVp
bnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKKyAgICBkYXRhID0gc3RhdGljX2Nh
c3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCAid2Via2l0Z3RrLm9y
ZyIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMo
ZGF0YSksID09LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUpOworCisgICAgLy8gUmVt
b3ZlIGFsbCBIU1RTIGRhdGEuCisgICAgdGVzdC0+Y2xlYXIoV0VCS0lUX1dFQlNJVEVfREFUQV9I
U1RTX0NBQ0hFLCAwKTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPmZldGNoKFdFQktJVF9XRUJT
SVRFX0RBVEFfSFNUU19DQUNIRSkpOworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHRlc3RXZWJz
aXRlRGF0YUNvb2tpZXMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewog
ICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfQ09P
S0lFUyk7CkBAIC01NzEsNiArNjM5LDEwIEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBrU2VydmVy
ID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKICAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJh
Y2spOwogCisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCA5MSkKKyAgICBwcmVwb3B1bGF0
ZUhzdHNEYXRhKCk7CisjZW5kaWYKKwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRX
ZWJzaXRlRGF0YSIsICJjb25maWd1cmF0aW9uIiwgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlv
bik7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiZXBoZW1lcmFs
IiwgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKTsKICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgi
V2ViS2l0V2Vic2l0ZURhdGEiLCAiY2FjaGUiLCB0ZXN0V2Vic2l0ZURhdGFDYWNoZSk7CkBAIC01
NzgsNiArNjUwLDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRk
KCJXZWJLaXRXZWJzaXRlRGF0YSIsICJkYXRhYmFzZXMiLCB0ZXN0V2Vic2l0ZURhdGFEYXRhYmFz
ZXMpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJhcHBj
YWNoZSIsIHRlc3RXZWJzaXRlRGF0YUFwcGNhY2hlKTsKICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFk
ZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY29va2llcyIsIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMp
OworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTEpCisgICAgV2Vic2l0ZURhdGFUZXN0
OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImhzdHMiLCB0ZXN0V2Vic2l0ZURhdGFIc3RzKTsK
KyNlbmRpZgogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJk
ZXZpY2VpZGhhc2hzYWx0IiwgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWlu
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4
IDk1NTUyMGM4NWVmMTk2ZDNiMjM4MTY4ZDRkYWZmZjIxZTc3MzNkNmQuLjI0ZjRiMmYwY2ZjNzNi
MjQyNGM0ZjhmYTM0N2I5ZjE3NjQzMjQyNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAtMTIxLDEwICsxMjEsMTEgQEAgcHVibGljOgog
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGRhdGFEaXJlY3RvcnkoKSwgImRpc2stY2FjaGUiLCBudWxscHRyKSk7CiAgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1l
KGRhdGFEaXJlY3RvcnkoKSwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVl
UHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3Rvcnko
KSwgIndlYnNxbCIsIG51bGxwdHIpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3RzRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZGF0YURpcmVjdG9yeSgpLCAiaHN0cyIsIG51bGxwdHIp
KTsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRh
TWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KAogICAg
ICAgICAgICAgImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
LmdldCgpLCAiaW5kZXhlZGRiLWRpcmVjdG9yeSIsIGluZGV4ZWREQkRpcmVjdG9yeS5nZXQoKSwK
ICAgICAgICAgICAgICJkaXNrLWNhY2hlLWRpcmVjdG9yeSIsIGRpc2tDYWNoZURpcmVjdG9yeS5n
ZXQoKSwgIm9mZmxpbmUtYXBwbGljYXRpb24tY2FjaGUtZGlyZWN0b3J5IiwgYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeS5nZXQoKSwKLSAgICAgICAgICAgICJ3ZWJzcWwtZGlyZWN0b3J5Iiwgd2Vi
U1FMRGlyZWN0b3J5LmdldCgpLCBudWxscHRyKSk7CisgICAgICAgICAgICAid2Vic3FsLWRpcmVj
dG9yeSIsIHdlYlNRTERpcmVjdG9yeS5nZXQoKSwgImhzdHMtZGlyZWN0b3J5IiwgaHN0c0RpcmVj
dG9yeS5nZXQoKSwgbnVsbHB0cikpOwogCiAgICAgICAgIG1fd2ViQ29udGV4dCA9IGFkb3B0R1Jl
Zih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250
ZXh0LmdldCgpLCAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlh
bGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggMDI0YmFm
YjUwNzY4Mzc4NzdhNzRmZmQ4YmM5MWEwZDE4YTIwODcwZS4uYmRhM2U5MTBiYzIwZGM5OWI3MDNi
ZTJlNjE2NmUwMzI1ZDUzMzgxYyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxl
cworKysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0yMzgsOSArMjM4LDkgQEAKICAg
ICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImxpYnBzbCIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxicmFuY2ggbW9kdWxlPSIvcHVi
L0dOT01FL3NvdXJjZXMvbGlic291cC8yLjY3L2xpYnNvdXAtJHt2ZXJzaW9ufS50YXIueHoiIHZl
cnNpb249IjIuNjcuOTAiCisgICAgPGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9s
aWJzb3VwLzIuNjcvbGlic291cC0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMi42Ny45MSIK
ICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0gICAgICAgICAgICBoYXNoPSJzaGEy
NTY6MzAzNjg2MDAyYmQ3ZDdiZjkzMjA0ZWViZTBkNWVjOWY1ZDU3ZDA3MWUzNDExZTIzMDRkNmY4
YmNmYTk3ZWY3OSI+CisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6MzkwYjViMjgyNjNkM2JkZjk4
NjZmYTY5NDM0NmNhYTVlNGJjYjk4NmUwMTRlMzM4M2U5YjYxMzBiNzA2ZjNkYSI+CiAgICAgPC9i
cmFuY2g+CiAgIDwvbWVzb24+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9qaGJ1aWxkLm1vZHVs
ZXMgYi9Ub29scy93cGUvamhidWlsZC5tb2R1bGVzCmluZGV4IDUzYzYyYmQxNGUwNzM1NmI3NzVm
NmM2MGFjNWM5YmUxOGVkZTJlZTIuLjY1YWJkMzYwYzc4MjExODRkNWM0ZjZiNTNkZjhhNTYxY2Rj
ZTJkYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMv
d3BlL2poYnVpbGQubW9kdWxlcwpAQCAtMTAwLDkgKzEwMCw5IEBACiAgICAgICA8ZGVwIHBhY2th
Z2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJwc2wiLz4KICAg
ICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2Vz
L2xpYnNvdXAvMi42Ny9saWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9uPSIyLjY3Ljkw
IgorICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvbGlic291cC8yLjY3L2xp
YnNvdXAtJHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjIuNjcuOTEiCiAgICAgICAgICAgICBy
ZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjMwMzY4NjAwMmJk
N2Q3YmY5MzIwNGVlYmUwZDVlYzlmNWQ1N2QwNzFlMzQxMWUyMzA0ZDZmOGJjZmE5N2VmNzkiPgor
ICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjM5MGI1YjI4MjYzZDNiZGY5ODY2ZmE2OTQzNDZjYWE1
ZTRiY2I5ODZlMDE0ZTMzODNlOWI2MTMwYjcwNmYzZGEiPgogICAgIDwvYnJhbmNoPgogICA8L21l
c29uPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377436</attachid>
            <date>2019-08-28 02:14:20 -0700</date>
            <delta_ts>2019-08-28 02:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192074-20190828121418.patch</filename>
            <type>text/plain</type>
            <size>56914</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZkN2IxODYyZDc0MjY4
NTFlMzJlMzFhMTYwNzlkMTNhNmQ2OTdmZi4uZTZlMzZlNjkyOTliOWFkYmQzMTRiNmE1ODQ4N2M5
ODliZmE1NjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTI4ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBJbXBsZW1lbnQgSFNUUyBmb3IgdGhlIHNvdXAgbmV0d29yayBiYWNrZW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIwNzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJzb3VwIDIuNjcuMSBpbnRy
b2R1Y2VkIEhTVFMgc3VwcG9ydCB2aWEgYSBTb3VwU2Vzc2lvbkZlYXR1cmUuCisgICAgICAgIEFk
ZCBzdXBwb3J0IHRvIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZCBieSBhZGRpbmcgdGhlIGZlYXR1
cmUgdG8KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uIGFuZCBoYW5kbGluZyBIU1RTIHByb3Rv
Y29sIHVwZ3JhZGVzLCBieQorICAgICAgICBwcm9wYWdhdGluZyB0aGUgc2NoZW1lIGNoYW5nZSBm
dXJ0aGVyIHRvIGNsaWVudHMuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICB0aGUgSFNUUyBmZWF0
dXJlIHVuY29uZGl0aW9uYWxseSwgYnV0IGl0IHN0aWxsIHBvc3NpYmxlIHRvIGFkZAorICAgICAg
ICBhIGJvb2xlYW4gcHJvcGVydHkgdG8gdGhlIHdlYiBjb250ZXh0IGNsYXNzIGlmIGRlc2lyZWQu
CisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgQVBJIHRvIHRoZSBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgdG8gc3BlY2lmeQorICAgICAgICB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBIU1RT
IGRhdGFiYXNlIGlzIHNhdmVkLiBJZiB0aGUgZGlyZWN0b3J5CisgICAgICAgIGlzIG5vdCBzZXQg
b3IgaWYgdGhlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwsIHVzZSBhCisgICAgICAgIG5vbi1w
ZXJzaXN0ZW50LCBtZW1vcnkgb25seSBIU1RTIGVuZm9yY2VyLgorCisgICAgICAgIEltcGxlbWVu
dCBhcyB3ZWxsIHRoZSBtZXRob2RzIG5lZWRlZCB0byBjbGVhbi11cCBhbmQgZGVsZXRlIEhTVFMK
KyAgICAgICAgcG9saWNpZXMgZnJvbSB0aGUgc3RvcmFnZSBhbmQgZXhwb3NlIHRoZSBmZWF0dXJl
IGluIEdUSysgTWluaUJyb3dzZXIncworICAgICAgICBhYm91dDpkYXRhLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpoc3RzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldEhTVFNQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VwTmV0d29ya1Nlc3Npb246OnNldHVwSFNUU0VuZm9yY2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6
CisKIDIwMTktMDgtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIE9yaWdpbiBoZWFkZXIgbm90IGluY2x1ZGVkIGluIFdlYlNvY2tldCBoYW5k
c2hha2UgcmVxdWVzdCB3aGVuIHVzaW5nIHBsYXRmb3JtIFdlYlNvY2tldCBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNTA3MTBjZThhZDc1NTFhNjE0NjcyZGI1OGMwMWY0ZmJiNmE0ZmRkNi4uZWJjOGYwZWEwMzhk
MTVlOTBlOGIyODVmNGI3NzBhYjZhN2RlOTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxOS0wOC0yOCAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMgZm9yIHRoZSBzb3VwIG5ldHdvcmsgYmFj
a2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
MDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGli
c291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBvcnQgdmlhIGEgU291cFNlc3Npb25GZWF0
dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUgc291cCBuZXR3b3JrIGJhY2tlbmQgYnkg
YWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiBhbmQgaGFu
ZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkKKyAgICAgICAgcHJvcGFnYXRpbmcgdGhl
IHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRzLiBUaGlzIHBhdGNoIGFkZHMKKyAgICAg
ICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBpdCBzdGlsbCBwb3NzaWJs
ZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3BlcnR5IHRvIHRoZSB3ZWIgY29udGV4dCBj
bGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIEFQSSB0byB0aGUg
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIGRpcmVjdG9y
eSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZlZC4gSWYgdGhlIGRpcmVjdG9yeQorICAg
ICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1hbmFnZXIgaXMgZXBoZW1lcmFsLCB1c2Ug
YQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5IG9ubHkgSFNUUyBlbmZvcmNlci4KKwor
ICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0aG9kcyBuZWVkZWQgdG8gY2xlYW4tdXAg
YW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVzIGZyb20gdGhlIHN0b3JhZ2UgYW5kIGV4
cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAgIE1pbmlCcm93c2VyJ3MgYWJvdXQ6ZGF0
YS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxl
RG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQcm90
b2NvbFVwZ3JhZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3Vw
Ojpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza1NvdXA6OmhzdHNFbmZvcmNlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0
SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3Ry
dWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5j
cHA6CisgICAgICAgIChyZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyk6CisgICAgICAg
ICh0b1dlYktpdFdlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0
ZWQpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKToKKyAgICAgICAg
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkpOgor
ICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpoc3RzU3RvcmFnZURpcmVjdG9yeSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRI
U1RTU3RvcmFnZURpcmVjdG9yeSk6CisKIDIwMTktMDgtMjcgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBEZWxheSBMYXllclRy
ZWVIb3N0IGNyZWF0aW9uIGluIGFsd2F5cy1vbiBBQyB1bnRpbCBEcmF3aW5nQXJlYSBwYWludGlu
ZyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvR1VuaXF1ZVB0clNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9HVW5pcXVlUHRyU291cC5oCmluZGV4IDBiNGZiMzRmODZmMjRhNDYyMWUwZjkwNjcwNjc3
NWY5NDgxODU5OTYuLmY1OWYyYzg3Nzk4OWZhZjJmMjMzZTAzMjNjNDBlNmQzYTRjYTk2OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRy
U291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVl
UHRyU291cC5oCkBAIC0zMiw2ICszMiw5IEBAIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBV
UkksIHNvdXBfdXJpX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBz
b3VwX2Nvb2tpZV9mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFk
ZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVURVIo
U291cEJ1ZmZlciwgc291cF9idWZmZXJfZnJlZSkKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwg
NjcsIDEpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwSFNUU1BvbGljeSwgc291cF9oc3Rz
X3BvbGljeV9mcmVlKQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IDEyNmIwM2ViNDE3NWIwN2ExNmFjMTg1OTI3MDUwYTA5OThjYTgzODku
LjZlMGUzN2RmNjY5YWE5ZDUxNGRkMWUyODk1ODY1ZmM0OTM0MTQ0YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC01OSw2ICs1OSwxMiBAQCBzdGF0aWMgU291cE5ldHdvcmtQcm94eVNldHRp
bmdzJiBwcm94eVNldHRpbmdzKCkKICAgICByZXR1cm4gc2V0dGluZ3MuZ2V0KCk7CiB9CiAKK3N0
YXRpYyBDU3RyaW5nJiBoc3RzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPENTdHJpbmc+IGRpcmVjdG9yeTsKKyAgICByZXR1cm4gZGlyZWN0b3J5LmdldCgp
OworfQorCiAjaWYgIUxPR19ESVNBQkxFRAogaW5saW5lIHN0YXRpYyB2b2lkIHNvdXBMb2dQcmlu
dGVyKFNvdXBMb2dnZXIqLCBTb3VwTG9nZ2VyTG9nTGV2ZWwsIGNoYXIgZGlyZWN0aW9uLCBjb25z
dCBjaGFyKiBkYXRhLCBncG9pbnRlcikKIHsKQEAgLTEwOCw2ICsxMTQsNyBAQCBzdGF0aWMgQWxs
b3dlZENlcnRpZmljYXRlc01hcCYgYWxsb3dlZENlcnRpZmljYXRlcygpCiAKIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAg
ICA6IG1fc291cFNlc3Npb24oYWRvcHRHUmVmKHNvdXBfc2Vzc2lvbl9uZXcoKSkpCisgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gaHR0cDov
L3d3dy5icm93c2Vyc2NvcGUub3JnLyBmb2xsb3dpbmcKICAgICAvLyB0aGUgcnVsZSAiRG8gV2hh
dCBFdmVyeSBPdGhlciBNb2Rlcm4gQnJvd3NlciBJcyBEb2luZyIuIFRoZXkgc2VlbQpAQCAtMTMy
LDcgKzEzOSw3IEBAIFNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBpZiAoIWluaXRpYWxBY2NlcHRMYW5ndWFnZXMoKS5p
c051bGwoKSkKICAgICAgICAgc2V0QWNjZXB0TGFuZ3VhZ2VzKGluaXRpYWxBY2NlcHRMYW5ndWFn
ZXMoKSk7CiAKLSAgICBpZiAoc291cF9hdXRoX25lZ290aWF0ZV9zdXBwb3J0ZWQoKSAmJiAhc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpIHsKKyAgICBpZiAoc291cF9hdXRoX25lZ290aWF0ZV9zdXBw
b3J0ZWQoKSAmJiAhbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBnX29iamVj
dF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwKICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERf
RkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQVVUSF9ORUdPVElBVEUsCiAgICAgICAgICAgICBu
dWxscHRyKTsKQEAgLTE0MSw2ICsxNDgsNyBAQCBTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3
b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgaWYgKHByb3h5U2V0dGlu
Z3MoKS5tb2RlICE9IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkKICAg
ICAgICAgc2V0dXBQcm94eSgpOwogICAgIHNldHVwTG9nZ2VyKCk7CisgICAgc2V0dXBIU1RTRW5m
b3JjZXIoKTsKIH0KIAogU291cE5ldHdvcmtTZXNzaW9uOjp+U291cE5ldHdvcmtTZXNzaW9uKCkg
PSBkZWZhdWx0OwpAQCAtMTY5LDYgKzE3Nyw4OCBAQCBTb3VwQ29va2llSmFyKiBTb3VwTmV0d29y
a1Nlc3Npb246OmNvb2tpZUphcigpIGNvbnN0CiAgICAgcmV0dXJuIFNPVVBfQ09PS0lFX0pBUihz
b3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0NP
T0tJRV9KQVIpKTsKIH0KIAordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldEhTVFNQZXJzaXN0
ZW50U3RvcmFnZShjb25zdCBDU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaHN0c1N0b3JhZ2VE
aXJlY3RvcnkoKSA9IGRpcmVjdG9yeTsKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNl
dHVwSFNUU0VuZm9yY2VyKCkKK3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisg
ICAgaWYgKHNvdXBfc2Vzc2lvbl9oYXNfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQ
X1RZUEVfSFNUU19FTkZPUkNFUikpCisgICAgICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVy
ZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsK
KworICAgIEdSZWZQdHI8U291cEhTVFNFbmZvcmNlcj4gZW5mb3JjZXI7CisgICAgaWYgKG1fc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkgfHwgaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc051bGwoKSkK
KyAgICAgICAgZW5mb3JjZXIgPSBhZG9wdEdSZWYoc291cF9oc3RzX2VuZm9yY2VyX25ldygpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyho
c3RzU3RvcmFnZURpcmVjdG9yeSgpLmRhdGEoKSkpIHsKKyAgICAgICAgICAgIENTdHJpbmcgc3Rv
cmFnZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkoKS5kYXRhKCkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYkZp
bGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoc3RvcmFnZVBhdGguZGF0YSgpLCAiaHN0cy1zdG9yYWdl
LnNxbGl0ZSIsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGVuZm9yY2VyID0gYWRvcHRHUmVmKHNv
dXBfaHN0c19lbmZvcmNlcl9kYl9uZXcoZGJGaWxlbmFtZS5nZXQoKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgdGhl
IEhTVFMgc3RvcmFnZSBkaXJlY3RvcnkgXCIlc1wiLiBVc2luZyBhIG1lbW9yeSBlbmZvcmNlciBp
bnN0ZWFkLiIsIGhzdHNTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSk7CisgICAgICAgICAgICBlbmZv
cmNlciA9IGFkb3B0R1JlZihzb3VwX2hzdHNfZW5mb3JjZXJfbmV3KCkpOworICAgICAgICB9Cisg
ICAgfQorICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBT
T1VQX1NFU1NJT05fRkVBVFVSRShlbmZvcmNlci5nZXQoKSkpOworI2VuZGlmCit9CisKK3ZvaWQg
U291cE5ldHdvcmtTZXNzaW9uOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdE5hbWVzKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTEpCisg
ICAgU291cEhTVFNFbmZvcmNlciogZW5mb3JjZXIgPSBTT1VQX0hTVFNfRU5GT1JDRVIoc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VO
Rk9SQ0VSKSk7CisgICAgaWYgKCFlbmZvcmNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR1Vu
aXF1ZVB0cjxHTGlzdD4gZG9tYWlucyhzb3VwX2hzdHNfZW5mb3JjZXJfZ2V0X2RvbWFpbnMoZW5m
b3JjZXIsIEZBTFNFKSk7CisgICAgZm9yIChHTGlzdCogaXRlciA9IGRvbWFpbnMuZ2V0KCk7IGl0
ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRvbWFp
bihzdGF0aWNfY2FzdDxnY2hhcio+KGl0ZXItPmRhdGEpKTsKKyAgICAgICAgaG9zdE5hbWVzLmFk
ZChTdHJpbmc6OmZyb21VVEY4KGRvbWFpbi5nZXQoKSkpOworICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGhvc3ROYW1lcyk7CisjZW5kaWYKK30KKwordm9pZCBTb3VwTmV0d29ya1Nlc3Np
b246OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9z
dE5hbWVzKQoreworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICBTb3VwSFNU
U0VuZm9yY2VyKiBlbmZvcmNlciA9IFNPVVBfSFNUU19FTkZPUkNFUihzb3VwX3Nlc3Npb25fZ2V0
X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9UWVBFX0hTVFNfRU5GT1JDRVIpKTsK
KyAgICBpZiAoIWVuZm9yY2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQ
b2xpY3k+IHBvbGljeShzb3VwX2hzdHNfcG9saWN5X25ldyhob3N0TmFtZS51dGY4KCkuZGF0YSgp
LCBTT1VQX0hTVFNfUE9MSUNZX01BWF9BR0VfUEFTVCwgRkFMU0UpKTsKKyAgICAgICAgc291cF9o
c3RzX2VuZm9yY2VyX3NldF9wb2xpY3koZW5mb3JjZXIsIHBvbGljeS5nZXQoKSk7CisgICAgfQor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaG9zdE5hbWVzKTsKKyNlbmRpZgorfQorCit2b2lkIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJIU1RTQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkK
K3sKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDkxKQorICAgIFNvdXBIU1RTRW5mb3Jj
ZXIqIGVuZm9yY2VyID0gU09VUF9IU1RTX0VORk9SQ0VSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfSFNUU19FTkZPUkNFUikpOworICAgIGlm
ICghZW5mb3JjZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHBv
bGljaWVzKHNvdXBfaHN0c19lbmZvcmNlcl9nZXRfcG9saWNpZXMoZW5mb3JjZXIsIEZBTFNFKSk7
CisgICAgZm9yIChHTGlzdCogaXRlciA9IHBvbGljaWVzLmdldCgpOyBpdGVyICE9IG51bGxwdHI7
IGl0ZXIgPSBpdGVyLT5uZXh0KSB7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+
IHBvbGljeShzdGF0aWNfY2FzdDxTb3VwSFNUU1BvbGljeSo+KGl0ZXItPmRhdGEpKTsKKyAgICAg
ICAgYXV0byBtb2RpZmllZCA9IHNvdXBfZGF0ZV90b190aW1lX3QocG9saWN5LmdldCgpLT5leHBp
cmVzKSAtIHBvbGljeS5nZXQoKS0+bWF4X2FnZTsKKyAgICAgICAgaWYgKG1vZGlmaWVkID49IG1v
ZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpIHsKKyAgICAgICAgICAg
IEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IG5ld1BvbGljeShzb3VwX2hzdHNfcG9saWN5X25l
dyhwb2xpY3kuZ2V0KCktPmRvbWFpbiwgU09VUF9IU1RTX1BPTElDWV9NQVhfQUdFX1BBU1QsIEZB
TFNFKSk7CisgICAgICAgICAgICBzb3VwX2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNl
ciwgbmV3UG9saWN5LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKG1vZGlmaWVkU2luY2UpOworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
dHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQogewogICAgIHdoaWxlICgqc3RyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmgKaW5kZXggNWUzMmQzMWFkNGZkYTA3NzlhMjFlMTYzMjg3ODM3NWJiZjhj
YTU0OC4uZWNjZGE0MWFlMTQ3Y2I1YzNmNTljM2IxMWY3MjgwMjIyNDUzZDQzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb29raWVK
YXIoU291cENvb2tpZUphciopOwogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphcigpIGNvbnN0
OwogCisgICAgc3RhdGljIHZvaWQgc2V0SFNUU1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IENTdHJp
bmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICB2b2lkIHNldHVwSFNUU0VuZm9yY2VyKCk7
CisKICAgICBzdGF0aWMgdm9pZCBjbGVhck9sZFNvdXBDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hl
RGlyZWN0b3J5KTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByb3h5U2V0dGluZ3MoY29uc3QgU291
cE5ldHdvcmtQcm94eVNldHRpbmdzJik7CkBAIC03MiwxMCArNzUsMTUgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldEN1c3RvbVByb3RvY29sUmVxdWVzdFR5cGUoR1R5cGUpOwogICAgIHZv
aWQgc2V0dXBDdXN0b21Qcm90b2NvbHMoKTsKIAorICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhT
VFNDYWNoZShIYXNoU2V0PFN0cmluZz4mKTsKKyAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhv
c3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUo
V2FsbFRpbWUpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBMb2dnZXIoKTsKIAogICAgIEdS
ZWZQdHI8U291cFNlc3Npb24+IG1fc291cFNlc3Npb247CisgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc0YmM0NmZlZWZlOWRk
ZjY3MzFlYjkxMGY1YzViYzExNGFjMTgzYjUuLjhkNDAzM2ZjZTA5MjY0ZmUxOTlhODU1NGMwODAw
NmUxNTIyM2FjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0xMzQ5LDcgKzEzNDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dAogICAgICAgICB9KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAg
Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CkBAIC0x
Mzg5LDcgKzEzODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewogICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2lu
Y2UpOwpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhj
b29raWVIb3N0TmFtZXMpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAg
ICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNU
U0NhY2hlSG9zdE5hbWVzKTsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3NpCiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aEhTVFNUb0Rl
bGV0ZTsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNP
VVApCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpI
U1RTQ2FjaGUpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRo
SFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUp
OwpAQCAtMTg1Myw3ICsxODUzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVE
b21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICB9CiAg
ICAgCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZTsKLSNpZiBQ
TEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7
CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQogICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGFmNjc0NTYzYTA3NTZjMDJjN2E4NWYwMzhmOTJlNTcwYTNkMGQ4MWUuLmUxOGYyZDVkYTI1
ZjYyNzhhYzIyNzcyZjgwNDRhOWJjZTNkMzA5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE5MywxMCArMTkzLDEyIEBAIHB1YmxpYzoK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFw
cGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlv
blRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQorI2VuZGlmCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mKTsKICAg
ICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2Fj
aGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSk7Ci0gICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5
c3RlbUNoYW5nZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA0ZmFj
YzgyMTNlZjg1MDVjZjlkNTQ4YjIzYzU2NmRkM2QwYmUwYWMyLi5kZjkwZGZmNDIyYzc4NjBmMjZi
ZmJmNmU4YjZjMjVkZDE5MGM2ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNTdWZmaXguaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KQEAgLTE0Nyw2ICsxNDgsMTMg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwg
NjcsIDEpCisgICAgaWYgKChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBz
IikgJiYgIXNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcoKSkgfHwgKG1fY3VycmVudFJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cCIpICYmICFzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVw
Z3JhZGUoKSkpCisgICAgICAgIHNvdXBfbWVzc2FnZV9kaXNhYmxlX2ZlYXR1cmUoc291cE1lc3Nh
Z2UuZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsKKyAgICBlbHNlCisgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3Qoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9IU1RT
X0VORk9SQ0VSKSwgImhzdHMtZW5mb3JjZWQiLCBHX0NBTExCQUNLKGhzdHNFbmZvcmNlZCksIHRo
aXMpOworI2VuZGlmCisKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBBY2NlcHQgaGVhZGVy
IGZvciBzdWJyZXNvdXJjZXM7IHNvbWUgc2l0ZXMgd2FudCB0aGlzIHRvIHNlcnZlIHNvbWUgb2Yg
dGhlaXIgc3VicmVzb3VyY2VzLgogICAgIGlmICghc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29u
ZShzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IikpCiAgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNj
ZXB0IiwgIiovKiIpOwpAQCAtMTkyLDggKzIwMCwxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmNsZWFyUmVxdWVzdCgpCiAgICAgICAgICAgICBzb3VwX3Nlc3Npb25fY2FuY2VsX21lc3Nh
Z2Uoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Np
b24oKSwgbV9zb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEKTsKICAgICAg
ICAgbV9zb3VwTWVzc2FnZSA9IG51bGxwdHI7CiAgICAgfQotICAgIGlmIChtX3Nlc3Npb24pCisg
ICAgaWYgKG1fc2Vzc2lvbikgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X21hdGNoZWQoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lvbikuc291
cFNlc3Npb24oKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
dGhpcyk7CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCks
IFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSwgdGhpcyk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVzdW1lKCkKQEAgLTEwNjAsNiArMTA3Miw0NSBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNv
dXBNZXNzYWdlLCBOZXR3b3JrRGF0YQogICAgIHRhc2stPmRpZFN0YXJ0UmVxdWVzdCgpOwogfQog
CisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorYm9vbCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpzaG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5nKCkgY29uc3QKK3sKKyAgICAvLyBGb2xs
b3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGlnYXRpb24gMToKKyAgICAvLyAgIkxpbWl0IEhTVFMg
U3RhdGUgdG8gdGhlIEhvc3RuYW1lLCBvciB0aGUgVG9wIExldmVsIERvbWFpbiArIDEiCisgICAg
aWYgKGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgfHwgaG9zdHNBcmVFcXVhbChtX2N1cnJlbnRSZXF1
ZXN0LnVybCgpLCBtX2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpIHx8IGlz
UHVibGljU3VmZml4KG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBn
cmFkZSgpIGNvbnN0Cit7CisgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRnYXRp
b24gMjoKKyAgICAvLyAiSWdub3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJlc291cmNlIFJlcXVlc3Rz
IHRvIEJsb2NrZWQgRG9tYWlucyIKKyAgICBpZiAoIWlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgJiYg
IW1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnByb3Rv
Y29sVXBncmFkZWRWaWFIU1RTKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKK3sKKyAgICBtX3Jl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6c3ludGhldGljUmVkaXJlY3RSZXNwb25zZShtX2N1
cnJlbnRSZXF1ZXN0LnVybCgpLCBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dldF91cmkoc291
cE1lc3NhZ2UpKSk7CisgICAgY29udGludWVIVFRQUmVkaXJlY3Rpb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBN
ZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKK3sKKyAgICBp
ZiAodGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0g
U3RhdGU6OkNvbXBsZXRlZCB8fCAhdGFzay0+bV9jbGllbnQpIHsKKyAgICAgICAgdGFzay0+Y2xl
YXJSZXF1ZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc291cE1lc3Nh
Z2UgPT0gdGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSkKKyAgICAgICAgdGFzay0+cHJvdG9jb2xV
cGdyYWRlZFZpYUhTVFMoc291cE1lc3NhZ2UpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6ZGlkU3RhcnRSZXF1ZXN0KCkKIHsKICAgICBtX25ldHdvcmtMb2FkTWV0cmlj
cy5yZXF1ZXN0U3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmgKaW5kZXggYWQzMDYzZDZiNzI1ZmFmOGJhMTk3MzhjM2FiMzE4NTcwZGYwNmYxMC4u
MWJkZTQyZDk2MjhjOGExYmM3YWYwODc0MmM1MmVjNzg0ZjZmNDU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5o
CkBAIC0xMTEsNiArMTExLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRpbmdD
YWxsYmFjayhTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKICNlbHNlCiAgICAg
c3RhdGljIHZvaWQgcmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayhTb3VwU2Vzc2lvbiosIFNvdXBNZXNz
YWdlKiwgU291cFNvY2tldCosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKKyNlbmRpZgorI2lmIFNP
VVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKyAgICBib29sIHNob3VsZEFsbG93SFNUU1BvbGlj
eVNldHRpbmcoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFk
ZSgpIGNvbnN0OworICAgIHZvaWQgcHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2Uq
KTsKKyAgICBzdGF0aWMgdm9pZCBoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBN
ZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogI2VuZGlmCiAgICAgdm9pZCBkaWRTdGFy
dFJlcXVlc3QoKTsKICAgICBzdGF0aWMgdm9pZCByZXN0YXJ0ZWRDYWxsYmFjayhTb3VwTWVzc2Fn
ZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggM2ZmODRkYjM1
Y2M1ODNiYWUyZWIyMzQ1MjU1ZTMxZjMzOGUzNzU0NC4uYTMxYjQzZDhlNWRmZWE5ODBjMGRjYThk
NzcwNDJiOWFmNDQ2NDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTk1LDYgKzk1LDI0IEBAIHN0
YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
YW5ndWFnZXMpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0
TmFtZXMpCit7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtT
ZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7
CisgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCkuZ2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZShob3N0TmFtZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2Fj
aGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3sKKyAgICBjb25zdCBhdXRv
KiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Np
b24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9uLT5zb3VwTmV0d29y
a1Nlc3Npb24oKS5kZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoaG9zdE5hbWVzKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAg
ICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4o
bmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBzZXNzaW9u
LT5zb3VwTmV0d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKIHsKICAgICBhdXRvIGFjY2VwdExhbmd1YWdl
cyA9IGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcyk7CkBAIC0xMjksNiArMTQ3LDEyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXND
aGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKIAogICAgIHNldElnbm9yZVRMU0Vycm9ycyhw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7CisKKyAgICBpZiAoIXBhcmFtZXRlcnMuaHN0c1N0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNl
dEhTVFNQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5LnV0
ZjgoKSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGNvbnN0IGF1dG8mIHNlc3Npb24p
IHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgTmV0d29ya1Nlc3Npb25Tb3VwJj4oc2Vzc2lv
bikuc291cE5ldHdvcmtTZXNzaW9uKCkuc2V0dXBIU1RTRW5mb3JjZXIoKTsKKyAgICB9KTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IDljOWE0M2I3M2M0M2RkNmQyYjMyYjdlODYwZDg1ZTYxYmE4MTBiZjIuLmIxMmNmMGQxM2I4
ZmZlZjA4NmYzN2MxNDYzYzMzOGJmYmI5YWQ1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdMSUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5kaWYKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCAyNTI1ODNjNWVjOWM0NGQ5Y2I5YjI3NmRlZjY1MzYw
NzkyNzg1NzdmLi41ZDNkOTc4ZGNkYTU2OWM0ZDdmY2Y1YmM2ZGExMGQ4OGY0MzYzZjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC04NCw2ICs4NCwxMSBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7CiB9CiAKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkg
R19ESVJfU0VQQVJBVE9SX1MpOworfQorCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZ
IEdfRElSX1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDhjNjg5ODI5NTM5ZjQyMjM4YjMwN2Y1NTU2MDhhNWM1MDAyZGNmNDMuLjIyYTg2NDU5MWRm
ODViOWM4ZjkyMGE1OGJmOWI5MDllNDQ2OWY5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNDEsNiArMzQx
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNr
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29y
a0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlv
bl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAg
ICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRIU1RTU3RvcmFnZURpcmVjdG9y
eShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNw
cAppbmRleCA3Yzk3ZTBiMWIyNGExYjNhNmFhMjEzM2Y4OTRhMWU4YTc4ZTAwMzlkLi5kZDhmY2Rm
OTlmZWE3ZDAzZmU2MWYzYzc0ZGNkODQ3Y2JhNWY2NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCkBAIC03Myw2
ICs3Myw3IEBAIHN0YXRpYyBib29sIHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKGNv
bnN0IFdlYnNpdGVEYXRhUmVjb3JkJiByZWNvcmQpCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcywK
ICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsCisgICAgICAgIFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlLAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEsCiAjZW5kaWYKQEAgLTk4LDYg
Kzk5LDggQEAgc3RhdGljIFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdG9XZWJLaXRXZWJzaXRlRGF0
YVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUgfD0g
V0VCS0lUX1dFQlNJVEVfREFUQV9XRUJTUUxfREFUQUJBU0VTOwogICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCiAgICAgICAgIHJldHVy
blZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUzsKKyAgICBp
ZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICBy
ZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEU7CiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UGx1Z0luRGF0YSkpCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRF
X0RBVEFfUExVR0lOX0RBVEE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBkNTNlYTk4
ZTUzNmQ0NjFhZjlmYWVlOGQyZmY2MjkyMmZmODEzMTYwLi4zZGJkNWFiOGJkOWJlYTI3YmI4NTU2
MTJhNzBkNjQ0NTQ4OWE5Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTg0LDYg
Kzg0LDcgQEAgZW51bSB7CiAgICAgUFJPUF9BUFBMSUNBVElPTl9DQUNIRV9ESVJFQ1RPUlksCiAg
ICAgUFJPUF9JTkRFWEVEREJfRElSRUNUT1JZLAogICAgIFBST1BfV0VCU1FMX0RJUkVDVE9SWSwK
KyAgICBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZLAogICAgIFBST1BfSVNfRVBIRU1FUkFMCiB9
OwogCkBAIC0xMDEsNiArMTAyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQ
cml2YXRlIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbmRleGVkREJEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiB3ZWJTUUxEaXJlY3Rvcnk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3RzQ2FjaGVE
aXJlY3Rvcnk7CiAKICAgICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFn
ZXI7CiAgICAgVmVjdG9yPFdlYlByb2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xzOwpAQCAtMTM2LDYg
KzEzOCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHCiAgICAgICAgIGdfdmFsdWVfc2V0X3N0
cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0
b3J5KG1hbmFnZXIpKTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IU1RTX0NBQ0hFX0RJUkVDVE9SWToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTcwLDYgKzE3NSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElE
LCBjCiAgICAgY2FzZSBQUk9QX1dFQlNRTF9ESVJFQ1RPUlk6CiAgICAgICAgIG1hbmFnZXItPnBy
aXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZOgorICAgICAg
ICBtYW5hZ2VyLT5wcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3Ry
aW5nKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6
CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKICAgICAgICAgICAgIG1h
bmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKQEAgLTE5OCw2ICsyMDYsOCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3Qp
CiAgICAgICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAocHJp
di0+YmFzZUNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGlmICghcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSkKICAgICAgICAgICAgIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlQ2FjaGVEaXJlY3Rvcnku
Z2V0KCksICJhcHBsaWNhdGlvbnMiLCBudWxscHRyKSk7CisgICAgICAgIGlmICghcHJpdi0+aHN0
c0NhY2hlRGlyZWN0b3J5KQorICAgICAgICAgICAgcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKHByaXYtPmJhc2VDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgIH0KIH0K
IApAQCAtMzMyLDYgKzM0MiwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfY2xhc3NfaW5pdChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAg
ICAgbnVsbHB0ciwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSB8IEdfUEFSQU1fREVQUkVD
QVRFRCkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpoc3Rz
LWNhY2hlLWRpcmVjdG9yeToKKyAgICAgKgorICAgICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhl
IEhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSAoSFNUUykgY2FjaGUgd2lsbCBiZSBzdG9y
ZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yNgorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9IU1RTX0NBQ0hFX0RJUkVDVE9SWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAg
ICAgICAgICAgICJoc3RzLWNhY2hlLWRpcmVjdG9yeSIsCisgICAgICAgICAgICBfKCJIU1RTIENh
Y2hlIERpcmVjdG9yeSIpLAorICAgICAgICAgICAgXygiVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUg
SFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IGNhY2hlIHdpbGwgYmUgc3RvcmVkIiksCisg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiAg
ICAgLyoqCiAgICAgICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmlzLWVwaGVtZXJhbDoKICAg
ICAgKgpAQCAtMzc0LDYgKzQwMSw4IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgICAg
ICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBy
aXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/
CiAgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlv
bi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmhzdHNDYWNoZURpcmVjdG9yeSA/Cisg
ICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkg
OiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmhz
dHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUg
PSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKICAgICB9CkBAIC02MTIsNiArNjQxLDI5IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZURhdGFN
CiAgICAgcmV0dXJuIHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKTsKIH0KIAorLyoqCisgKiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5OgorICog
QG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgorICoKKyAqIEdldCB0aGUgI1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlcjpoc3RzLWNhY2hlLWRpcmVjdG9yeSBwcm9wZXJ0eS4KKyAq
CisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEhTVFMg
Y2FjaGUgaXMgc3RvcmVkIG9yICVOVUxMIGlmIEBtYW5hZ2VyIGlzIGVwaGVtZXJhbC4KKyAqCisg
KiBTaW5jZTogMi4yNgorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1h
bmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFU
QV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKKworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OworICAgIGlmIChwcml2LT53ZWJzaXRl
RGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXByaXYtPmhzdHNDYWNoZURpcmVjdG9y
eSkKKyAgICAgICAgcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgcmV0dXJuIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKK30KKwogLyoqCiAg
KiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyOgogICogQG1h
bmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpAQCAtNjQ5LDYgKzcwMSw4IEBAIHN0
YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV2ViS2l0
V2Vic2l0ZURhdGFUeXBlcyB0eXBlCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0
YVR5cGU6OldlYlNRTERhdGFiYXNlcyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVf
REFUQV9JTkRFWEVEREJfREFUQUJBU0VTKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOworICAgIGlmICh0eXBlcyAmIFdFQktJVF9X
RUJTSVRFX0RBVEFfSFNUU19DQUNIRSkKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6SFNUU0NhY2hlKTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBKQogICAgICAgICBy
ZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAppbmRleCAw
MTg4ZTc3ZDkwMTBjMWVkZmY2YjA1NzBlYzg0YzVhNDNmNDhmNzJiLi45YzRkODE0NTg0Zjk3NTY1
Y2Y3ZGM3NTMyOGUwODg1MmRiZjUxYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YSBXZWJLaXRXZWJzaXRlRGF0YTsKICAqIEBXRUJL
SVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVnaW5zIGRhdGEuCiAgKiBAV0VCS0lUX1dF
QlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfREVW
SUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRldmljZSBp
ZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAorICogQFdFQktJVF9XRUJTSVRFX0RBVEFf
SFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4yNgogICogQFdFQktJVF9XRUJTSVRFX0RB
VEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNl
bnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAtNjIsNyArNjMsOCBAQCB0eXBlZGVmIGVu
dW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEgICAgICAgICAgICAgICA9
IDEgPDwgNywKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDgsCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxU
ICAgICAgID0gMSA8PCA5LAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAg
ICAgICAgICAgICA9ICgxIDw8IDEwKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNf
Q0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFf
QUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDExKSAtIDEKIH0gV2ViS2l0V2Vic2l0
ZURhdGFUeXBlczsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXgg
OGRlN2M0YmIyYzI2MGU1NzBmYzZkMDllYjA0MTRkZjkxMjIzZTM3Ni4uZDI0Y2QwYjdiODVmYmI4
Mjg0NGY0ZjY3Zjk5NGFmOGI4ZWNlN2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCkBAIC05MCw2
ICs5MCw5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVj
dG9yeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViCiBXRUJLSVRfREVQUkVDQVRFRCBjb25z
dCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3Rv
cnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdl
cik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdENvb2tpZU1hbmFn
ZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlciAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBkZjU4NWEyZTZkZWVhMzg5NGFj
Zjk0MzA5M2NlM2ExN2IwNzM1MjcyLi4xNWRmMzEyNjdjNzc0MmIyYWVlNTJmOWJjNWUxZmNkZWUy
NTgwMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE0MDMsNiArMTQw
Myw3IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9j
YWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0
b3J5Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5
CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9m
ZXRjaF9maW5pc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2Vic2l0ZURhdGEuaAppbmRleCA3NzhmZjUwOTEwZTlkNGM1Zjg1ZDVlNzc0YzYyM2JkMTVi
NTc1Njc3Li45NzNhNTUwNTYwZmUzODMwZDZkZDg4ZWJiNGRjOTU1Yzg3YmZiYWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5o
CkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YSBXZWJL
aXRXZWJzaXRlRGF0YTsKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVn
aW5zIGRhdGEuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICog
QFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQg
dG8gZ2VuZXJhdGUgdGhlIGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAor
ICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4y
NgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2
YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAt
NjIsNyArNjMsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfUExV
R0lOX0RBVEEgICAgICAgICAgICAgICA9IDEgPDwgNywKICAgICBXRUJLSVRfV0VCU0lURV9EQVRB
X0NPT0tJRVMgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgV0VCS0lUX1dFQlNJVEVf
REFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUICAgICAgID0gMSA8PCA5LAotICAgIFdFQktJVF9XRUJT
SVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEwKSAtIDEKKyAgICBX
RUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAor
ICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8
IDExKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VCS0lUX0FQSSBHVHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggMWU2Y2M1NmFhNGY3ZWMzODdhYzY2ZGY2MDgxM2M4NTJi
YTcwMTIwOS4uZTk5MTUzMjgyODAxOTI0MjdkNmM5ZWEzNjc4YTdmYmVjMGMyNjBjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5oCkBAIC05MCw2ICs5MCw5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
CiBXRUJLSVRfREVQUkVDQVRFRCBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgor
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBXRUJL
SVRfQVBJIFdlYktpdENvb2tpZU1hbmFnZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9jb29raWVfbWFuYWdlciAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggNjRlYTMwZTkz
Y2Q0ZTlkZDI0YzM2M2Y3OTczYzBlZjBjZGMwY2FlYS4uOTVlOTdjZjIyODdlOGI1Mzg3MGMxYmY3
ZDgxN2IxZGQ5MzgzZWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTI3Nyw2ICsxMjc3LDcg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeQog
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hl
X2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGly
ZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkK
K3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkKIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIKIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9mZXRjaAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNo
X2ZpbmlzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDFi
N2Y0NGQ3NjE0ZDViZjYyNDA3NThmOTdmZDkxNzFiMDM2ZmQ1ZDEuLjRkNDRkZDFkNmFkNzY1NTNh
NjU4MzA5OWMwNzk5MjVlOGE4ZWE2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
ID0gdGhpcy0+bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHkt
Pm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OworI2lmIFVTRShHTElCKQorICAgIGNvcHktPm1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0
aGlzLT5tX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2VuZGlmCiAgICAgY29weS0+bV9sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5
LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnkg
PSB0aGlzLT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGQzOGFiNzJmNTRiYjI0OGQyMmIxZDcwYzM5
MmJmNTBkMzdkNjJlYjcuLjYyMzI5MTU1N2QyYWVkNjQ4NWFlYmVmNTFlNGYzNmQ0OTQ3MzJiYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtNjEsNyArNjEsMTAg
QEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0KKyNpZiBVU0UoR0xJQikg
Ly8gQWNjb3JkaW5nIHRvIHIyNDUwNzUgdGhpcyB3aWxsIGV2ZW50dWFsbHkgbW92ZSBoZXJlLgor
ICAgIGNvbnN0IFN0cmluZyYgaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2hzdHNTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRIU1RTU3RvcmFnZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUo
ZGlyZWN0b3J5KTsgfQorI2VuZGlmCiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZv
aWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogCkBAIC0xMTgsNiArMTIx
LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQorICAgIFN0cmlu
ZyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2VuZGlmCiAgICAgU3RyaW5nIG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4NTRlMTI5ZThmZWM1
ODFiODZjMTJhNDRiMzI0N2ZkNDE2ODViNjguLjQ1M2FlNWFiOWFkMmJhOTY1OGU2ZWZlMGE4OTcz
YjQ1NTYwZDkwMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0wOC0wMiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNz
YWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gSW1wbGVtZW50IEhTVFMg
Zm9yIHRoZSBzb3VwIG5ldHdvcmsgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgbGlic291cCAyLjY3LjEgaW50cm9kdWNlZCBIU1RTIHN1cHBv
cnQgdmlhIGEgU291cFNlc3Npb25GZWF0dXJlLgorICAgICAgICBBZGQgc3VwcG9ydCB0byB0aGUg
c291cCBuZXR3b3JrIGJhY2tlbmQgYnkgYWRkaW5nIHRoZSBmZWF0dXJlIHRvCisgICAgICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbiBhbmQgaGFuZGxpbmcgSFNUUyBwcm90b2NvbCB1cGdyYWRlcywgYnkK
KyAgICAgICAgcHJvcGFnYXRpbmcgdGhlIHNjaGVtZSBjaGFuZ2UgZnVydGhlciB0byBjbGllbnRz
LiBUaGlzIHBhdGNoIGFkZHMKKyAgICAgICAgdGhlIEhTVFMgZmVhdHVyZSB1bmNvbmRpdGlvbmFs
bHksIGJ1dCBpdCBzdGlsbCBwb3NzaWJsZSB0byBhZGQKKyAgICAgICAgYSBib29sZWFuIHByb3Bl
cnR5IHRvIHRoZSB3ZWIgY29udGV4dCBjbGFzcyBpZiBkZXNpcmVkLgorCisgICAgICAgIEFkZGl0
aW9uYWxseSwgYWRkIEFQSSB0byB0aGUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIHNwZWNp
ZnkKKyAgICAgICAgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgSFNUUyBkYXRhYmFzZSBpcyBzYXZl
ZC4gSWYgdGhlIGRpcmVjdG9yeQorICAgICAgICBpcyBub3Qgc2V0IG9yIGlmIHRoZSBkYXRhIG1h
bmFnZXIgaXMgZXBoZW1lcmFsLCB1c2UgYQorICAgICAgICBub24tcGVyc2lzdGVudCwgbWVtb3J5
IG9ubHkgSFNUUyBlbmZvcmNlci4KKworICAgICAgICBJbXBsZW1lbnQgYXMgd2VsbCB0aGUgbWV0
aG9kcyBuZWVkZWQgdG8gY2xlYW4tdXAgYW5kIGRlbGV0ZSBIU1RTCisgICAgICAgIHBvbGljaWVz
IGZyb20gdGhlIHN0b3JhZ2UgYW5kIGV4cG9zZSB0aGUgZmVhdHVyZSBpbiBHVEsrCisgICAgICAg
IE1pbmlCcm93c2VyJ3MgYWJvdXQ6ZGF0YS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9t
YWluLmM6CisgICAgICAgIChnb3RXZWJzaXRlRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAg
KHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb24p
OgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKToKKyAgICAgICAgKHByZXBvcHVs
YXRlSHN0c0RhdGEpOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhSHN0cyk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RN
YWluLmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKyAgICAgICAgKiBndGsvamhidWlsZC5tb2R1
bGVzOiBCdW1wIGxpYnNvdXAgdG8gMi42Ny45MSBmb3IgdGhlIG5ldyBBUElzCisgICAgICAgICog
d3BlL2poYnVpbGQubW9kdWxlczogRGl0dG8KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFp
bi5jOgorICAgICAgICAoZ290V2Vic2l0ZURhdGFDYWxsYmFjayk6CisKIDIwMTktMDgtMjcgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
VzNDIHRlc3QgaW1wb3J0ZXIgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGV4cGVjdGVkIHJlZmVy
ZW5jZXMgd2l0aCBhbiBhYnNvbHV0ZSBwYXRoLgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggZjJmZTFh
NWRhZGU0YzRiZmYzYWUwZmRhODNkYjllMDc5ODRkN2E2Zi4uZWM2NDgwN2MwMjMxMTBiN2YxZmIz
YjE1Zjc1MTFkM2RlYjk2ZDdjOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00MTgsNiArNDE4LDcg
QEAgc3RhdGljIHZvaWQgZ290V2Vic2l0ZURhdGFDYWxsYmFjayhXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIgKm1hbmFnZXIsIEdBc3luY1Jlc3UKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0
LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJJbmRleGVkREIgRGF0YWJhc2VzIiwgV0VCS0lUX1dF
QlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CiAgICAgYWJvdXRE
YXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiUGx1Z2lucyBEYXRh
IiwgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSwgTlVMTCwgcGFnZUlEKTsKICAgICBh
Ym91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJPZmZsaW5l
IFdlYiBBcHBsaWNhdGlvbnMgQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQ
TElDQVRJT05fQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9h
cHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CisgICAgYWJvdXRE
YXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSFNUUyBDYWNoZSIs
IFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKIAogICAgIHJl
c3VsdCA9IGdfc3RyaW5nX2FwcGVuZChyZXN1bHQsICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGdz
aXplIHN0cmVhbUxlbmd0aCA9IHJlc3VsdC0+bGVuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAppbmRleCA0MDk1
Zjc2ZDEwNDZiM2I5OTU1NzhmOTk1MDhlNjc0ZjFjMmUwN2IxLi5kZWQ0YWE0ODcxOTRmY2JhNjJi
Yjc0NzI5OWQ3MDEwMjliNTIwMGFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcApAQCAtMTksNiArMTksNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJT
b3VwLmg+CiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgIldlYlZpZXdU
ZXN0LmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KQEAgLTM1LDYgKzM2LDcgQEAgc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhcioKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9lbXB0eSIpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlbXB0eUhUTUwgPSAiPGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iOwogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3Nh
Z2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXI7IE1heC1BZ2U9NjAi
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25z
ZV9oZWFkZXJzLCAiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIsICJtYXgtYWdlPTM2MDAiKTsK
ICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHks
IFNPVVBfTUVNT1JZX1NUQVRJQywgZW1wdHlIVE1MLCBzdHJsZW4oZW1wdHlIVE1MKSk7CiAgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwog
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
CkBAIC0xNjIsNyArMTY0LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3Vy
YXRpb24oV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcHN0cihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCksID09LCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlcikpOwogICAg
IGdfYXNzZXJ0X3RydWUoZ19maWxlX3Rlc3QoZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpLCBHX0ZJ
TEVfVEVTVF9JU19ESVIpKTsKIAotICAgIC8vIENsZWFyIGFsbCBwZXJzaXN0ZW50IGNhY2hlcywg
c2luY2UgdGhlIGRhdGEgZGlyIGlzIGNvbW1vbiB0byBhbGwgdGVzdCBjYXNlcy4KKyAgICBHVW5p
cXVlUHRyPGNoYXI+IGhzdHNDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRh
dGFEaXJlY3RvcnkoKSwgImhzdHMiLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGhz
dHNDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShnX2ZpbGVfdGVzdChoc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lT
X0RJUikpOworCisgICAgLy8gQ2xlYXIgYWxsIHBlcnNpc3RlbnQgY2FjaGVzLCBzaW5jZSB0aGUg
ZGF0YSBkaXIgaXMgY29tbW9uIHRvIGFsbCB0ZXN0IGNhc2VzLiBOb3RlOiBub3QgY2xlYW5pbmcg
dGhlIEhTVFMgY2FjaGUgaGVyZSBhcyBpdHMgZGF0YQorICAgIC8vIGlzIG5lZWRlZCBmb3IgdGhl
IEhTVFMgdGVzdHMsIHdoZXJlIGRhdGEgY2xlYW5pbmcgd2lsbCBiZSB0ZXN0ZWQuCiAgICAgc3Rh
dGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgcGVyc2lzdGVudENhY2hlcyA9IHN0YXRp
Y19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19D
QUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RPUkFHRQogICAgICAgICB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFf
T0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCk7CiAgICAgdGVzdC0+Y2xlYXIocGVyc2lzdGVudENhY2hlcywgMCk7CkBAIC0x
NzYsNiArMTgzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihX
ZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSh0ZXN0
LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVk
ZGJfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9t
YW5hZ2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9k
aXJlY3RvcnkoZGVmYXVsdE1hbmFnZXIpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9y
eSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9v
ZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShkZWZhdWx0TWFuYWdlcikpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2Fj
aGVfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAKICAgICAv
LyBVc2luZyBUZXN0OjpkYXRhRGlyZWN0b3J5KCkgd2UgZ2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb24gYnV0IGZvciBhIGRpZmZlcnJlbnQgcHJlZml4LgogICAgIEdSZWZQdHI8V2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyPiBiYXNlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX25ldygiYmFzZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJl
Y3RvcnkoKSwgImJhc2UtY2FjaGUtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBu
dWxscHRyKSk7CkBAIC0yMjIsNiArMjMwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRh
RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9y
eShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIu
Z2V0KCkpKTsKICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVs
bCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1h
bmFnZXIuZ2V0KCkpKTsKIAogICAgIC8vIENvbmZpZ3VyYXRpb24gaXMgaWdub3JlZCB3aGVuIGlz
LWVwaGVtZXJhbCBpcyB1c2VkLgogICAgIG1hbmFnZXIgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQlNJ
VEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFO
QUdFUiwgImJhc2UtZGF0YS1kaXJlY3RvcnkiLCBUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJpcy1l
cGhlbWVyYWwiLCBUUlVFLCBudWxscHRyKSkpOwpAQCAtNDgzLDYgKzQ5Miw0NyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2Vic2l0ZURhdGFBcHBjYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKKyNpZiBTT1VQX0NI
RUNLX1ZFUlNJT04oMiwgNjcsIDkxKQorc3RhdGljIHZvaWQgcHJlcG9wdWxhdGVIc3RzRGF0YSgp
Cit7CisgICAgLy8gSFNUUyBoZWFkZXJzIHdpbGwgYmUgaWdub3JlZCBpbiB0aGlzIHRlc3QgYmVj
YXVzZSB0aGUgc3BlYyBmb3JiaWRzIFNUUyBwb2xpY2llcyBmcm9tIGJlaW5nIGhvbm9yZWQgZm9y
IGhvc3RzIHdpdGgKKyAgICAvLyBhbiBJUCBhZGRyZXNzIGluc3RlYWQgb2YgYSBkb21haW4uIElu
IG9yZGVyIHRvIGJlIGFibGUgdG8gdGVzdCB0aGUgZGF0YSBtYW5hZ2VyIEFQSSB3aXRoIEhTVFMg
d2Vic2l0ZSBkYXRhLCB3ZQorICAgIC8vIHByZXBvcHVsYXRlIHRoZSBIU1RTIHN0b3JhZ2UgdXNp
bmcgdGhlIGxpYnNvdXAgQVBJIGRpcmVjdGx5LgorCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoc3Rz
Q2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJo
c3RzIiwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHN0c0RhdGFiYXNlKGdfYnVp
bGRfZmlsZW5hbWUoaHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpLCAiaHN0cy1zdG9yYWdlLnNxbGl0
ZSIsIG51bGxwdHIpKTsKKyAgICBnX21rZGlyX3dpdGhfcGFyZW50cyhoc3RzQ2FjaGVEaXJlY3Rv
cnkuZ2V0KCksIDA3MDApOworCisgICAgR1JlZlB0cjxTb3VwSFNUU0VuZm9yY2VyPiBlbmZvcmNl
ciA9IGFkb3B0R1JlZihzb3VwX2hzdHNfZW5mb3JjZXJfZGJfbmV3KGhzdHNEYXRhYmFzZS5nZXQo
KSkpOworICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IHBvbGljeShzb3VwX2hzdHNfcG9s
aWN5X25ldygid2Via2l0Z3RrLm9yZyIsIDM2MDAsIHRydWUpKTsKKyAgICBzb3VwX2hzdHNfZW5m
b3JjZXJfc2V0X3BvbGljeShlbmZvcmNlci5nZXQoKSwgcG9saWN5LmdldCgpKTsKKworICAgIHBv
bGljeS5yZXNldChzb3VwX2hzdHNfcG9saWN5X25ldygid2Via2l0Lm9yZyIsIDM2MDAsIHRydWUp
KTsKKyAgICBzb3VwX2hzdHNfZW5mb3JjZXJfc2V0X3BvbGljeShlbmZvcmNlci5nZXQoKSwgcG9s
aWN5LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhSHN0cyhXZWJzaXRl
RGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR0xpc3QqIGRhdGFMaXN0ID0g
dGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMik7CisgICAgV2ViS2l0V2Vi
c2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0
LT5kYXRhKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5
cGVzKGRhdGEpLCA9PSwgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFKTsKKyAgICAvLyBI
U1RTIGRhdGEgc2l6ZSBpcyB1bmtub3duLgorICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dl
YnNpdGVfZGF0YV9nZXRfc2l6ZShkYXRhLCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUp
LCA9PSwgMCk7CisKKyAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxs
cHRyIH07CisgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSwg
JnJlbW92ZUxpc3QpOworICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVf
REFUQV9IU1RTX0NBQ0hFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0
YUxpc3QpLCA9PSwgMSk7CisgICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRh
Kj4oZGF0YUxpc3QtPmRhdGEpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVf
ZGF0YV9nZXRfdHlwZXMoZGF0YSksID09LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUp
OworCisgICAgLy8gUmVtb3ZlIGFsbCBIU1RTIGRhdGEuCisgICAgdGVzdC0+Y2xlYXIoV0VCS0lU
X1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFLCAwKTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPmZl
dGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSkpOworfQorI2VuZGlmCisKIHN0YXRp
YyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9X
RUJTSVRFX0RBVEFfQ09PS0lFUyk7CkBAIC01NzEsNiArNjIxLDEwIEBAIHZvaWQgYmVmb3JlQWxs
KCkKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKICAgICBrU2VydmVyLT5y
dW4oc2VydmVyQ2FsbGJhY2spOwogCisjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCA5MSkK
KyAgICBwcmVwb3B1bGF0ZUhzdHNEYXRhKCk7CisjZW5kaWYKKwogICAgIFdlYnNpdGVEYXRhVGVz
dDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJjb25maWd1cmF0aW9uIiwgdGVzdFdlYnNpdGVE
YXRhQ29uZmlndXJhdGlvbik7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURh
dGEiLCAiZXBoZW1lcmFsIiwgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKTsKICAgICBXZWJzaXRl
RGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY2FjaGUiLCB0ZXN0V2Vic2l0ZURh
dGFDYWNoZSk7CkBAIC01NzgsNiArNjMyLDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYnNp
dGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJkYXRhYmFzZXMiLCB0ZXN0V2Vi
c2l0ZURhdGFEYXRhYmFzZXMpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJz
aXRlRGF0YSIsICJhcHBjYWNoZSIsIHRlc3RXZWJzaXRlRGF0YUFwcGNhY2hlKTsKICAgICBXZWJz
aXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY29va2llcyIsIHRlc3RXZWJz
aXRlRGF0YUNvb2tpZXMpOworI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTEpCisgICAg
V2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImhzdHMiLCB0ZXN0V2Vi
c2l0ZURhdGFIc3RzKTsKKyNlbmRpZgogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRX
ZWJzaXRlRGF0YSIsICJkZXZpY2VpZGhhc2hzYWx0IiwgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRI
YXNoU2FsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5oCmluZGV4IDk1NTUyMGM4NWVmMTk2ZDNiMjM4MTY4ZDRkYWZmZjIxZTc3MzNkNmQu
LjA3ODZhYTEwZGY3OGE3N2VhNGRlMWQ0YzExOWYyZjcwMmM1YjY1NzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAtMTIxLDEwICsxMjEs
MTEgQEAgcHVibGljOgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImRpc2stY2FjaGUiLCBudWxscHRy
KSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwog
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1l
KGRhdGFEaXJlY3RvcnkoKSwgIndlYnNxbCIsIG51bGxwdHIpKTsKKyAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBoc3RzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZGF0YURpcmVjdG9yeSgpLCAi
aHN0cyIsIG51bGxwdHIpKTsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXI+IHdlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfbmV3KAogICAgICAgICAgICAgImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5LmdldCgpLCAiaW5kZXhlZGRiLWRpcmVjdG9yeSIsIGluZGV4ZWREQkRp
cmVjdG9yeS5nZXQoKSwKICAgICAgICAgICAgICJkaXNrLWNhY2hlLWRpcmVjdG9yeSIsIGRpc2tD
YWNoZURpcmVjdG9yeS5nZXQoKSwgIm9mZmxpbmUtYXBwbGljYXRpb24tY2FjaGUtZGlyZWN0b3J5
IiwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSwKLSAgICAgICAgICAgICJ3ZWJzcWwt
ZGlyZWN0b3J5Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCBudWxscHRyKSk7CisgICAgICAgICAg
ICAid2Vic3FsLWRpcmVjdG9yeSIsIHdlYlNRTERpcmVjdG9yeS5nZXQoKSwgImhzdHMtY2FjaGUt
ZGlyZWN0b3J5IiwgaHN0c0RpcmVjdG9yeS5nZXQoKSwgbnVsbHB0cikpOwogCiAgICAgICAgIG1f
d2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0
ZV9kYXRhX21hbmFnZXIod2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5zaW9u
cyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayksIHRoaXMpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxk
Lm1vZHVsZXMKaW5kZXggMDI0YmFmYjUwNzY4Mzc4NzdhNzRmZmQ4YmM5MWEwZDE4YTIwODcwZS4u
YmRhM2U5MTBiYzIwZGM5OWI3MDNiZTJlNjE2NmUwMzI1ZDUzMzgxYyAxMDA2NDQKLS0tIGEvVG9v
bHMvZ3RrL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBA
IC0yMzgsOSArMjM4LDkgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+
CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYnBzbCIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAg
IDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvbGlic291cC8yLjY3L2xpYnNvdXAt
JHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjIuNjcuOTAiCisgICAgPGJyYW5jaCBtb2R1bGU9
Ii9wdWIvR05PTUUvc291cmNlcy9saWJzb3VwLzIuNjcvbGlic291cC0ke3ZlcnNpb259LnRhci54
eiIgdmVyc2lvbj0iMi42Ny45MSIKICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0g
ICAgICAgICAgICBoYXNoPSJzaGEyNTY6MzAzNjg2MDAyYmQ3ZDdiZjkzMjA0ZWViZTBkNWVjOWY1
ZDU3ZDA3MWUzNDExZTIzMDRkNmY4YmNmYTk3ZWY3OSI+CisgICAgICAgICAgICBoYXNoPSJzaGEy
NTY6MzkwYjViMjgyNjNkM2JkZjk4NjZmYTY5NDM0NmNhYTVlNGJjYjk4NmUwMTRlMzM4M2U5YjYx
MzBiNzA2ZjNkYSI+CiAgICAgPC9icmFuY2g+CiAgIDwvbWVzb24+CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL3dwZS9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy93cGUvamhidWlsZC5tb2R1bGVzCmluZGV4
IDUzYzYyYmQxNGUwNzM1NmI3NzVmNmM2MGFjNWM5YmUxOGVkZTJlZTIuLjY1YWJkMzYwYzc4MjEx
ODRkNWM0ZjZiNTNkZjhhNTYxY2RjZTJkYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9qaGJ1aWxk
Lm1vZHVsZXMKKysrIGIvVG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcwpAQCAtMTAwLDkgKzEwMCw5
IEBACiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJsaWJwc2wiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVs
ZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Ny9saWJzb3VwLSR7dmVyc2lvbn0udGFy
Lnh6IiB2ZXJzaW9uPSIyLjY3LjkwIgorICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3Nv
dXJjZXMvbGlic291cC8yLjY3L2xpYnNvdXAtJHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjIu
NjcuOTEiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFz
aD0ic2hhMjU2OjMwMzY4NjAwMmJkN2Q3YmY5MzIwNGVlYmUwZDVlYzlmNWQ1N2QwNzFlMzQxMWUy
MzA0ZDZmOGJjZmE5N2VmNzkiPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjM5MGI1YjI4MjYz
ZDNiZGY5ODY2ZmE2OTQzNDZjYWE1ZTRiY2I5ODZlMDE0ZTMzODNlOWI2MTMwYjcwNmYzZGEiPgog
ICAgIDwvYnJhbmNoPgogICA8L21lc29uPgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>