<?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>222738</bug_id>
          
          <creation_ts>2021-03-04 07:42:39 -0800</creation_ts>
          <short_desc>[GTK][WPE] Allow the user to configure the MemoryPressureHandler inside the web process</short_desc>
          <delta_ts>2021-07-21 13:11:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735822</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-03-04 07:42:39 -0800</bug_when>
    <thetext>Currently the user doesn&apos;t have much control about how the MemoryPressureHandler works. It just polls every 30 seconds whether the process memory usage is over a percentage (33% and 50%) of the total RAM, and then calls releaseMemory() with the appropriate priority. It also checks whether the process memory is over a kill threshold (also hardcoded) and potentially kills the process if it&apos;s not able to release memory.

The problem with the current approach is that it doesn&apos;t perfectly fit many embedded cases:
  * The user may want to keep the memory usage under a value different than the total RAM, and define different percentages (there might be situations where there is a small amount of memory available for the process, and staying over 75% is not critical, for example).
  * Allowing the user to define the time between polling the memory usage would be useful as well, as 30 seconds may be too much time for some constrained environments.
  * The user may also want to define the threshold to kill the process. And maybe decide if they actually want this feature at all: there are situations where memory usage has to be under control, but it&apos;s not a problem if the amount used is a bit over the maximum.

I started to work on a patch to be able to set a memory limit to the process (to replace the harcoded RAM size dependent value), when I realized about the need of the other parameters. IMO we should have one API method (or several) to set (and get):
  * unsigned processMemoryLimit (in MB): replaces the RAM size in order to calculate the memory usage intervals
  * unsigned conservativePrecentage: percentage of processMemoryLimit where the conservative policy kicks in (default 33%)
  * unsigned strictPercentage: percentage of processMemoryLimit where the strict policy kicks in (default 50%)
  * unsigned pollInterval: amount of seconds between memory usage polls (default 30 seconds)
  * bool killProcessOnMemoryExceeded: whether to kill a process if the memory usage exceeds the kill threshold
  * unsigned killPercentage: percentage of processMemoryLimit where the process will be killed (default 110% for example)

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735823</commentid>
    <comment_count>1</comment_count>
      <attachid>422226</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-03-04 07:44:10 -0800</bug_when>
    <thetext>Created attachment 422226
WiP patch to set the memory limit to the WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737029</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-03-08 04:35:47 -0800</bug_when>
    <thetext>On Linux we rely on the MemoryPressureMonitor to notify the MemoryPressureHandler when it should trigger the release memory event.

The MemoryPressureMonitor is a thread that runs on the UIProcess (check Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp) and polls the system memory information each 1-5 seconds. To get the system memory information it uses memory cgroups if those are available, otherwise it defaults to using /proc files.

When this UIProcess thread detects that the system memory is near to run low, it sends a signal (via WebKit IPC process) to all the sub-process (WebProcess, NetworkProcess, etc) related to that UIProcess so those can release the not needed memory.

That way we only have one thread doing the polling on the UIProcess and this thread notifies all the relevant sub-process (all the tabs of the browser) when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737033</commentid>
    <comment_count>3</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-03-08 05:00:02 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; On Linux we rely on the MemoryPressureMonitor to notify the
&gt; MemoryPressureHandler when it should trigger the release memory event.
&gt; 
&gt; The MemoryPressureMonitor is a thread that runs on the UIProcess (check
&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp) and polls the
&gt; system memory information each 1-5 seconds. To get the system memory
&gt; information it uses memory cgroups if those are available, otherwise it
&gt; defaults to using /proc files.
&gt; 
&gt; When this UIProcess thread detects that the system memory is near to run
&gt; low, it sends a signal (via WebKit IPC process) to all the sub-process
&gt; (WebProcess, NetworkProcess, etc) related to that UIProcess so those can
&gt; release the not needed memory.
&gt; 
&gt; That way we only have one thread doing the polling on the UIProcess and this
&gt; thread notifies all the relevant sub-process (all the tabs of the browser)
&gt; when necessary.

Yes, you&apos;re right about the MemoryPressureMonitor, but it as a different goal than the MemoryPressureHandler: the former checks whether there&apos;s available memory in the system, while the latter checks the amount of memory used by the process against a limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776671</commentid>
    <comment_count>4</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-13 10:44:57 -0700</bug_when>
    <thetext>As the patch to add this feature to both the web process and the network process was getting quite big already, I decided to split the feature into two bugs, one for the web process and another one for the network process. I&apos;ll use this one for the web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776678</commentid>
    <comment_count>5</comment_count>
      <attachid>433421</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-13 11:03:37 -0700</bug_when>
    <thetext>Created attachment 433421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776679</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-13 11:04:30 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776699</commentid>
    <comment_count>7</comment_count>
      <attachid>433434</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-13 11:40:24 -0700</bug_when>
    <thetext>Created attachment 433434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777833</commentid>
    <comment_count>8</comment_count>
      <attachid>433434</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-19 01:50:49 -0700</bug_when>
    <thetext>Comment on attachment 433434
Patch

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

&gt; Source/WTF/wtf/MemoryPressureHandler.cpp:48
&gt; +static const double s_killThresholdFraction = 0;

So, this means it&apos;s disabled by default? I guess we can simply not pass it to the constructor, since it&apos;s already 0 initialized, no?

&gt; Source/WTF/wtf/MemoryPressureHandler.cpp:49
&gt; +static const double s_pollInterval = 30;

This could be Seconds

&gt; Source/WTF/wtf/MemoryPressureHandler.h:150
&gt; +    struct Settings {

This is the MemoryPressuraHandler configuration, I would use Configuration instead of Settings. For the GLib public API it&apos;s ok to use settings, though, since it&apos;s more commonly used than configuration.

&gt; Source/WTF/wtf/MemoryPressureHandler.h:160
&gt; +        Settings() = default;
&gt; +        Settings(size_t base, double conservative, double strict, double kill, double interval)
&gt; +            : baseThreshold(base)
&gt; +            , conservativeThresholdFraction(conservative)
&gt; +            , strictThresholdFraction(strict)
&gt; +            , killThresholdFraction(kill)
&gt; +            , pollInterval(interval)
&gt; +        {
&gt; +        }

We don&apos;t probably need constructors if we use { } to initialize the struct.

&gt; Source/WTF/wtf/MemoryPressureHandler.h:176
&gt; +            size_t base;
&gt; +            if (!decoder.decode(base))
&gt; +                return false;

I think it&apos;s posible to use the modern way, using std::optional and &gt;&gt;

&gt; Source/WTF/wtf/MemoryPressureHandler.h:206
&gt; +        size_t baseThreshold { 0 };
&gt; +        double conservativeThresholdFraction { 0 };
&gt; +        double strictThresholdFraction { 0 };
&gt; +        double killThresholdFraction { 0 };
&gt; +        double pollInterval { 0 };

Should we use optional? at least for killThresholdFraction? pollInterval could be Seconds.

&gt; Source/WTF/wtf/MemoryPressureHandler.h:208
&gt; +    void setSettings(const Settings&amp; settings) { m_settings = settings; }

I think this could be Settings&amp;&amp; since we can move the process parameter.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:68
&gt; + * The memory pressure system implemented inside the different process will try to keep the memory usage
&gt; + * under the @memory_limit parameter. In order to do that, it will check the user memory every @poll_interval
&gt; + * seconds and decide whether it should try to release memory. The thresholds passed will define how urgent
&gt; + * is to release that memory.
&gt; + *
&gt; + * Take into account that badly defined parameters can greatly reduce the performance of the engine. For
&gt; + * example, setting @memory_limit too low with a fast @poll_interval can cause the process to constantly
&gt; + * be trying to release memory.

I would move this documentation to the section.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:75
&gt; +WebKitMemoryPressureSettings* webkit_memory_pressure_settings_new(const guint memory_limit, const gdouble conservative_threshold, const gdouble strict_threshold, const gdouble kill_threshold, const gdouble poll_interval)

The problem of this approach is that if we need to add a new setting we can&apos;t use this constructor. I think it would be better to a constructor with no parameters, and individual setters for each setting, documenting the default value so that we know what setter we need to modify after creating the settings boxed type.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:84
&gt; +    if (!memory_limit || !conservative_threshold || !strict_threshold || !poll_interval)
&gt; +        return nullptr;
&gt; +
&gt; +    if (conservative_threshold &gt;= strict_threshold)
&gt; +        return nullptr;
&gt; +
&gt; +    if (kill_threshold &amp;&amp; (strict_threshold &gt;= kill_threshold))
&gt; +        return nullptr;

If these are programmer errors, they should be documented and g_return_val_if_fail should be used instead.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:132
&gt; +const MemoryPressureHandler::Settings&amp; webkitMemoryPressureSettingsToMemoryPressureHandlerSettings(WebKitMemoryPressureSettings *settings)

There isn&apos;t any transformation here, it&apos;s just a getter, so better use webkitMemoryPressureSettingsGetMemoryPressureHandlerSettings()

Also WebKitMemoryPressureSettings *settings -&gt; WebKitMemoryPressureSettings* settings

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1818
&gt; + * Set the memory pressure settings to be used by the processes of type
&gt; + * @target_process.

This does nothing for existing web processes, and I think it&apos;s a good idea that we don&apos;t allow to change the settings. So, I think the memory pressure settings should be a construct-only property of the WebKitWebContext.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1821
&gt; + *

Extra line here.

&gt; Source/WebKit/UIProcess/WebProcessPool.h:772
&gt; +    std::optional&lt;MemoryPressureHandler::Settings&gt; m_webProcessMemoryPressureHandlerSettings;

I think this could be stored in ProcessPoolConfiguration

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:800
&gt; +    // An empty view uses around 7MB of memory. We&apos;re setting a maximum of 20MB here, polling every 0.5 seconds,
&gt; +    // and the kill fraction is 1, so the web process will be killed when it exceeds 20MB.
&gt; +    // The test html will allocate a canvas of 3000x3000, which requires around 36MB of memory, so once it gets
&gt; +    // created, the MemoryPressureHandler will detect that the memory usage is too high and kill the web process.
&gt; +    // This triggers the web-process-terminated signal in the view with WEBKIT_WEB_PROCESS_EXCEEDED_MEMORY_LIMIT
&gt; +    // as the termination reason.

Good idea!

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:819
&gt; +    WebKitMemoryPressureSettings* memoryPressureSettings = webkit_memory_pressure_settings_new(20, 0.3, 0.5, 1, 0.5);

Here is another reason to use setters for each setting, it&apos;s difficult to read, and easy to pass the wrong parameter order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778261</commentid>
    <comment_count>9</comment_count>
      <attachid>433899</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-20 13:36:02 -0700</bug_when>
    <thetext>Created attachment 433899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778380</commentid>
    <comment_count>10</comment_count>
      <attachid>433899</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-21 01:39:21 -0700</bug_when>
    <thetext>Comment on attachment 433899
Patch

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

&gt; Source/WTF/wtf/MemoryPressureHandler.cpp:48
&gt; +static const std::optional&lt;double&gt; s_killThresholdFraction = std::nullopt;

I don&apos;t think the nullopt initialization is needed.

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:159
&gt; +    const std::optional&lt;MemoryPressureHandler::Configuration&gt;&amp; memoryPressureHandlerConfiguration() { return m_memoryPressureHandlerConfiguration; }

This should be const method

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:36
&gt; + * under the defined memory limit. In order to do that, it will check the used memory every with a user defined

it will check the used memory every with a user defined &lt;- is there anything missing there?

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:61
&gt; +static WebKitMemoryPressureSettings* webKitMemoryPressureSettingsRef(WebKitMemoryPressureSettings* settings)
&gt; +{
&gt; +    ASSERT(settings);
&gt; +    g_atomic_int_inc(&amp;settings-&gt;referenceCount);
&gt; +    return settings;
&gt; +}
&gt; +
&gt; +void webKitMemoryPressureSettingsUnref(WebKitMemoryPressureSettings* settings)

If the boxed type is refcounted these should be public

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:111
&gt; + * Returns the value of the memory limit inside @settings.

You should document if the value returned is in bytes or MB or what

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:128
&gt; + *   working. It must be a value bigger than 0 and smaller than 1, and it must
&gt; + *   be smaller than the strict threshold defined in @settings. The default value
&gt; + *   is 0.33.

I would move the extra comments to the body of the function doc instead of the parameter doc.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:355
&gt; +        g_value_set_static_boxed(value, context-&gt;priv-&gt;memoryPressureSettings.get());

Since there&apos;s no public getter maybe we can just make this property writable.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:389
&gt; +        gpointer settings = g_value_get_boxed(value);
&gt; +        context-&gt;priv-&gt;memoryPressureSettings = settings ? adoptGRef(static_cast&lt;WebKitMemoryPressureSettings*&gt;(settings)) : nullptr;

Since the boxed type is refcounted I think it&apos;s better to take a ref. I still think copying it should be cheap enough too, and this is only set once, but I&apos;m not opposed to make it recounted either. The problem of taking the ownership is that if you want to set the same settings to multiple contexts, you have to create a new struct every time or take a ref before. So, I think it&apos;s better to do the opposite, if you don&apos;t need the struct anymore after settings it, just unref it.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:816
&gt; +

We could test the getters too, checking they returns the expected values. We could also create an empty settings to check the default values are correctly set too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778396</commentid>
    <comment_count>11</comment_count>
      <attachid>433926</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-21 05:27:10 -0700</bug_when>
    <thetext>Created attachment 433926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778402</commentid>
    <comment_count>12</comment_count>
      <attachid>433927</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-21 06:16:39 -0700</bug_when>
    <thetext>Created attachment 433927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778403</commentid>
    <comment_count>13</comment_count>
      <attachid>433926</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-21 06:29:43 -0700</bug_when>
    <thetext>Comment on attachment 433926
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:100
&gt; +void webkit_memory_pressure_settings_free(WebKitMemoryPressureSettings* settings)

Do not forget to add WebKitMemoryPressureSettings to WebKitAutocleanups.h in gtk and wpe files.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:130
&gt; + * Returns the value in MB of the memory limit inside @settings.

We need a Returns: tag so we either add : here or add a simpler returns below like Returns: the memory limit

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:168
&gt; + * Returns the value of the the conservative threshold inside @settings.

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:208
&gt; + * Returns the value of the the strict threshold inside @settings.

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:247
&gt; + * Returns the value of the the kill threshold inside @settings.

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitMemoryPressureSettings.cpp:282
&gt; + * Returns the value in seconds of the the poll interval inside @settings.

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:415
&gt; +        webkit_memory_pressure_settings_free(priv-&gt;memoryPressureSettings);

And the pointer needs to be set to nullptr. You can g_clear_pointer(&amp;priv-&gt;memoryPressureSettings, webkit_memory_pressure_settings_free); even though constructed can&apos;t be called again and this is only checked here...

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:564
&gt; +     * The #WebKitMemoryPressureSettings associated with this context.

I would say here the #WebKitMemoryPressureSettings to be applied to the web processes created by this context, or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778407</commentid>
    <comment_count>14</comment_count>
      <attachid>433929</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2021-07-21 06:51:30 -0700</bug_when>
    <thetext>Created attachment 433929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778520</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-21 13:10:57 -0700</bug_when>
    <thetext>Committed r280155 (239852@main): &lt;https://commits.webkit.org/239852@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433929.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422226</attachid>
            <date>2021-03-04 07:44:10 -0800</date>
            <delta_ts>2021-07-13 11:03:29 -0700</delta_ts>
            <desc>WiP patch to set the memory limit to the WebProcess</desc>
            <filename>memorypressure-wip.patch</filename>
            <type>text/plain</type>
            <size>14819</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDM0MTYxNmM2OWRj
Ni4uYTBlMjY3YzAwNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKQEAgLTEyNiw5ICsxMjYsMTIgQEAgT3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLXN0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5
IHBvbGljeSkKK3N0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9s
aWN5IHBvbGljeSwgc2l6ZV90IHByb2Nlc3NNZW1vcnlMaW1pdCkKIHsKLSAgICBjb25zdCBzaXpl
X3QgYmFzZVRocmVzaG9sZEZvclBvbGljeSA9IHN0ZDo6bWluKDMgKiBHQiwgcmFtU2l6ZSgpKTsK
KyAgICBzaXplX3QgYmFzZVRocmVzaG9sZEZvclBvbGljeSA9IHN0ZDo6bWluKDMgKiBHQiwgcmFt
U2l6ZSgpKTsKKworICAgIGlmIChwcm9jZXNzTWVtb3J5TGltaXQpCisgICAgICAgIGJhc2VUaHJl
c2hvbGRGb3JQb2xpY3kgPSBzdGQ6Om1pbihiYXNlVGhyZXNob2xkRm9yUG9saWN5LCBwcm9jZXNz
TWVtb3J5TGltaXQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBkb3Vi
bGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7CkBAIC0xNTEsMTggKzE1NCwx
OCBAQCBzdGF0aWMgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBw
b2xpY3kpCiAgICAgfQogfQogCi1zdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9v
dHByaW50KHNpemVfdCBmb290cHJpbnQpCitzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5
Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQsIHNpemVfdCBwcm9jZXNzTWVtb3J5TGltaXQp
CiB7Ci0gICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQ
b2xpY3k6OlN0cmljdCkpCisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3ko
TWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCwgcHJvY2Vzc01lbW9yeUxpbWl0KSkKICAgICAgICAg
cmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q7Ci0gICAgaWYgKGZvb3RwcmludCA+PSB0
aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZSkpCisgICAg
aWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OkNv
bnNlcnZhdGl2ZSwgcHJvY2Vzc01lbW9yeUxpbWl0KSkKICAgICAgICAgcmV0dXJuIE1lbW9yeVVz
YWdlUG9saWN5OjpDb25zZXJ2YXRpdmU7CiAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpV
bnJlc3RyaWN0ZWQ7CiB9CiAKIE1lbW9yeVVzYWdlUG9saWN5IE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6Y3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCkKIHsKLSAgICByZXR1cm4gcG9saWN5Rm9yRm9v
dHByaW50KG1lbW9yeUZvb3RwcmludCgpKTsKKyAgICByZXR1cm4gcG9saWN5Rm9yRm9vdHByaW50
KG1lbW9yeUZvb3RwcmludCgpLCBtX3Byb2Nlc3NNZW1vcnlMaW1pdCk7CiB9CiAKIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaHJpbmtPckRpZShzaXplX3Qga2lsbFRocmVzaG9sZCkKQEAg
LTE4Niw3ICsxODksNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2hyaW5rT3JEaWUo
c2l6ZV90IGtpbGxUaHJlc2hvbGQpCiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRN
ZW1vcnlVc2FnZVBvbGljeUJhc2VkT25Gb290cHJpbnQoc2l6ZV90IGZvb3RwcmludCkKIHsKLSAg
ICBhdXRvIG5ld1BvbGljeSA9IHBvbGljeUZvckZvb3RwcmludChmb290cHJpbnQpOworICAgIGF1
dG8gbmV3UG9saWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludCwgbV9wcm9jZXNzTWVt
b3J5TGltaXQpOwogICAgIGlmIChuZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4
IGYyMWVkODkyMjljNi4uOTIzN2ExYTg1MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgc2V0
VW5kZXJNZW1vcnlQcmVzc3VyZShib29sKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgTWVtb3J5VXNhZ2VQb2xpY3kgY3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE1lbW9yeVVzYWdlUG9saWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGlj
eSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RGlzcGF0Y2hRdWV1ZShkaXNwYXRjaF9xdWV1ZV90KTsKQEAgLTE1NSw2ICsxNTUsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZExvZ01lbW9yeU1lbW9yeVByZXNzdXJlRXZlbnRz
KGJvb2wgc2hvdWxkTG9nKSB7IG1fc2hvdWxkTG9nTWVtb3J5TWVtb3J5UHJlc3N1cmVFdmVudHMg
PSBzaG91bGRMb2c7IH0KIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFByb2Nlc3NN
ZW1vcnlMaW1pdChzaXplX3QgbGltaXQpIHsgbV9wcm9jZXNzTWVtb3J5TGltaXQgPSBsaW1pdDsg
fQorCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPHNpemVfdD4gdGhyZXNob2xkRm9yTWVtb3J5S2ls
bCgpOwogICAgIHZvaWQgbWVtb3J5UHJlc3N1cmVTdGF0dXNDaGFuZ2VkKCk7CkBAIC0yMDgsNiAr
MjEwLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fZGlzcGF0Y2hRdWV1ZSB7IG51bGxwdHIgfTsKICNlbmRpZgorCisgICAgc2l6ZV90IG1f
cHJvY2Vzc01lbW9yeUxpbWl0IHsgMCB9OwogfTsKIAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9n
TWVtb3J5UHJlc3N1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDM0MGJiZDBkNzM5OS4uYjU5ZmM3OTBjNDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtNDg1LDcgKzQ4NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVD
b21wb3NpdGluZ1BvbGljeSgpCiAgICAgICAgIHJldHVybiBtX2NvbXBvc2l0aW5nUG9saWN5ICE9
IGN1cnJlbnRQb2xpY3k7CiAgICAgfQogICAgIAotICAgIGF1dG8gbWVtb3J5UG9saWN5ID0gTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKKyAgICBhdXRv
IG1lbW9yeVBvbGljeSA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuY3VycmVu
dE1lbW9yeVVzYWdlUG9saWN5KCk7CiAgICAgbV9jb21wb3NpdGluZ1BvbGljeSA9IG1lbW9yeVBv
bGljeSA9PSBXVEY6Ok1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQgPyBDb21wb3NpdGlu
Z1BvbGljeTo6Tm9ybWFsIDogQ29tcG9zaXRpbmdQb2xpY3k6OkNvbnNlcnZhdGl2ZTsKICAgICBy
ZXR1cm4gbV9jb21wb3NpdGluZ1BvbGljeSAhPSBjdXJyZW50UG9saWN5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAppbmRleCBkYmJlMWJmMDkwMzUuLjEyYzI1
YWU1NGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKQEAg
LTI1OCw2ICsyNTgsMTMgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlTWVtb3J5
UHJlc3N1cmVFdmVudChib29sIGlzQ3JpdGljYWwpCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpzZXRNZW1vcnlM
aW1pdCh1bnNpZ25lZCBsaW1pdCkKK3sKKyAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmds
ZXRvbigpLnNldFByb2Nlc3NNZW1vcnlMaW1pdChsaW1pdCAqIE1CKTsKK30KKyNlbmRpZgorCiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCA3ZWVlNDk0NWQ4ZTAuLjNmMzZm
NjllNGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtMTIy
LDYgKzEyMiwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWly
PElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3JlYXRlSVBD
Q29ubmVjdGlvblBhaXIoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQor
ICAgIHZvaWQgc2V0TWVtb3J5TGltaXQodW5zaWduZWQpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZE92ZXJyaWRlUXVhcmFudGluZSgpIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNmNhNmJmZjhjZThmLi5iNjUyYTUyZGNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjcsNCArMjcs
OCBAQCBtZXNzYWdlcyAtPiBBdXhpbGlhcnlQcm9jZXNzIE5vdFJlZkNvdW50ZWQgewogI2lmIE9T
KExJTlVYKQogICAgIHZvaWQgRGlkUmVjZWl2ZU1lbW9yeVByZXNzdXJlRXZlbnQoYm9vbCBpc0Ny
aXRpY2FsKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAg
ICBTZXRNZW1vcnlMaW1pdCh1bnNpZ25lZCBsaW1pdCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCBkYmVlODQzMjk4ZjYuLjk4NDgzMTdmNGIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE5OSw2ICsxOTks
MTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIGVuY29kZXIgPDwg
bWF4aW11bUlPU3VyZmFjZVNpemU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorICAgIGVuY29kZXIgPDwgbWVtb3J5TGltaXQ7CisjZW5kaWYKIH0KIAogYm9v
bCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNTQxLDYg
KzU0NSwxMSBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZW1vcnlMaW1pdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAzZDU3M2Uz
NjM1MzAuLjZiMzBhODAxZjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjQxLDYgKzI0MSwxMSBAQCBzdHJ1Y3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAg
V2ViQ29yZTo6SW50U2l6ZSBtYXhpbXVtSU9TdXJmYWNlU2l6ZTsKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgdW5zaWduZWQgbWVtb3J5TGltaXQgeyAw
IH07CisjZW5kaWYKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDJiYmUxYTcyNzI4Yy4uMWFhY2EyM2FiZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTgxMiw2ICsxODEy
LDM5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJh
bmNlX2Zvcl9zY3JvbGxiYXJzKFdlYktpdFdlYkNvCiB9CiAjZW5kaWYKIAorLyoqCisgKiB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3dlYl9wcm9jZXNzX21lbW9yeV9saW1pdDoKKyAqIEBjb250ZXh0
OiBhICNXZWJLaXRXZWJDb250ZXh0CisgKiBAbGltaXQ6IHZhbHVlIHRvIHNldCBpbiBNQgorICoK
KyAqIFNldCB0aGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHRoYXQgZWFjaCBvZiB0aGUgd2Vi
IHByb2Nlc3NlcyBjYW4gdXNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF93ZWJfcHJvY2Vzc19tZW1vcnlfbGltaXQoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgZ3VpbnQgbGltaXQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworCisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bv
b2wtPnNldFdlYlByb2Nlc3NNZW1vcnlMaW1pdChsaW1pdCk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9jb250ZXh0X2dldF93ZWJfcHJvY2Vzc19tZW1vcnlfbGltaXQ6CisgKiBAY29udGV4dDog
YSAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIEdldHMgdGhlIG1heGltdW0gYW1vdW50IG9mIG1l
bW9yeSB1c2FibGUgYnkgZWFjaCBvZiB0aGUgd2ViIHByb2Nlc3Nlcy4KKyAqCisgKiBSZXR1cm5z
OiB0aGUgbGltaXQgdG8gdGhlIG1lbW9yeSB1c2FnZSBpbiBNQiwgb3IgMCBpZiB0aGVyZSBpc24n
dCBhIGxpbWl0LgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2d1aW50IHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfd2ViX3Byb2Nlc3NfbWVtb3J5X2xpbWl0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNv
bnRleHQpLCAwKTsKKworICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+d2Vi
UHJvY2Vzc01lbW9yeUxpbWl0KCk7Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dEluaXRpYWxp
emVOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIGdfc2lnbmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpFX05PVElGSUNBVElP
Tl9QRVJNSVNTSU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA1YTRhZGY4YjhlYjMuLmRkZDBjM2FhM2NkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmgKQEAgLTMwMCw2ICszMDAsMTMgQEAgd2Via2l0X3dlYl9jb250ZXh0X3NldF91c2Vfc3lz
dGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQKIFdFQktJVF9B
UEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNl
X2Zvcl9zY3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX3Byb2Nlc3NfbWVtb3J5X2xp
bWl0ICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbWl0KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dl
Yl9jb250ZXh0X2dldF93ZWJfcHJvY2Vzc19tZW1vcnlfbGltaXQgICAgIChXZWJLaXRXZWJDb250
ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggZjFjZmE0NGM3Mjc4Li4yYmM5ZjgxMDZi
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtNzEsNiArNzEsOCBAQCB3
ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVybWlzc2lvbnMKIHdl
YmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lvbnMKIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzCiB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycwor
d2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJfcHJvY2Vzc19tZW1vcnlfbGltaXQKK3dlYmtpdF93
ZWJfY29udGV4dF9zZXRfd2ViX3Byb2Nlc3NfbWVtb3J5X2xpbWl0CiAKIDxTVUJTRUNUSU9OIFVS
SSBTY2hlbWU+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNGNlOTNh
NGUwNzkwLi5jYWM0YzQwZGNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0yODksNiArMjg5LDEzIEBAIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9u
cyAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlck1lc3Nh
Z2UgICAgICAgICAgICAgKm1lc3NhZ2UpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
Y29udGV4dF9zZXRfd2ViX3Byb2Nlc3NfbWVtb3J5X2xpbWl0ICAgICAoV2ViS2l0V2ViQ29udGV4
dCAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJfcHJvY2Vz
c19tZW1vcnlfbGltaXQgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4
dCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDgyNWQ1
MTAwYjZhNi4uZDExN2VjY2NjNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC00Niw2ICs0Niw4
IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250
ZXh0X3NldF9wcm9jZXNzX21vZGVsCiB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3Rp
ZmljYXRpb25fcGVybWlzc2lvbnMKIHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9f
YWxsX2V4dGVuc2lvbnMKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfd2ViX3Byb2Nlc3NfbWVtb3J5
X2xpbWl0Cit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9wcm9jZXNzX21lbW9yeV9saW1pdAog
CiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggY2ZlNmQ4
ZDQ4NjViLi4yM2NjZjZjMmI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTIwNzgsNCArMjA3OCwxNSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjpo
YXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB9CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc01lbW9yeUxpbWl0KHVuc2lnbmVkIGxpbWl0KQoreworICAg
IGlmIChtX3dlYlByb2Nlc3NNZW1vcnlMaW1pdCA9PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV93ZWJQcm9jZXNzTWVtb3J5TGltaXQgPSBsaW1pdDsKKyAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OkF1eGlsaWFyeVByb2Nlc3M6OlNldE1lbW9yeUxpbWl0KG1fd2ViUHJv
Y2Vzc01lbW9yeUxpbWl0KSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA5MzYzN2FiZmY3N2Yu
LjNmODZhY2JmN2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC00NzksNiArNDc5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VyTWVzc2FnZUhh
bmRsZXIoRnVuY3Rpb248dm9pZChVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFVzZXJNZXNzYWdlJiYpPiYmKT4mJiBoYW5kbGVyKSB7IG1fdXNlck1lc3NhZ2VIYW5kbGVyID0g
V1RGTW92ZShoYW5kbGVyKTsgfQogICAgIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+JiB1c2VyTWVzc2Fn
ZUhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZXJNZXNzYWdlSGFuZGxlcjsgfQorCisgICAg
dm9pZCBzZXRXZWJQcm9jZXNzTWVtb3J5TGltaXQodW5zaWduZWQpOworICAgIHVuc2lnbmVkIHdl
YlByb2Nlc3NNZW1vcnlMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc01lbW9yeUxp
bWl0OyB9CiAjZW5kaWYKIAogICAgIFdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhVG9rZW4gd2Vi
UHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFUb2tlbigpIGNvbnN0OwpAQCAtNzU4LDYgKzc2MSw4IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDxDU3RyaW5nLCBTYW5kYm94UGVybWlzc2lvbj4gbV9leHRy
YVNhbmRib3hQYXRoczsKIAogICAgIEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+IG1fdXNlck1lc3NhZ2VIYW5kbGVy
OworCisgICAgdW5zaWduZWQgbV93ZWJQcm9jZXNzTWVtb3J5TGltaXQgeyAwIH07CiAjZW5kaWYK
IAogICAgIFdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291bnRlciBtX3dlYlByb2Nlc3NXaXRo
QXVkaWJsZU1lZGlhQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCA4NGFhNjUzMjc4ZjguLmM3ZDc3NjRkNDU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9v
bEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bv
b2xHTGliLmNwcApAQCAtMTA3LDYgKzEwNywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcwog
I2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIHBhcmFtZXRlcnMudXNlU3lzdGVt
QXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPSBtX2NvbmZpZ3VyYXRpb24tPnVzZVN5c3RlbUFwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzKCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorICAgIHBhcmFtZXRlcnMubWVtb3J5TGltaXQgPSBtX3dlYlByb2Nlc3NNZW1v
cnlMaW1pdDsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFs
aWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NHTGliLmNwcAppbmRleCBlYzUzNDdmNjhiNmEuLjA0NGYyNDkwNzFmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcApAQCAtMTA1
LDYgKzEwNSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogI2lmIFBMQVRGT1JNKEdUSykg
JiYgIVVTRShHVEs0KQogICAgIHNldFVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKHBh
cmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMpOwogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnNpbmdsZXRvbigpLnNldFByb2Nlc3NNZW1vcnlMaW1pdChwYXJhbWV0ZXJzLm1lbW9yeUxp
bWl0ICogTUIpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433421</attachid>
            <date>2021-07-13 11:03:37 -0700</date>
            <delta_ts>2021-07-13 11:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210713200336.patch</filename>
            <type>text/plain</type>
            <size>47082</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3YjEwMzE0YjYxZDczYjI1YjUzYzJl
ZjJiODMyMDM2N2MxMjkzNzEuLmY1YjYxNzMzZjU0ODY3NWMyOTZjNGJlZWEyOWExZTI2YTMwZDU5
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDctMTMgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNl
dHRpbmdzIHN0cnVjdHVyZSB0byBNZW1vcnlQcmVzc3VyZUhhbmRsZXIsIHdpdGggdGhlIG1ldGhv
ZHMgdG8gZW5jb2RlL2RlY29kZSBpdC4gQWxzbworICAgICAgICBhZGQgYSBtZXRob2QgdG8gc2V0
IGEgc2V0dGluZ3Mgc3RydWN0dXJlIHRvIGEgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc3RhbmNl
LCBhbmQgbW9kaWZ5IHRoZQorICAgICAgICBiZWhhdmlvciBzbyB0aGUgdGhlIHNldHRpbmdzIGFy
ZSB1c2VkIHdoZW4gY2hlY2tpbmcgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKFdU
Rjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0
b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1l
bW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9s
ZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cG9saWN5
Rm9yRm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6Cisg
ICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6U2V0dGluZ3M6OlNldHRpbmdzKToK
KyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0aW5nczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0aW5nczo6ZGVj
b2RlKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTZXR0aW5ncyk6
CisKIDIwMjEtMDctMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4gYW5kIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgbWFsbG9jIGFsZ29y
aXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDViNTNlNmEwZWFhOTAzMGFjZDMxYTEyOWNhN2VlNzdjNjc3OThj
OTEuLjdlMTdlOWYxNjQzNDE3NTEwNDZjYjM3YTA4YWI4OTJkYmIxYjFjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNy0xMyAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJl
IHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5zaWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKSBpcyBub3cgYW4gaW5zdGFuY2UgbWV0
aG9kIGFuZCBub3QgYSBjbGFzcyBvbmUsCisgICAgICAgIHNvIHVwZGF0ZSB0aGUgY2FsbCBpbiBS
ZW5kZXJMYXllckNvbXBvc2l0b3IgdG8gdXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgor
CiAyMDIxLTA3LTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXUEVdIEV4cG9zZSBzdXBwb3J0IGZvciBjbGllbnQgY2VydGlmaWNh
dGUgYXV0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA2OTc1YTMxNGJiNDRmMTVkZDg0NjVhOTRlYTE0ZTU1NzNjYmY3
NzJjLi5kNWMzNmVmNDExZDU5NWUyN2FhNmYyNjJhM2M2ODk0YjlhNDM2ZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ1IEBACisyMDIxLTA3LTEzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUg
dGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHR5
cGUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZp
Z3VyZSB0aGUgYmVoYXZpb3IKKyAgICAgICAgb2YgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlci4g
QWRkZWQgYSBuZXcgQVBJIG1ldGhvZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5ncworICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MgbmV3IHNldHRp
bmdzIHRvIGEgV2ViUHJvY2Vzc1Bvb2wsIGFuZCB0aG9zZSBzZXR0aW5ncyB3aWxsIGJlCisgICAg
ICAgIHNldCB0byBuZXcgd2ViIHByb2Nlc3NlcyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxp
emF0aW9uIHN0YWdlLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNl
c1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Y29weSk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOgor
ICAgICAgICAod2Via2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1RvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyU2V0dGluZ3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5ncyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Vi
a2l0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIxLTA3LTEzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIEV4cG9zZSBzdXBwb3J0IGZvciBjbGllbnQgY2VydGlmaWNhdGUgYXV0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNWIwN2RmODA5NGRlMjliZmM3
MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOS4uMGNmN2IyNThkYmFlZTMyOTU1MzZjZjUxNjQxYjc3ZTU1
Zjk5NWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0z
OCw2ICszOCwxNyBAQCBERUZJTkVfTE9HX0NIQU5ORUwoTWVtb3J5UHJlc3N1cmUsIExPR19DSEFO
TkVMX1dFQktJVF9TVUJTWVNURU0pOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9IGZhbHNlOwog
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBjb25zdCBkb3VibGUgc19jb25zZXJ2
YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19zdHJp
Y3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNjU7CisjZWxzZQorc3RhdGljIGNvbnN0IGRvdWJsZSBz
X2NvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKKyNlbmRpZgorc3RhdGljIGNvbnN0
IGRvdWJsZSBzX2Jhc2VUaHJlc2hvbGQgPSBzdGQ6Om1pbigzICogR0IsIHJhbVNpemUoKSk7Citz
dGF0aWMgY29uc3QgZG91YmxlIHNfa2lsbFRocmVzaG9sZEZyYWN0aW9uID0gMDsKK3N0YXRpYyBj
b25zdCBkb3VibGUgc19wb2xsSW50ZXJ2YWwgPSAzMDsKKwogTWVtb3J5UHJlc3N1cmVIYW5kbGVy
JiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNzdXJlSGFuZGxl
cjsKQEAgLTUyLDEwICs2MywxMSBAQCBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2luZ2xldG9uKCkKIH0KIAogTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXIoKQorICAgIDogbV9zZXR0aW5ncyhzX2Jhc2VUaHJlc2hvbGQsIHNf
Y29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24sIHNfc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24s
IHNfa2lsbFRocmVzaG9sZEZyYWN0aW9uLCBzX3BvbGxJbnRlcnZhbCkKICNpZiBPUyhMSU5VWCkg
fHwgT1MoRlJFRUJTRCkKLSAgICA6IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hv
bGRPZmZUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OmhvbGRPZmZUaW1lckZpcmVkKQogI2VsaWYgT1MoV0lORE9XUykKLSAgICA6IG1fd2luZG93c01l
YXN1cmVtZW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjp3aW5kb3dzTWVhc3VyZW1lbnRUaW1lckZpcmVkKQorICAgICwgbV93aW5kb3dzTWVhc3Vy
ZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OndpbmRvd3NNZWFzdXJlbWVudFRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTczLDcgKzg1LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNo
b3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKIAogICAgIGlmICh1c2UpIHsK
ICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7Ci0gICAgICAgIG1fbWVhc3VyZW1l
bnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1l
ci0+c3RhcnRSZXBlYXRpbmcoU2Vjb25kcyhtX3NldHRpbmdzLnBvbGxJbnRlcnZhbCkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwogfQpAQCAtMTEw
LDYgKzEyMiw5IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRQYWdlQ291bnQodW5z
aWduZWQgcGFnZUNvdW50KQogCiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjp0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCkKIHsKKyAgICBpZiAobV9zZXR0aW5ncy5r
aWxsVGhyZXNob2xkRnJhY3Rpb24pCisgICAgICAgIHJldHVybiBtX3NldHRpbmdzLmJhc2VUaHJl
c2hvbGQgKiBtX3NldHRpbmdzLmtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKwogICAgIHN3aXRjaCAo
bV9wcm9jZXNzU3RhdGUpIHsKICAgICBjYXNlIFdlYnNhbVByb2Nlc3NTdGF0ZTo6SW5hY3RpdmU6
CiAgICAgICAgIHJldHVybiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxsT2ZJbmFjdGl2ZVByb2Nlc3Mo
bV9wYWdlQ291bnQpOwpAQCAtMTE5LDMyICsxMzQsMjIgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpCiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIHNpemVfdCB0aHJlc2hvbGRGb3JQb2xpY3ko
TWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQorc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
dGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkKIHsKLSAgICBjb25z
dCBzaXplX3QgYmFzZVRocmVzaG9sZEZvclBvbGljeSA9IHN0ZDo6bWluKDMgKiBHQiwgcmFtU2l6
ZSgpKTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29uc3QgZG91YmxlIGNvbnNl
cnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC41OwotICAgIGNvbnN0IGRvdWJsZSBzdHJpY3RU
aHJlc2hvbGRGcmFjdGlvbiA9IDAuNjU7Ci0jZWxzZQotICAgIGNvbnN0IGRvdWJsZSBjb25zZXJ2
YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuMzM7Ci0gICAgY29uc3QgZG91YmxlIHN0cmljdFRo
cmVzaG9sZEZyYWN0aW9uID0gMC41OwotI2VuZGlmCi0KICAgICBzd2l0Y2ggKHBvbGljeSkgewog
ICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDoKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlOgotICAgICAgICBy
ZXR1cm4gYmFzZVRocmVzaG9sZEZvclBvbGljeSAqIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0
aW9uOworICAgICAgICByZXR1cm4gbV9zZXR0aW5ncy5iYXNlVGhyZXNob2xkICogbV9zZXR0aW5n
cy5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9s
aWN5OjpTdHJpY3Q6Ci0gICAgICAgIHJldHVybiBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICogc3Ry
aWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIHJldHVybiBtX3NldHRpbmdzLmJhc2VUaHJl
c2hvbGQgKiBtX3NldHRpbmdzLnN0cmljdFRocmVzaG9sZEZyYWN0aW9uOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiB9CiAKLXN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3lGb3JGb290cHJpbnQoc2l6ZV90
IGZvb3RwcmludCkKK01lbW9yeVVzYWdlUG9saWN5IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cG9s
aWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCiB7CiAgICAgaWYgKGZvb3RwcmludCA+
PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkpCiAgICAgICAg
IHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaAppbmRleCAwYjVkNzdiZTNjNzBiM2MxNTRiNDFiYmQyNTJiNDA1YjdlM2Fk
MTA2Li5kZjE5N2Y0Yjg3NjE3ZTQ1ZDJhZmM4MDdlYTI4NzhjMjA0NWZhZjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
aW11bGF0aW5nTWVtb3J5UHJlc3N1cmU7IH0KICAgICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1
cmUoYm9vbCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9yeVVzYWdlUG9s
aWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBN
ZW1vcnlVc2FnZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldERpc3BhdGNoUXVldWUo
T1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CkBAIC0xNDcsNiArMTQ3LDY2IEBAIHB1
YmxpYzoKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNfbG9nZ2luZ0Vu
YWJsZWQ7CiAgICAgfTsKIAorICAgIHN0cnVjdCBTZXR0aW5ncyB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7Cisg
ICAgICAgIFNldHRpbmdzKHNpemVfdCBiYXNlLCBkb3VibGUgY29uc2VydmF0aXZlLCBkb3VibGUg
c3RyaWN0LCBkb3VibGUga2lsbCwgZG91YmxlIGludGVydmFsKQorICAgICAgICAgICAgOiBiYXNl
VGhyZXNob2xkKGJhc2UpCisgICAgICAgICAgICAsIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0
aW9uKGNvbnNlcnZhdGl2ZSkKKyAgICAgICAgICAgICwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24o
c3RyaWN0KQorICAgICAgICAgICAgLCBraWxsVGhyZXNob2xkRnJhY3Rpb24oa2lsbCkKKyAgICAg
ICAgICAgICwgcG9sbEludGVydmFsKGludGVydmFsKQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGJhc2VUaHJlc2hv
bGQ7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9u
OworICAgICAgICAgICAgZW5jb2RlciA8PCBzdHJpY3RUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwga2lsbFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICAgICAgZW5j
b2RlciA8PCBwb2xsSW50ZXJ2YWw7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAgeworICAgICAg
ICAgICAgc2l6ZV90IGJhc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJhc2Up
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZG91YmxlIGNv
bnNlcnZhdGl2ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uc2VydmF0aXZl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGRvdWJsZSBz
dHJpY3Q7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmljdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBkb3VibGUga2lsbDsKKyAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2lsbCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWw7CisgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGludGVydmFsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgICAgIHNldHRpbmdzLmJhc2VUaHJlc2hvbGQgPSBiYXNlOworICAgICAgICAg
ICAgc2V0dGluZ3MuY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSBjb25zZXJ2YXRpdmU7
CisgICAgICAgICAgICBzZXR0aW5ncy5zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IHN0cmljdDsK
KyAgICAgICAgICAgIHNldHRpbmdzLmtpbGxUaHJlc2hvbGRGcmFjdGlvbiA9IGtpbGw7CisgICAg
ICAgICAgICBzZXR0aW5ncy5wb2xsSW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGJhc2VUaHJlc2hvbGQgeyAw
IH07CisgICAgICAgIGRvdWJsZSBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiB7IDAgfTsK
KyAgICAgICAgZG91YmxlIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uIHsgMCB9OworICAgICAgICBk
b3VibGUga2lsbFRocmVzaG9sZEZyYWN0aW9uIHsgMCB9OworICAgICAgICBkb3VibGUgcG9sbElu
dGVydmFsIHsgMCB9OworICAgIH07CisgICAgdm9pZCBzZXRTZXR0aW5ncyhjb25zdCBTZXR0aW5n
cyYgc2V0dGluZ3MpIHsgbV9zZXR0aW5ncyA9IHNldHRpbmdzOyB9CisKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsLCBTeW5jaHJvbm91cyA9IFN5bmNo
cm9ub3VzOjpObyk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBiZWdpblNpbXVsYXRl
ZE1lbW9yeVByZXNzdXJlKCk7CkBAIC0xNjEsNiArMjIxLDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCk7Cisg
ICAgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSk7CisgICAgTWVt
b3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCk7CisKICAgICB2b2lkIG1l
bW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAgdm9pZCB1bmluc3RhbGwoKTsKQEAg
LTE5OCw2ICsyNjEsOCBAQCBwcml2YXRlOgogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2Rp
ZEV4Y2VlZEluYWN0aXZlTGltaXRXaGlsZUFjdGl2ZUNhbGxiYWNrOwogICAgIExvd01lbW9yeUhh
bmRsZXIgbV9sb3dNZW1vcnlIYW5kbGVyOwogCisgICAgU2V0dGluZ3MgbV9zZXR0aW5nczsKKwog
I2lmIE9TKFdJTkRPV1MpCiAgICAgdm9pZCB3aW5kb3dzTWVhc3VyZW1lbnRUaW1lckZpcmVkKCk7
CiAgICAgUnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX3dpbmRvd3NNZWFz
dXJlbWVudFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxOTc0ZTliYTgxMDkxODA3MGY1NDdkZmRlMWJjYWIwMTI3
Y2RjNzUyLi40OGI3MDI4YWRmN2M5MmFkM2ZlM2RhMGQ3YTM2MGZiMmY5ZjczNmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtNTI2LDcgKzUyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21w
b3NpdGluZ1BvbGljeSgpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lbW9yeVBvbGljeUNh
Y2hpbmdEdXJhdGlvbiA9IDJfczsKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogICAgIGlmIChub3cgLSBjYWNoZWRNZW1vcnlQb2xpY3lUaW1lID4gbWVtb3J5UG9saWN5Q2Fj
aGluZ0R1cmF0aW9uKSB7Ci0gICAgICAgIGNhY2hlZE1lbW9yeVBvbGljeSA9IE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6Y3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CisgICAgICAgIGNhY2hlZE1l
bW9yeVBvbGljeSA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuY3VycmVudE1l
bW9yeVVzYWdlUG9saWN5KCk7CiAgICAgICAgIGNhY2hlZE1lbW9yeVBvbGljeVRpbWUgPSBub3c7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBkNjc5Nzg1Y2EzYmQ1OGIyZWQy
Y2UwODc2NWViNTU3MDFiZjVlNzIzLi4xNzNkNDE1ZjQzYTUzYjc2NWMwYjIzYjEyMTBlZjU4M2Vk
NTU5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTExMSw2ICsxMTEsNyBAQCBzZXQo
V2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0
UmVzdWx0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lZGlh
S2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCiAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmgKICAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBlMzk3YzA3YjdjZjcxNzBmNGQ4MzM5OTdkNDk5YjRh
YzdmZmNkODk4Li44NjcyNGM2N2U4ODcxYTk0MGE0ZjkzZjY1Y2ZmMjU0OGE0YzFmMzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoV1BFX0FQSV9JTlNU
QUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlz
c2lvblJlcXVlc3QuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDI3
ODE0ZjdiMTU4MDQ1YjkwODZjNDZjMjk0OTA4NTY2MTQ5YjYyNWYuLjA5Mzc4MjM1ZTQ4ZDIyMjVk
MmJmMWQyYmExZDlmNzM3ZmZhMmIwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0yMDgsNiArMjA4LDEwIEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICNlbmRpZgogCiAgICAgZW5jb2RlciA8PCBhY2Nlc3NpYmlsaXR5UHJl
ZmVyZW5jZXM7CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBlbmNv
ZGVyIDw8IG1lbW9yeVByZXNzdXJlSGFuZGxlclNldHRpbmdzOworI2VuZGlmCiB9CiAKIGJvb2wg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU2OSw2ICs1
NzMsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHBhcmFtZXRlcnMuYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzID0gV1RGTW92ZSgqYWNjZXNz
aWJpbGl0eVByZWZlcmVuY2VzKTsKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OlNldHRpbmdzPj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3M7CisgICAgZGVjb2RlciA+
PiBtZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5nczsKKyAgICBpZiAoIW1lbW9yeVByZXNzdXJl
SGFuZGxlclNldHRpbmdzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcGFyYW1ldGVycy5t
ZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5ncyA9IFdURk1vdmUoKm1lbW9yeVByZXNzdXJlSGFu
ZGxlclNldHRpbmdzKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCBjYzgzNTI4ZGMxZGE0MzIxZmU0NmY3NjdmMmVjNDdlNzhiMjhiZjYwLi5iNzAwYzRjYzU1MjIy
OTJhYzlkNGIyZDQzMDY2MGM5MzIyYTdjY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Miw2ICs1MiwxMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwogfQpAQCAtMjQ5LDYg
KzI1MywxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVByZWZlcmVu
Y2VzOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RkOjpvcHRp
b25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlNldHRpbmdzPiBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXJTZXR0aW5nczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCBhNDM5MWJlN2I2MzdmZDk2ZDg4MGNiMDY4MzhiNmRlYjVkYjU1MmI2Li4w
NTFhYTdmMDc5MDc0OGQwZjAyYzE1NTk2ZjgyZDA5NzlkZTQ4ZGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQKQEAgLTE0OCw2ICsxNDgsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11
bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKK1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggZjhmYjE1MTFmMmEwMTlhMDhhODk2Zjdj
YmY0NWNhNDcwZGEyODE4NS4uMmE0ZjQwNmFiYjhhZmIzMDRlZTM4ZDYyYjNhMmJmNzYwODk0Y2Rh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0xMzksNiArMTM5LDcgQEAgVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVkaWFLZXlTeXN0ZW1QZXJt
aXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0TWltZUluZm8uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmln
YXRpb25BY3Rpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmln
YXRpb25DbGllbnQuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2YxOWIwNzg1OTEzYjk3MTBkNWE4MzU5YTYwZmM4NDgyYzE1ZmEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaD4KKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXByZXNlbnRp
bmcgdGhlIHNldHRpbmdzIGZvciB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyCisgKiBAVGl0bGU6
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNv
bnRleHQuCisgKgorICogV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBpcyBhIGJveGVkIHR5
cGUgdGhhdCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIHNvbWUgY3VzdG9tIHNldHRpbmdzCisgKiB0
byBjb250cm9sIGhvdyB0aGUgbWVtb3J5IHByZXNzdXJlIHNpdHVhdGlvbnMgYXJlIGhhbmRsZWQg
YnkgdGhlIGRpZmZlcmVudCBwcm9jZXNzZXMuCisgKgorICogWW91IG5lZWQgdG8gY2FsbCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5ncygpIHdpdGggYSBXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBpbnN0YW5jZS4KKyAqCisgKiBTaW5jZTogMi4z
NAorICovCitzdHJ1Y3QgX1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgeworICAgIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6U2V0dGluZ3Mgc2V0dGluZ3M7Cit9OworCitHX0RFRklORV9CT1hF
RF9UWVBFKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSwgd2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKTsKKworLyoqCisgKiB3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX25ldzoKKyAqIEBtZW1vcnlfbGltaXQ6IGFtb3VudCBvZiBtZW1v
cnkgKGluIE1CKSB0aGF0IHRoZSBwcm9jZXNzIGlzIGFsbG93ZWQgdG8gdXNlLiBUaGUgZGVmYXVs
dCB2YWx1ZQorICogICBpcyB0aGUgc3lzdGVtJ3MgUkFNIHNpemUgd2l0aCBhIG1heGltdW0gb2Yg
M0dCLgorICogQGNvbnNlcnZhdGl2ZV90aHJlc2hvbGQ6IGZyYWN0aW9uIG9mIHRoZSBtZW1vcnkg
bGltaXQgd2hlcmUgdGhlIGNvbnNlcnZhdGl2ZSBwb2xpY3kgc3RhcnRzCisgKiAgIHdvcmtpbmcu
IEl0IG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuIFRoZSBkZWZhdWx0IHZhbHVlIGlz
IDAuMzMuCisgKiBAc3RyaWN0X3RocmVzaG9sZDogZnJhY3Rpb24gb2YgdGhlIG1lbW9yeSBsaW1p
dCB3aGVyZSB0aGUgc3RyaWN0IHBvbGljeSBzdGFydHMgd29ya2luZy4gSXQgbXVzdAorICogICBi
ZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMSwgYW5kIGl0IG11c3QgYmUgYmlnZ2VyIHRoYW4gdGhl
IEBjb25zZXJ2YXRpdmVfdGhyZXNob2xkLiBUaGUgZGVmYXVsdAorICogICB2YWx1ZSBpcyAwLjUu
CisgKiBAa2lsbF90aHJlc2hvbGQ6IGZyYWN0aW9uIG9mIHRoZSBtZW1vcnkgbGltaXQgd2hlcmUg
dGhlIHByb2Nlc3MgaXMga2lsbGVkIGJlY2F1c2Ugb2YgZXhjZXNzaXZlCisgKiAgIG1lbW9yeSB1
c2FnZS4gVmFsdWVzIGJpZ2dlciB0aGFuIDEgYXJlIGFsbG93ZWQsIGFuZCB0aGUgdmFsdWUgbXVz
dCBiZSBiaWdnZXIgdGhhbiBAc3RyaWN0X3RocmVzaG9sZC4KKyAqICAgVGhlIGRlZmF1bHQgdmFs
dWUgaXMgMCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcHJvY2VzcyBpcyBuZXZlciBraWxsZWQuCisg
KiBAcG9sbF9pbnRlcnZhbDogcGVyaW9kIChpbiBzZWNvbmRzKSBiZXR3ZWVuIG1lbW9yeSB1c2Fn
ZSBtZWFzdXJlbWVudHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDMwIHNlY29uZHMuCisgKgorICog
Q3JlYXRlIGEgbmV3ICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIHdpdGggdGhlIGdpdmVu
IHZhbHVlcy4KKyAqCisgKiBUaGUgbWVtb3J5IHByZXNzdXJlIHN5c3RlbSBpbXBsZW1lbnRlZCBp
bnNpZGUgdGhlIGRpZmZlcmVudCBwcm9jZXNzIHdpbGwgdHJ5IHRvIGtlZXAgdGhlIG1lbW9yeSB1
c2FnZQorICogdW5kZXIgdGhlIEBtZW1vcnlfbGltaXQgcGFyYW1ldGVyLiBJbiBvcmRlciB0byBk
byB0aGF0LCBpdCB3aWxsIGNoZWNrIHRoZSB1c2VyIG1lbW9yeSBldmVyeSBAcG9sbF9pbnRlcnZh
bAorICogc2Vjb25kcyBhbmQgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxkIHRyeSB0byByZWxlYXNl
IG1lbW9yeS4gVGhlIHRocmVzaG9sZHMgcGFzc2VkIHdpbGwgZGVmaW5lIGhvdyB1cmdlbnQKKyAq
IGlzIHRvIHJlbGVhc2UgdGhhdCBtZW1vcnkuCisgKgorICogVGFrZSBpbnRvIGFjY291bnQgdGhh
dCBiYWRseSBkZWZpbmVkIHBhcmFtZXRlcnMgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBwZXJmb3Jt
YW5jZSBvZiB0aGUgZW5naW5lLiBGb3IKKyAqIGV4YW1wbGUsIHNldHRpbmcgQG1lbW9yeV9saW1p
dCB0b28gbG93IHdpdGggYSBmYXN0IEBwb2xsX2ludGVydmFsIGNhbiBjYXVzZSB0aGUgcHJvY2Vz
cyB0byBjb25zdGFudGx5CisgKiBiZSB0cnlpbmcgdG8gcmVsZWFzZSBtZW1vcnkuCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ldyAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyBvciAlTlVMTCBpZiB0aGUgcGFzc2VkIHBhcmFtZXRlcnMKKyAqIHByb2R1Y2UgYW4gaW52
YWxpZCBjb25maWd1cmF0aW9uLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MqIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KGNv
bnN0IGd1aW50IG1lbW9yeV9saW1pdCwgY29uc3QgZ2RvdWJsZSBjb25zZXJ2YXRpdmVfdGhyZXNo
b2xkLCBjb25zdCBnZG91YmxlIHN0cmljdF90aHJlc2hvbGQsIGNvbnN0IGdkb3VibGUga2lsbF90
aHJlc2hvbGQsIGNvbnN0IGdkb3VibGUgcG9sbF9pbnRlcnZhbCkKK3sKKyAgICBpZiAoIW1lbW9y
eV9saW1pdCB8fCAhY29uc2VydmF0aXZlX3RocmVzaG9sZCB8fCAhc3RyaWN0X3RocmVzaG9sZCB8
fCAhcG9sbF9pbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoY29u
c2VydmF0aXZlX3RocmVzaG9sZCA+PSBzdHJpY3RfdGhyZXNob2xkKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIGlmIChraWxsX3RocmVzaG9sZCAmJiAoc3RyaWN0X3RocmVzaG9sZCA+
PSBraWxsX3RocmVzaG9sZCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHN0YXRpY19j
YXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihmYXN0TWFsbG9jKHNpemVvZihXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKSkpOworICAgIG1lbW9yeVByZXNzdXJlU2V0dGluZ3Mt
PnNldHRpbmdzLmJhc2VUaHJlc2hvbGQgPSBtZW1vcnlfbGltaXQgKiBNQjsKKyAgICBtZW1vcnlQ
cmVzc3VyZVNldHRpbmdzLT5zZXR0aW5ncy5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9
IGNvbnNlcnZhdGl2ZV90aHJlc2hvbGQ7CisgICAgbWVtb3J5UHJlc3N1cmVTZXR0aW5ncy0+c2V0
dGluZ3Muc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSBzdHJpY3RfdGhyZXNob2xkOworICAgIG1l
bW9yeVByZXNzdXJlU2V0dGluZ3MtPnNldHRpbmdzLmtpbGxUaHJlc2hvbGRGcmFjdGlvbiA9IGtp
bGxfdGhyZXNob2xkOworICAgIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MtPnNldHRpbmdzLnBvbGxJ
bnRlcnZhbCA9IHBvbGxfaW50ZXJ2YWw7CisKKyAgICByZXR1cm4gbWVtb3J5UHJlc3N1cmVTZXR0
aW5nczsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHk6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBN
YWtlIGEgY29weSBvZiBAc2V0dGluZ3MuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwp
OiBBIGNvcHkgb2Ygb2YgdGhlIHBhc3NlZCAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy4K
KyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkoV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2V0dGluZ3Ms
IG51bGxwdHIpOworCisgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogY29weSA9IHN0
YXRpY19jYXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihmYXN0WmVyb2VkTWFsbG9j
KHNpemVvZihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKSkpOworCisgICAgY29weS0+c2V0
dGluZ3MgPSBzZXR0aW5ncy0+c2V0dGluZ3M7CisKKyAgICByZXR1cm4gY29weTsKK30KKworLyoq
CisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWU6CisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBGcmVlIHRoZSAjV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZShXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNldHRpbmdzKTsKKwor
ICAgIGZhc3RGcmVlKHNldHRpbmdzKTsKK30KKworY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpTZXR0aW5ncyYgd2Via2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1RvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyU2V0dGluZ3MoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpCit7
CisgICAgcmV0dXJuIHNldHRpbmdzLT5zZXR0aW5nczsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMzJjY2VkNmEyNTk3YmUxMDNjNTAw
MjA0ZDllOTczNWNiYzcxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgorCitjb25zdCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlNldHRpbmdzJiB3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzVG9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJTZXR0aW5ncyhXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwCmluZGV4IDZkZDlmMjBlNGZmMmJkYTAxODRkMDY0NTMwMWNlZjIyZTQ3ZGNmMTUuLmQ3
MzE1NTNkYWU2NTIwZjdjMzEwYWM2NzNmMmY3YzRjMjJjNWRmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdEluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmgi
CkBAIC0xODA3LDYgKzE4MDgsMzEgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9jb250ZXh0X2dldF91
c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMoV2ViS2l0V2ViQ28KIH0KICNlbmRp
ZgogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqIEB0YXJnZXRfcHJvY2Vz
czogYSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3MKKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICoKKyAqIFNldCB0aGUgbWVtb3J5IHBy
ZXNzdXJlIHNldHRpbmdzIHRvIGJlIHVzZWQgYnkgdGhlIHByb2Nlc3NlcyBvZiB0eXBlCisgKiBA
dGFyZ2V0X3Byb2Nlc3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqCisgKi8KK3ZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3MoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3MgdGFyZ2V0UHJv
Y2VzcywgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworCisgICAgc3dp
dGNoICh0YXJnZXRQcm9jZXNzKSB7CisgICAgY2FzZSBXRUJLSVRfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTX1dFQl9QUk9DRVNTOgorICAgICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+
c2V0V2ViUHJvY2Vzc01lbW9yeVByZXNzdXJlSGFuZGxlclNldHRpbmdzKHdlYmtpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3NUb01lbW9yeVByZXNzdXJlSGFuZGxlclNldHRpbmdzKHNldHRpbmdzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KK30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZU5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgZ19zaWdu
YWxfZW1pdChjb250ZXh0LCBzaWduYWxzW0lOSVRJQUxJWkVfTk9USUZJQ0FUSU9OX1BFUk1JU1NJ
T05TXSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNzEwMWVm
NjdiOWMyZTFmN2VmMWU5ZjMzYjc3NTI2MGRjMmZiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9D
T01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNs
dWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzX2gKKyNkZWZpbmUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisKKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlKCkpCisKKy8q
KgorICogV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3M6CisgKiBAV0VCS0lUX01F
TU9SWV9QUkVTU1VSRV9TRVRUSU5HU19XRUJfUFJPQ0VTUzogQXBwbHkgc2V0dGluZ3MgdG8gd2Vi
IHByb2Nlc3Nlcy4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGluZGljYXRlIHRoZSBwcm9j
ZXNzZXMgYWZmZWN0ZWQgYnkgdGhlICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX01FTU9SWV9Q
UkVTU1VSRV9TRVRUSU5HU19XRUJfUFJPQ0VTUworfSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzUHJvY2VzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKKworV0VCS0lUX0FQSSBHVHlwZQord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSAgICAgKHZvaWQpOworCitXRUJL
SVRfQVBJIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19uZXcgICAgICAgICAgKGNvbnN0IGd1aW50ICAgICAgICAgICAgICAgICAg
ICAgICBtZW1vcnlfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgIGNvbnNlcnZhdGl2ZV90
aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgIHN0cmljdF90aHJlc2hvbGQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2RvdWJsZSAg
ICAgICAgICAgICAgICAgICAgIGtpbGxfdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdkb3VibGUgICAgICAgICAgICAgICAgICAg
ICBwb2xsX2ludGVydmFsKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzICoKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSAgICAgICAgIChXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlICAgICAgICAgKFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8q
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA1YTRhZGY4YjhlYjM0
ODhlNDkzY2NlODg2NjM3NDFjMjk4NDc3MWI4Li5kZjAyZGI1NDI0NjA5Y2U1ZmU4NmI1YmZhNTc2
ZDc3YTBiMTYxZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RG93bmxvYWQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZhdmljb25EYXRhYmFz
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hl
bWVSZXF1ZXN0Lmg+CkBAIC0zMDAsNiArMzAxLDEwIEBAIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
dXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzIChXZWJLaXRXZWJDb250ZXh0CiBX
RUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBw
ZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dCAgICAgICpjb250ZXh0KTsK
IAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5ncyAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICAgICAgICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJvY2VzcyAgdGFyZ2V0X3Byb2Nlc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgICAgICAgICpzZXR0aW5ncyk7CiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGI1ZjNlN2Q2MGQy
MDJlMGM2NWI5Nzc4M2VkZTc0ZTA5ZjdhZTc4YjkuLmVkYjBhMjBiMWE5ZjkxZTYyNGM5NmYyMTlk
ZTMzNDhiNGVmZGY0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtNzEs
NiArNzEsNyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdGlhbGl6ZV9ub3RpZmljYXRpb25fcGVy
bWlzc2lvbnMKIHdlYmtpdF93ZWJfY29udGV4dF9zZW5kX21lc3NhZ2VfdG9fYWxsX2V4dGVuc2lv
bnMKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3Jv
bGxiYXJzCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jf
c2Nyb2xsYmFycword2Via2l0X3dlYl9jb250ZXh0X3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3MKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxs
YmFjawpAQCAtMTk1Myw0ICsxOTU0LDE4IEBAIFdlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUK
IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlCiA8L1NFQ1RJT04+CiAKKzxTRUNUSU9O
PgorPEZJTEU+V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nczwvRklMRT4KK1dlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MKK1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcm9jZXNzCit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19jb3B5Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUKKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9NRU1PUllfUFJFU1NV
UkVfU0VUVElOR1MKKzwvU0VDVElPTj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaAppbmRleCBlY2JlNDMzZWQ4ODgzNTNiMWU2MDEzOTQzYjQ0NjM4MzVjMzU4MmQy
Li5iN2QyNzQxYzRiMmMxYWQ0ZTM0YTFmYWI0OGZlYzYxYWYxYzYxMDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdC5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0TWltZUluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5h
dmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWZh
NjRmZjEzOGVhZTE4Mjc1ODc0ZjJkZjg4ODY0MTJlNDVkOGExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5nc19oCisjZGVmaW5lIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaAorCisjaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdT
ICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlKCkpCisKKy8qKgorICog
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3M6CisgKiBAV0VCS0lUX01FTU9SWV9Q
UkVTU1VSRV9TRVRUSU5HU19XRUJfUFJPQ0VTUzogQXBwbHkgc2V0dGluZ3MgdG8gd2ViIHByb2Nl
c3Nlcy4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGluZGljYXRlIHRoZSBwcm9jZXNzZXMg
YWZmZWN0ZWQgYnkgdGhlICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLgorICoKKyAqIFNp
bmNlOiAyLjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX01FTU9SWV9QUkVTU1VS
RV9TRVRUSU5HU19XRUJfUFJPQ0VTUworfSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJv
Y2VzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X21l
bW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19uZXcgICAgICAgICAgKGNvbnN0IGd1aW50ICAgICAgICAgICAgICAgICAgICAgICBt
ZW1vcnlfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgIGNvbnNlcnZhdGl2ZV90aHJlc2hv
bGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2RvdWJsZSAgICAgICAgICAgICAgICAgICAgIHN0cmljdF90aHJlc2hvbGQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2RvdWJsZSAgICAgICAg
ICAgICAgICAgICAgIGtpbGxfdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdkb3VibGUgICAgICAgICAgICAgICAgICAgICBwb2xs
X2ludGVydmFsKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICoK
K3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSAgICAgICAgIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA0Y2U5M2E0ZTA3OTA5MjJmOTEz
OTU2MmU3Y2JmNmY4NDA5YWQ4ZGY4Li40NDMwMDM4Yzk4Mjk3ZDFmYThlMzdmNTg4NWNmODM3OTYw
MGNlMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYkNvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXREb3du
bG9hZC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0TmV0d29ya1Byb3h5
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KQEAgLTI4OSw2ICsyOTAsMTAgQEAg
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9l
eHRlbnNpb25zICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyTWVzc2FnZSAgICAgICAgICAgICAqbWVzc2FnZSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3MgICAgIChXZWJLaXRX
ZWJDb250ZXh0ICAgICAgICAgICAgICAgICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5nc1Byb2Nlc3MgIHRhcmdldF9wcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
ICAgICAgICAqc2V0dGluZ3MpOwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKaW5kZXggNGI2NmJiOTVmMTMyNmJkODM4MzJiNjhmNDI5YzIxZWY2ODgwOGYzOC4uNDFhYzc0
NzExYTAyNmM0MGJmMzBhYjZmMTcxMzUyMjQ0NzliOTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApA
QCAtNDYsNiArNDYsNyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Byb2Nlc3NfbW9kZWwKIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbAogd2Via2l0X3dlYl9jb250ZXh0X2lu
aXRpYWxpemVfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zCiB3ZWJraXRfd2ViX2NvbnRleHRfc2Vu
ZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNpb25zCit3ZWJraXRfd2ViX2NvbnRleHRfc2V0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5ncwogCiA8U1VCU0VDVElPTiBVUkkgU2NoZW1lPgogV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdENhbGxiYWNrCkBAIC0xNjUxLDMgKzE2NTIsMTggQEAgV0VCS0lUX1dFQlNJ
VEVfUE9MSUNJRVNfR0VUX0NMQVNTCiBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCiB3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxG
SUxFPldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzCitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJvY2Vzcword2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfY29weQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlCisKKzxTVUJT
RUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBl
CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aAppbmRleCA4NzkyOTI1N2JmNzNhYmE2ODRhMzgwYWNjZDhjMWJiYjM5NGJhZDg3Li41YzkzZDc2
MGY3MzRhMTJmNjE0ODk5NTQ1MTM1ZmRmNzcwMTY0NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvd2Via2l0LmgKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3cGUvV2Vi
S2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1
ZGUgPHdwZS9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdE1l
ZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRNaW1lSW5mby5oPgog
I2luY2x1ZGUgPHdwZS9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmg+CiAjaW5jbHVkZSA8d3BlL1dl
YktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKaW5kZXggNmI0ODY3ODVhYjkwOGY3MzEwYzJiODRhYmQwYmZkZDdkNGNj
NWFhOC4uODE2ZTNmMzI1MGQyNGQwOTJjZWJiNTQxNzc0OGI3NDNiYjcyMjQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00NzUsNiArNDc1LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRVc2VyTWVzc2FnZUhhbmRsZXIoRnVuY3Rpb248dm9pZChVc2Vy
TWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKT4mJiBo
YW5kbGVyKSB7IG1fdXNlck1lc3NhZ2VIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsgfQogICAg
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoVXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChVc2VyTWVzc2FnZSYmKT4mJik+JiB1c2VyTWVzc2FnZUhhbmRsZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzZXJNZXNzYWdlSGFuZGxlcjsgfQorCisgICAgdm9pZCBzZXRXZWJQcm9jZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3MoY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0
aW5ncyYgc2V0dGluZ3MpIHsgbV93ZWJQcm9jZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGlu
Z3MgPSBzZXR0aW5nczsgfQogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzV2l0aEF1ZGlibGVNZWRp
YVRva2VuIHdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhVG9rZW4oKSBjb25zdDsKQEAgLTc2Niw2
ICs3NjgsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Q1N0cmluZywgU2FuZGJveFBlcm1pc3Np
b24+IG1fZXh0cmFTYW5kYm94UGF0aHM7CiAKICAgICBGdW5jdGlvbjx2b2lkKFVzZXJNZXNzYWdl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpPiBtX3VzZXJNZXNz
YWdlSGFuZGxlcjsKKworICAgIHN0ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpT
ZXR0aW5ncz4gbV93ZWJQcm9jZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3M7CiAjZW5k
aWYKIAogICAgIFdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291bnRlciBtX3dlYlByb2Nlc3NX
aXRoQXVkaWJsZU1lZGlhQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCA4NGFhNjUzMjc4ZjgzMThiMWRjZjdj
OWJhMTVlODAyMmY4MjA3NjNiLi45MjRhNzdhYjUwYzg4ZDAwYzFlMWVmZWQ4MWQzYzZmOGE5YWE1
MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
b29sR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UG9vbEdMaWIuY3BwCkBAIC0xMDcsNiArMTA3LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MK
ICNpZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAgICBwYXJhbWV0ZXJzLnVzZVN5c3Rl
bUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzID0gbV9jb25maWd1cmF0aW9uLT51c2VTeXN0ZW1BcHBl
YXJhbmNlRm9yU2Nyb2xsYmFycygpOwogI2VuZGlmCisKKyAgICBwYXJhbWV0ZXJzLm1lbW9yeVBy
ZXNzdXJlSGFuZGxlclNldHRpbmdzID0gbV93ZWJQcm9jZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVy
U2V0dGluZ3M7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNv
bnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc0dMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dM
aWIuY3BwCmluZGV4IGJhZDAwMTQ2ZDg4NjM1MjMwYjBhNTcxYTk5MzljMjFjZDhhNjQ4MjIuLmFi
YTJkZTc5ODJmMmZiZTlhYWY1MGI0MGY5ZmNiMWFlOTFlYTFjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTEwNSw2ICsxMDUs
OSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShH
VEs0KQogICAgIHNldFVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKHBhcmFtZXRlcnMu
dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMpOwogI2VuZGlmCisKKyAgICBpZiAocGFy
YW1ldGVycy5tZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5ncykKKyAgICAgICAgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5zZXRTZXR0aW5ncygqcGFyYW1ldGVycy5tZW1vcnlQ
cmVzc3VyZUhhbmRsZXJTZXR0aW5ncyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1T
ZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyYmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDc0MTFiZGE3ZDRkM2Q0ZDYwZGJlNTdjMWYyZmE5OWM4NGE1NDlmMzIuLjM3Mzk4ZmE1OTJmY2Jm
NWViMTExZGU2NmM5YzhkY2VkODgxMTgzMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0xMyAgTWlndWVs
IEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWxsb3cg
dGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5zaWRlIHRo
ZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGFuIEFQSSB0ZXN0IGZvciB0aGUgbmV3IHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzIG1ldGhvZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChN
ZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NUZXJtaW5hdGVkQ2FsbGJhY2spOgorICAgICAg
ICAoTWVtb3J5UHJlc3N1cmVUZXN0Ojp3YWl0VW50aWxXZWJQcm9jZXNzVGVybWluYXRlZCk6Cisg
ICAgICAgICh0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk6CisgICAgICAgIChiZWZvcmVBbGwp
OgorCiAyMDIxLTA3LTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVtXUEVdIEV4cG9zZSBzdXBwb3J0IGZvciBjbGllbnQgY2VydGlm
aWNhdGUgYXV0aApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggOWU5MjMzYWIwOTA3MDk5
YTAyYjc4NGMyODRmZWQxOTczM2Y2NDI3Ni4uM2IxZDc5Y2Y2OGRkMmI0ZDg2ZDlkOGVlMGNlMTFh
MjUwYjkyYmE4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC03NzAsNiArNzcwLDYy
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAjZW5kaWYKIH0KIAorY2xhc3MgTWVtb3J5UHJlc3N1cmVUZXN0
IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhU
VVJFKE1lbW9yeVByZXNzdXJlVGVzdCk7CisKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzVGVy
bWluYXRlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbiByZWFzb24sIE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCkKKyAgICB7
CisgICAgICAgIHRlc3QtPm1fdGVybWluYXRpb25SZWFzb24gPSByZWFzb247CisgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9j
YXN0PHZvaWQqPih3ZWJQcm9jZXNzVGVybWluYXRlZENhbGxiYWNrKSwgdGVzdCk7CisgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3
YWl0VW50aWxXZWJQcm9jZXNzVGVybWluYXRlZCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9j
b25uZWN0X2FmdGVyKG1fd2ViVmlldywgIndlYi1wcm9jZXNzLXRlcm1pbmF0ZWQiLCBHX0NBTExC
QUNLKE1lbW9yeVByZXNzdXJlVGVzdDo6d2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayksIHRo
aXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAg
V2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIG1fdGVybWluYXRpb25SZWFzb24geyBX
RUJLSVRfV0VCX1BST0NFU1NfQ1JBU0hFRCB9OworfTsKKworc3RhdGljIHZvaWQgdGVzdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MoTWVtb3J5UHJlc3N1cmVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIC8vIEFuIGVtcHR5IHZpZXcgdXNlcyBhcm91bmQgN01CIG9mIG1lbW9yeS4gV2Un
cmUgc2V0dGluZyBhIG1heGltdW0gb2YgMjBNQiBoZXJlLCBwb2xsaW5nIGV2ZXJ5IDAuNSBzZWNv
bmRzLAorICAgIC8vIGFuZCB0aGUga2lsbCBmcmFjdGlvbiBpcyAxLCBzbyB0aGUgd2ViIHByb2Nl
c3Mgd2lsbCBiZSBraWxsZWQgd2hlbiBpdCBleGNlZWRzIDIwTUIuCisgICAgLy8gVGhlIHRlc3Qg
aHRtbCB3aWxsIGFsbG9jYXRlIGEgY2FudmFzIG9mIDMwMDB4MzAwMCwgd2hpY2ggcmVxdWlyZXMg
YXJvdW5kIDM2TUIgb2YgbWVtb3J5LCBzbyBvbmNlIGl0IGdldHMKKyAgICAvLyBjcmVhdGVkLCB0
aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHdpbGwgZGV0ZWN0IHRoYXQgdGhlIG1lbW9yeSB1c2Fn
ZSBpcyB0b28gaGlnaCBhbmQga2lsbCB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gVGhpcyB0cmln
Z2VycyB0aGUgd2ViLXByb2Nlc3MtdGVybWluYXRlZCBzaWduYWwgaW4gdGhlIHZpZXcgd2l0aCBX
RUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUCisgICAgLy8gYXMgdGhlIHRl
cm1pbmF0aW9uIHJlYXNvbi4KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sID0KKyAgICAg
ICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxzY3JpcHQ+Igor
ICAgICAgICAiICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsiCisgICAgICAgICIgICAgICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7IgorICAgICAg
ICAiICAgICAgICBjYW52YXMud2lkdGggPSAzMDAwOyIKKyAgICAgICAgIiAgICAgICAgY2FudmFz
LmhlaWdodCA9IDMwMDA7IgorICAgICAgICAiICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpOyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAn
Z3JlZW4nOyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCAzMDAwLCAz
MDAwKTsiCisgICAgICAgICIgICAgICB9LCAwKTsiCisgICAgICAgICIgICAgPC9zY3JpcHQ+Igor
ICAgICAgICAiICAgIDxjYW52YXMgaWQ9J2NhbnZhcyc+PC9jYW52YXM+IgorICAgICAgICAiICA8
L2JvZHk+IgorICAgICAgICAiPC9odG1sPiI7CisKKyAgICBXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzKiBtZW1vcnlQcmVzc3VyZVNldHRpbmdzID0gd2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19uZXcoMjAsIDAuMywgMC41LCAxLCAwLjUpOworICAgIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwg
V0VCS0lUX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5HU19XRUJfUFJPQ0VTUywgbWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyk7CisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKG1l
bW9yeVByZXNzdXJlU2V0dGluZ3MpOworICAgIHRlc3QtPm1fZXhwZWN0ZWRXZWJQcm9jZXNzQ3Jh
c2ggPSB0cnVlOworCisgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwgbnVsbHB0cik7CisgICAgdGVz
dC0+d2FpdFVudGlsV2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPm1fdGVybWluYXRpb25SZWFzb24sID09LCBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVE
RURfTUVNT1JZX0xJTUlUKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIg
PSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwpAQCAtNzg2LDYgKzg0Miw3IEBAIHZvaWQgYmVmb3Jl
QWxsKCkKICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
IiwgInNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOwogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJmaWxlLXhociIsIHRl
c3RXZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKTsKICAgICBQcm94eVRlc3Q6OmFkZCgiV2ViS2l0
V2ViQ29udGV4dCIsICJwcm94eSIsIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk7CisgICAg
TWVtb3J5UHJlc3N1cmVUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAibWVtb3J5LXByZXNz
dXJlIiwgdGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>
<flag name="commit-queue"
          id="455675"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433434</attachid>
            <date>2021-07-13 11:40:24 -0700</date>
            <delta_ts>2021-07-20 13:35:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210713204023.patch</filename>
            <type>text/plain</type>
            <size>47026</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3YjEwMzE0YjYxZDczYjI1YjUzYzJl
ZjJiODMyMDM2N2MxMjkzNzEuLmY1YjYxNzMzZjU0ODY3NWMyOTZjNGJlZWEyOWExZTI2YTMwZDU5
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDctMTMgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNl
dHRpbmdzIHN0cnVjdHVyZSB0byBNZW1vcnlQcmVzc3VyZUhhbmRsZXIsIHdpdGggdGhlIG1ldGhv
ZHMgdG8gZW5jb2RlL2RlY29kZSBpdC4gQWxzbworICAgICAgICBhZGQgYSBtZXRob2QgdG8gc2V0
IGEgc2V0dGluZ3Mgc3RydWN0dXJlIHRvIGEgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc3RhbmNl
LCBhbmQgbW9kaWZ5IHRoZQorICAgICAgICBiZWhhdmlvciBzbyB0aGUgdGhlIHNldHRpbmdzIGFy
ZSB1c2VkIHdoZW4gY2hlY2tpbmcgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBwcm9jZXNzLgorCisg
ICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKFdU
Rjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0
b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1l
bW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9s
ZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cG9saWN5
Rm9yRm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6Cisg
ICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6U2V0dGluZ3M6OlNldHRpbmdzKToK
KyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0aW5nczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0aW5nczo6ZGVj
b2RlKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTZXR0aW5ncyk6
CisKIDIwMjEtMDctMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4gYW5kIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgbWFsbG9jIGFsZ29y
aXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDViNTNlNmEwZWFhOTAzMGFjZDMxYTEyOWNhN2VlNzdjNjc3OThj
OTEuLjdlMTdlOWYxNjQzNDE3NTEwNDZjYjM3YTA4YWI4OTJkYmIxYjFjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNy0xMyAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJl
IHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5zaWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKSBpcyBub3cgYW4gaW5zdGFuY2UgbWV0
aG9kIGFuZCBub3QgYSBjbGFzcyBvbmUsCisgICAgICAgIHNvIHVwZGF0ZSB0aGUgY2FsbCBpbiBS
ZW5kZXJMYXllckNvbXBvc2l0b3IgdG8gdXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgor
CiAyMDIxLTA3LTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXUEVdIEV4cG9zZSBzdXBwb3J0IGZvciBjbGllbnQgY2VydGlmaWNh
dGUgYXV0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA2OTc1YTMxNGJiNDRmMTVkZDg0NjVhOTRlYTE0ZTU1NzNjYmY3
NzJjLi5kNWMzNmVmNDExZDU5NWUyN2FhNmYyNjJhM2M2ODk0YjlhNDM2ZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ1IEBACisyMDIxLTA3LTEzICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUg
dGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHR5
cGUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZp
Z3VyZSB0aGUgYmVoYXZpb3IKKyAgICAgICAgb2YgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlci4g
QWRkZWQgYSBuZXcgQVBJIG1ldGhvZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5ncworICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MgbmV3IHNldHRp
bmdzIHRvIGEgV2ViUHJvY2Vzc1Bvb2wsIGFuZCB0aG9zZSBzZXR0aW5ncyB3aWxsIGJlCisgICAg
ICAgIHNldCB0byBuZXcgd2ViIHByb2Nlc3NlcyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxp
emF0aW9uIHN0YWdlLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNl
c1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Y29weSk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOgor
ICAgICAgICAod2Via2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1RvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyU2V0dGluZ3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5ncyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Vi
a2l0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIxLTA3LTEzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIEV4cG9zZSBzdXBwb3J0IGZvciBjbGllbnQgY2VydGlmaWNhdGUgYXV0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNWIwN2RmODA5NGRlMjliZmM3
MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOS4uYmFhMjU4M2ZmMTMwODAxMGU0MmQ2NTNmYWQzYWQxZGRm
MjNlMWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0z
OCw2ICszOCwxNiBAQCBERUZJTkVfTE9HX0NIQU5ORUwoTWVtb3J5UHJlc3N1cmUsIExPR19DSEFO
TkVMX1dFQktJVF9TVUJTWVNURU0pOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9IGZhbHNlOwog
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBjb25zdCBkb3VibGUgc19jb25zZXJ2
YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19zdHJp
Y3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNjU7CisjZWxzZQorc3RhdGljIGNvbnN0IGRvdWJsZSBz
X2NvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKKyNlbmRpZgorc3RhdGljIGNvbnN0
IGRvdWJsZSBzX2tpbGxUaHJlc2hvbGRGcmFjdGlvbiA9IDA7CitzdGF0aWMgY29uc3QgZG91Ymxl
IHNfcG9sbEludGVydmFsID0gMzA7CisKIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtZW1vcnlQcmVzc3VyZUhhbmRsZXI7CkBAIC01Miwx
MCArNjIsMTEgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNpbmdsZXRvbigpCiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyKCkKKyAgICA6IG1fc2V0dGluZ3Moc3RkOjptaW4oMyAqIEdCLCByYW1TaXplKCkpLCBz
X2NvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uLCBzX3N0cmljdFRocmVzaG9sZEZyYWN0aW9u
LCBzX2tpbGxUaHJlc2hvbGRGcmFjdGlvbiwgc19wb2xsSW50ZXJ2YWwpCiAjaWYgT1MoTElOVVgp
IHx8IE9TKEZSRUVCU0QpCi0gICAgOiBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQorICAgICwgbV9o
b2xkT2ZmVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmVGltZXJGaXJlZCkKICNlbGlmIE9TKFdJTkRPV1MpCi0gICAgOiBtX3dpbmRvd3NN
ZWFzdXJlbWVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6d2luZG93c01lYXN1cmVtZW50VGltZXJGaXJlZCkKKyAgICAsIG1fd2luZG93c01lYXN1
cmVtZW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojp3aW5kb3dzTWVhc3VyZW1lbnRUaW1lckZpcmVkKQogI2VuZGlmCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC03Myw3ICs4NCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRT
aG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCiAKICAgICBpZiAodXNlKSB7
CiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8
TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwotICAgICAgICBtX21lYXN1cmVt
ZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOworICAgICAgICBtX21lYXN1cmVtZW50VGlt
ZXItPnN0YXJ0UmVwZWF0aW5nKFNlY29uZHMobV9zZXR0aW5ncy5wb2xsSW50ZXJ2YWwpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbnVsbHB0cjsKIH0KQEAgLTEx
MCw2ICsxMjEsOSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0UGFnZUNvdW50KHVu
c2lnbmVkIHBhZ2VDb3VudCkKIAogc3RkOjpvcHRpb25hbDxzaXplX3Q+IE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpCiB7CisgICAgaWYgKG1fc2V0dGluZ3Mu
a2lsbFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICByZXR1cm4gbV9zZXR0aW5ncy5iYXNlVGhy
ZXNob2xkICogbV9zZXR0aW5ncy5raWxsVGhyZXNob2xkRnJhY3Rpb247CisKICAgICBzd2l0Y2gg
KG1fcHJvY2Vzc1N0YXRlKSB7CiAgICAgY2FzZSBXZWJzYW1Qcm9jZXNzU3RhdGU6OkluYWN0aXZl
OgogICAgICAgICByZXR1cm4gdGhyZXNob2xkRm9yTWVtb3J5S2lsbE9mSW5hY3RpdmVQcm9jZXNz
KG1fcGFnZUNvdW50KTsKQEAgLTExOSwzMiArMTMzLDIyIEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5
KE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkKK3NpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCiB7Ci0gICAgY29u
c3Qgc2l6ZV90IGJhc2VUaHJlc2hvbGRGb3JQb2xpY3kgPSBzdGQ6Om1pbigzICogR0IsIHJhbVNp
emUoKSk7Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGNvbnN0IGRvdWJsZSBjb25z
ZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKLSAgICBjb25zdCBkb3VibGUgc3RyaWN0
VGhyZXNob2xkRnJhY3Rpb24gPSAwLjY1OwotI2Vsc2UKLSAgICBjb25zdCBkb3VibGUgY29uc2Vy
dmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjMzOwotICAgIGNvbnN0IGRvdWJsZSBzdHJpY3RU
aHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKLSNlbmRpZgotCiAgICAgc3dpdGNoIChwb2xpY3kpIHsK
ICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6CiAgICAgICAgIHJldHVy
biAwOwogICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZToKLSAgICAgICAg
cmV0dXJuIGJhc2VUaHJlc2hvbGRGb3JQb2xpY3kgKiBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbjsKKyAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3MuYmFzZVRocmVzaG9sZCAqIG1fc2V0dGlu
Z3MuY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb247CiAgICAgY2FzZSBNZW1vcnlVc2FnZVBv
bGljeTo6U3RyaWN0OgotICAgICAgICByZXR1cm4gYmFzZVRocmVzaG9sZEZvclBvbGljeSAqIHN0
cmljdFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICByZXR1cm4gbV9zZXR0aW5ncy5iYXNlVGhy
ZXNob2xkICogbV9zZXR0aW5ncy5zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbjsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogfQogCi1zdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVf
dCBmb290cHJpbnQpCitNZW1vcnlVc2FnZVBvbGljeSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBv
bGljeUZvckZvb3RwcmludChzaXplX3QgZm9vdHByaW50KQogewogICAgIGlmIChmb290cHJpbnQg
Pj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3QpKQogICAgICAg
ICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKaW5kZXggMGI1ZDc3YmUzYzcwYjNjMTU0YjQxYmJkMjUyYjQwNWI3ZTNh
ZDEwNi4uZGYxOTdmNGI4NzYxN2U0NWQyYWZjODA3ZWEyODc4YzIwNDVmYWY3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBtX2lz
U2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9CiAgICAgdm9pZCBzZXRVbmRlck1lbW9yeVByZXNz
dXJlKGJvb2wpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZW1vcnlVc2FnZVBv
bGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVtb3J5VXNhZ2VQb2xpY3kgY3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREaXNwYXRjaFF1ZXVl
KE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiYpOwpAQCAtMTQ3LDYgKzE0Nyw2NiBAQCBw
dWJsaWM6CiAgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzX2xvZ2dpbmdF
bmFibGVkOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgU2V0dGluZ3MgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFNldHRpbmdzKCkgPSBkZWZhdWx0Owor
ICAgICAgICBTZXR0aW5ncyhzaXplX3QgYmFzZSwgZG91YmxlIGNvbnNlcnZhdGl2ZSwgZG91Ymxl
IHN0cmljdCwgZG91YmxlIGtpbGwsIGRvdWJsZSBpbnRlcnZhbCkKKyAgICAgICAgICAgIDogYmFz
ZVRocmVzaG9sZChiYXNlKQorICAgICAgICAgICAgLCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbihjb25zZXJ2YXRpdmUpCisgICAgICAgICAgICAsIHN0cmljdFRocmVzaG9sZEZyYWN0aW9u
KHN0cmljdCkKKyAgICAgICAgICAgICwga2lsbFRocmVzaG9sZEZyYWN0aW9uKGtpbGwpCisgICAg
ICAgICAgICAsIHBvbGxJbnRlcnZhbChpbnRlcnZhbCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBiYXNlVGhyZXNo
b2xkOworICAgICAgICAgICAgZW5jb2RlciA8PCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlv
bjsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAg
ICAgICAgICBlbmNvZGVyIDw8IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgcG9sbEludGVydmFsOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KKyAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHNpemVfdCBiYXNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShiYXNl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGRvdWJsZSBj
b25zZXJ2YXRpdmU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnNlcnZhdGl2
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBkb3VibGUg
c3RyaWN0OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpY3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZG91YmxlIGtpbGw7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtpbGwpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgZG91YmxlIGludGVydmFsOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbnRlcnZhbCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICBzZXR0aW5ncy5iYXNlVGhyZXNob2xkID0gYmFzZTsKKyAgICAgICAg
ICAgIHNldHRpbmdzLmNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gY29uc2VydmF0aXZl
OworICAgICAgICAgICAgc2V0dGluZ3Muc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSBzdHJpY3Q7
CisgICAgICAgICAgICBzZXR0aW5ncy5raWxsVGhyZXNob2xkRnJhY3Rpb24gPSBraWxsOworICAg
ICAgICAgICAgc2V0dGluZ3MucG9sbEludGVydmFsID0gaW50ZXJ2YWw7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBiYXNlVGhyZXNob2xkIHsg
MCB9OworICAgICAgICBkb3VibGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24geyAwIH07
CisgICAgICAgIGRvdWJsZSBzdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiB7IDAgfTsKKyAgICAgICAg
ZG91YmxlIGtpbGxUaHJlc2hvbGRGcmFjdGlvbiB7IDAgfTsKKyAgICAgICAgZG91YmxlIHBvbGxJ
bnRlcnZhbCB7IDAgfTsKKyAgICB9OworICAgIHZvaWQgc2V0U2V0dGluZ3MoY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzKSB7IG1fc2V0dGluZ3MgPSBzZXR0aW5nczsgfQorCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVsZWFzZU1lbW9yeShDcml0aWNhbCwgU3luY2hyb25vdXMgPSBTeW5j
aHJvbm91czo6Tm8pOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmVnaW5TaW11bGF0
ZWRNZW1vcnlQcmVzc3VyZSgpOwpAQCAtMTYxLDYgKzIyMSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpOwor
ICAgIHNpemVfdCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kpOworICAgIE1l
bW9yeVVzYWdlUG9saWN5IHBvbGljeUZvckZvb3RwcmludChzaXplX3QpOworCiAgICAgdm9pZCBt
ZW1vcnlQcmVzc3VyZVN0YXR1c0NoYW5nZWQoKTsKIAogICAgIHZvaWQgdW5pbnN0YWxsKCk7CkBA
IC0xOTgsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9k
aWRFeGNlZWRJbmFjdGl2ZUxpbWl0V2hpbGVBY3RpdmVDYWxsYmFjazsKICAgICBMb3dNZW1vcnlI
YW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAorICAgIFNldHRpbmdzIG1fc2V0dGluZ3M7CisK
ICNpZiBPUyhXSU5ET1dTKQogICAgIHZvaWQgd2luZG93c01lYXN1cmVtZW50VGltZXJGaXJlZCgp
OwogICAgIFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbV93aW5kb3dzTWVh
c3VyZW1lbnRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMTk3NGU5YmE4MTA5MTgwNzBmNTQ3ZGZkZTFiY2FiMDEy
N2NkYzc1Mi4uNDhiNzAyOGFkZjdjOTJhZDNmZTNkYTBkN2EzNjBmYjJmOWY3MzZhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTUyNiw3ICs1MjYsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29t
cG9zaXRpbmdQb2xpY3koKQogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtZW1vcnlQb2xpY3lD
YWNoaW5nRHVyYXRpb24gPSAyX3M7CiAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKICAgICBpZiAobm93IC0gY2FjaGVkTWVtb3J5UG9saWN5VGltZSA+IG1lbW9yeVBvbGljeUNh
Y2hpbmdEdXJhdGlvbikgewotICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOworICAgICAgICBjYWNoZWRN
ZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmN1cnJlbnRN
ZW1vcnlVc2FnZVBvbGljeSgpOwogICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3lUaW1lID0gbm93
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZDY3OTc4NWNhM2JkNThiMmVk
MmNlMDg3NjVlYjU1NzAxYmY1ZTcyMy4uMTczZDQxNWY0M2E1M2I3NjVjMGIyM2IxMjEwZWY1ODNl
ZDU1OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMTEsNiArMTExLDcgQEAgc2V0
KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNZWRp
YUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWltZUluZm8uaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZTM5N2MwN2I3Y2Y3MTcwZjRkODMzOTk3ZDQ5OWI0
YWM3ZmZjZDg5OC4uODY3MjRjNjdlODg3MWE5NDBhNGY5M2Y2NWNmZjI1NDhhNGMxZjMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNDQsNiArMTQ0LDcgQEAgc2V0KFdQRV9BUElfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1p
c3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0TWltZUluZm8uaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAy
NzgxNGY3YjE1ODA0NWI5MDg2YzQ2YzI5NDkwODU2NjE0OWI2MjVmLi4wOTM3ODIzNWU0OGQyMjI1
ZDJiZjFkMmJhMWQ5ZjczN2ZmYTJiMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMjA4LDYgKzIwOCwxMCBA
QCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIAogICAgIGVuY29kZXIgPDwgYWNjZXNzaWJpbGl0eVBy
ZWZlcmVuY2VzOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgZW5j
b2RlciA8PCBtZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5nczsKKyNlbmRpZgogfQogCiBib29s
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC01NjksNiAr
NTczLDE0IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBwYXJhbWV0ZXJzLmFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyA9IFdURk1vdmUoKmFjY2Vz
c2liaWxpdHlQcmVmZXJlbmNlcyk7CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpTZXR0aW5ncz4+IG1lbW9yeVByZXNzdXJlSGFuZGxlclNldHRpbmdzOworICAgIGRlY29kZXIg
Pj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3M7CisgICAgaWYgKCFtZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJTZXR0aW5ncykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMu
bWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3MgPSBXVEZNb3ZlKCptZW1vcnlQcmVzc3VyZUhh
bmRsZXJTZXR0aW5ncyk7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggY2M4MzUyOGRjMWRhNDMyMWZlNDZmNzY3ZjJlYzQ3ZTc4YjI4YmY2MC4uYjcwMGM0Y2M1NTIy
MjkyYWM5ZDRiMmQ0MzA2NjBjOTMyMmE3Y2NmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTIsNiArNTIsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRGF0YTsKIH0KQEAgLTI0OSw2
ICsyNTMsMTAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlm
CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liaWxpdHlQcmVmZXJl
bmNlczsKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0
aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpTZXR0aW5ncz4gbWVtb3J5UHJlc3N1cmVIYW5k
bGVyU2V0dGluZ3M7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQKaW5kZXggYTQzOTFiZTdiNjM3ZmQ5NmQ4ODBjYjA2ODM4YjZkZWI1ZGI1NTJiNi4u
MDUxYWE3ZjA3OTA3NDhkMGYwMmMxNTU5NmY4MmQwOTc5ZGU0OGRhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0CkBAIC0xNDgsNiArMTQ4LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNaW1lSW5mby5jcHAgQG5vLXVuaWZ5CitV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGY4ZmIxNTExZjJhMDE5YTA4YTg5NmY3
Y2JmNDVjYTQ3MGRhMjgxODUuLjJhNGY0MDZhYmI4YWZiMzA0ZWUzOGQ2MmIzYTJiZjc2MDg5NGNk
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTM5LDYgKzEzOSw3IEBAIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHQu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVy
bWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZp
Z2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZp
Z2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2NmMTliMDc4NTkxM2I5NzEwZDVhODM1OWE2MGZjODQ4MmMxNWZhMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgiCisKKyNpbmNsdWRlIDx3dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmg+CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncworICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIGJveGVkIHR5cGUgcmVwcmVzZW50
aW5nIHRoZSBzZXR0aW5ncyBmb3IgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlcgorICogQFRpdGxl
OiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJD
b250ZXh0LgorICoKKyAqIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgaXMgYSBib3hlZCB0
eXBlIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBzb21lIGN1c3RvbSBzZXR0aW5ncworICog
dG8gY29udHJvbCBob3cgdGhlIG1lbW9yeSBwcmVzc3VyZSBzaXR1YXRpb25zIGFyZSBoYW5kbGVk
IGJ5IHRoZSBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorICoKKyAqIFlvdSBuZWVkIHRvIGNhbGwgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3MoKSB3aXRoIGEgV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICogaW5zdGFuY2UuCisgKgorICogU2luY2U6IDIu
MzQKKyAqLworc3RydWN0IF9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIHsKKyAgICBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OlNldHRpbmdzIHNldHRpbmdzOworfTsKKworR19ERUZJTkVfQk9Y
RURfVFlQRShXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLCB3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzLCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHksIHdlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSk7CisKKy8qKgorICogd2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19uZXc6CisgKiBAbWVtb3J5X2xpbWl0OiBhbW91bnQgb2YgbWVt
b3J5IChpbiBNQikgdGhhdCB0aGUgcHJvY2VzcyBpcyBhbGxvd2VkIHRvIHVzZS4gVGhlIGRlZmF1
bHQgdmFsdWUKKyAqICAgaXMgdGhlIHN5c3RlbSdzIFJBTSBzaXplIHdpdGggYSBtYXhpbXVtIG9m
IDNHQi4KKyAqIEBjb25zZXJ2YXRpdmVfdGhyZXNob2xkOiBmcmFjdGlvbiBvZiB0aGUgbWVtb3J5
IGxpbWl0IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUgcG9saWN5IHN0YXJ0cworICogICB3b3JraW5n
LiBJdCBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLiBUaGUgZGVmYXVsdCB2YWx1ZSBp
cyAwLjMzLgorICogQHN0cmljdF90aHJlc2hvbGQ6IGZyYWN0aW9uIG9mIHRoZSBtZW1vcnkgbGlt
aXQgd2hlcmUgdGhlIHN0cmljdCBwb2xpY3kgc3RhcnRzIHdvcmtpbmcuIEl0IG11c3QKKyAqICAg
YmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEsIGFuZCBpdCBtdXN0IGJlIGJpZ2dlciB0aGFuIHRo
ZSBAY29uc2VydmF0aXZlX3RocmVzaG9sZC4gVGhlIGRlZmF1bHQKKyAqICAgdmFsdWUgaXMgMC41
LgorICogQGtpbGxfdGhyZXNob2xkOiBmcmFjdGlvbiBvZiB0aGUgbWVtb3J5IGxpbWl0IHdoZXJl
IHRoZSBwcm9jZXNzIGlzIGtpbGxlZCBiZWNhdXNlIG9mIGV4Y2Vzc2l2ZQorICogICBtZW1vcnkg
dXNhZ2UuIFZhbHVlcyBiaWdnZXIgdGhhbiAxIGFyZSBhbGxvd2VkLCBhbmQgdGhlIHZhbHVlIG11
c3QgYmUgYmlnZ2VyIHRoYW4gQHN0cmljdF90aHJlc2hvbGQuCisgKiAgIFRoZSBkZWZhdWx0IHZh
bHVlIGlzIDAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHByb2Nlc3MgaXMgbmV2ZXIga2lsbGVkLgor
ICogQHBvbGxfaW50ZXJ2YWw6IHBlcmlvZCAoaW4gc2Vjb25kcykgYmV0d2VlbiBtZW1vcnkgdXNh
Z2UgbWVhc3VyZW1lbnRzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzMCBzZWNvbmRzLgorICoKKyAq
IENyZWF0ZSBhIG5ldyAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB3aXRoIHRoZSBnaXZl
biB2YWx1ZXMuCisgKgorICogVGhlIG1lbW9yeSBwcmVzc3VyZSBzeXN0ZW0gaW1wbGVtZW50ZWQg
aW5zaWRlIHRoZSBkaWZmZXJlbnQgcHJvY2VzcyB3aWxsIHRyeSB0byBrZWVwIHRoZSBtZW1vcnkg
dXNhZ2UKKyAqIHVuZGVyIHRoZSBAbWVtb3J5X2xpbWl0IHBhcmFtZXRlci4gSW4gb3JkZXIgdG8g
ZG8gdGhhdCwgaXQgd2lsbCBjaGVjayB0aGUgdXNlciBtZW1vcnkgZXZlcnkgQHBvbGxfaW50ZXJ2
YWwKKyAqIHNlY29uZHMgYW5kIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCB0cnkgdG8gcmVsZWFz
ZSBtZW1vcnkuIFRoZSB0aHJlc2hvbGRzIHBhc3NlZCB3aWxsIGRlZmluZSBob3cgdXJnZW50Cisg
KiBpcyB0byByZWxlYXNlIHRoYXQgbWVtb3J5LgorICoKKyAqIFRha2UgaW50byBhY2NvdW50IHRo
YXQgYmFkbHkgZGVmaW5lZCBwYXJhbWV0ZXJzIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgcGVyZm9y
bWFuY2Ugb2YgdGhlIGVuZ2luZS4gRm9yCisgKiBleGFtcGxlLCBzZXR0aW5nIEBtZW1vcnlfbGlt
aXQgdG9vIGxvdyB3aXRoIGEgZmFzdCBAcG9sbF9pbnRlcnZhbCBjYW4gY2F1c2UgdGhlIHByb2Nl
c3MgdG8gY29uc3RhbnRseQorICogYmUgdHJ5aW5nIHRvIHJlbGVhc2UgbWVtb3J5LgorICoKKyAq
IFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBuZXcgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3Mgb3IgJU5VTEwgaWYgdGhlIHBhc3NlZCBwYXJhbWV0ZXJzCisgKiBwcm9kdWNlIGFuIGlu
dmFsaWQgY29uZmlndXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldyhj
b25zdCBndWludCBtZW1vcnlfbGltaXQsIGNvbnN0IGdkb3VibGUgY29uc2VydmF0aXZlX3RocmVz
aG9sZCwgY29uc3QgZ2RvdWJsZSBzdHJpY3RfdGhyZXNob2xkLCBjb25zdCBnZG91YmxlIGtpbGxf
dGhyZXNob2xkLCBjb25zdCBnZG91YmxlIHBvbGxfaW50ZXJ2YWwpCit7CisgICAgaWYgKCFtZW1v
cnlfbGltaXQgfHwgIWNvbnNlcnZhdGl2ZV90aHJlc2hvbGQgfHwgIXN0cmljdF90aHJlc2hvbGQg
fHwgIXBvbGxfaW50ZXJ2YWwpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGNv
bnNlcnZhdGl2ZV90aHJlc2hvbGQgPj0gc3RyaWN0X3RocmVzaG9sZCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBpZiAoa2lsbF90aHJlc2hvbGQgJiYgKHN0cmljdF90aHJlc2hvbGQg
Pj0ga2lsbF90aHJlc2hvbGQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzdGF0aWNf
Y2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oZmFzdE1hbGxvYyhzaXplb2YoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncykpKTsKKyAgICBtZW1vcnlQcmVzc3VyZVNldHRpbmdz
LT5zZXR0aW5ncy5iYXNlVGhyZXNob2xkID0gbWVtb3J5X2xpbWl0ICogTUI7CisgICAgbWVtb3J5
UHJlc3N1cmVTZXR0aW5ncy0+c2V0dGluZ3MuY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24g
PSBjb25zZXJ2YXRpdmVfdGhyZXNob2xkOworICAgIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MtPnNl
dHRpbmdzLnN0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gc3RyaWN0X3RocmVzaG9sZDsKKyAgICBt
ZW1vcnlQcmVzc3VyZVNldHRpbmdzLT5zZXR0aW5ncy5raWxsVGhyZXNob2xkRnJhY3Rpb24gPSBr
aWxsX3RocmVzaG9sZDsKKyAgICBtZW1vcnlQcmVzc3VyZVNldHRpbmdzLT5zZXR0aW5ncy5wb2xs
SW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsOworCisgICAgcmV0dXJuIG1lbW9yeVByZXNzdXJlU2V0
dGluZ3M7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19jb3B5
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICog
TWFrZSBhIGNvcHkgb2YgQHNldHRpbmdzLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxs
KTogQSBjb3B5IG9mIG9mIHRoZSBwYXNzZWQgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mu
CisgKgorICogU2luY2U6IDIuMzQKKyAqLworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyog
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19jb3B5KFdlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdz
LCBudWxscHRyKTsKKworICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIGNvcHkgPSBz
dGF0aWNfY2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oZmFzdFplcm9lZE1hbGxv
YyhzaXplb2YoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncykpKTsKKworICAgIGNvcHktPnNl
dHRpbmdzID0gc2V0dGluZ3MtPnNldHRpbmdzOworCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKy8q
KgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlOgorICogQHNldHRpbmdz
OiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICogRnJlZSB0aGUgI1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUoV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisK
KyAgICBmYXN0RnJlZShzZXR0aW5ncyk7Cit9CisKK2NvbnN0IE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6U2V0dGluZ3MmIHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NUb01lbW9yeVByZXNzdXJl
SGFuZGxlclNldHRpbmdzKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKQor
eworICAgIHJldHVybiBzZXR0aW5ncy0+c2V0dGluZ3M7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5nc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzMyY2NlZDZhMjU5N2JlMTAzYzUw
MDIwNGQ5ZTk3MzVjYmM3MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1ByaXZhdGUuaApAQCAt
MCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKworY29uc3QgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpTZXR0aW5ncyYgd2Via2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1RvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3MoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAppbmRleCA2ZGQ5ZjIwZTRmZjJiZGEwMTg0ZDA2NDUzMDFjZWYyMmU0N2RjZjE1Li5k
NzMxNTUzZGFlNjUyMGY3YzMxMGFjNjczZjJmN2M0YzIyYzVkZjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByb3RvY29sSGFuZGxlci5o
IgpAQCAtMTgwNyw2ICsxODA4LDMxIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
dXNlX3N5c3RlbV9hcHBlYXJhbmNlX2Zvcl9zY3JvbGxiYXJzKFdlYktpdFdlYkNvCiB9CiAjZW5k
aWYKIAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nczoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0CisgKiBAdGFyZ2V0X3Byb2Nl
c3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcm9jZXNzCisgKiBAc2V0dGluZ3M6
IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBTZXQgdGhlIG1lbW9yeSBw
cmVzc3VyZSBzZXR0aW5ncyB0byBiZSB1c2VkIGJ5IHRoZSBwcm9jZXNzZXMgb2YgdHlwZQorICog
QHRhcmdldF9wcm9jZXNzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKgorICovCit2b2lkIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcm9jZXNzIHRhcmdldFBy
b2Nlc3MsIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKworICAgIHN3
aXRjaCAodGFyZ2V0UHJvY2VzcykgeworICAgIGNhc2UgV0VCS0lUX01FTU9SWV9QUkVTU1VSRV9T
RVRUSU5HU19XRUJfUFJPQ0VTUzoKKyAgICAgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PnNldFdlYlByb2Nlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5ncyh3ZWJraXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzVG9NZW1vcnlQcmVzc3VyZUhhbmRsZXJTZXR0aW5ncyhzZXR0aW5ncykp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dEluaXRpYWxpemVOb3RpZmlj
YXRpb25QZXJtaXNzaW9ucyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIGdfc2ln
bmFsX2VtaXQoY29udGV4dCwgc2lnbmFsc1tJTklUSUFMSVpFX05PVElGSUNBVElPTl9QRVJNSVNT
SU9OU10sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTcxMDFl
ZjY3YjljMmUxZjdlZjFlOWYzM2I3NzUyNjBkYzJmYjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5nc19oCisjZGVmaW5lIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaAorCisjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9T
RVRUSU5HUyAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSgpKQorCisv
KioKKyAqIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcm9jZXNzOgorICogQFdFQktJVF9N
RU1PUllfUFJFU1NVUkVfU0VUVElOR1NfV0VCX1BST0NFU1M6IEFwcGx5IHNldHRpbmdzIHRvIHdl
YiBwcm9jZXNzZXMuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgcHJv
Y2Vzc2VzIGFmZmVjdGVkIGJ5IHRoZSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy4KKyAq
CisgKiBTaW5jZTogMi4zNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9NRU1PUllf
UFJFU1NVUkVfU0VUVElOR1NfV0VCX1BST0NFU1MKK30gV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5nc1Byb2Nlc3M7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VC
S0lUX0FQSSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICoKK3dlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3NfbmV3ICAgICAgICAgIChjb25zdCBndWludCAgICAgICAgICAgICAgICAg
ICAgICAgbWVtb3J5X2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdkb3VibGUgICAgICAgICAgICAgICAgICAgICBjb25zZXJ2YXRpdmVf
dGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdkb3VibGUgICAgICAgICAgICAgICAgICAgICBzdHJpY3RfdGhyZXNob2xkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdkb3VibGUg
ICAgICAgICAgICAgICAgICAgICBraWxsX3RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZG91YmxlICAgICAgICAgICAgICAgICAg
ICAgcG9sbF9pbnRlcnZhbCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyAqCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkgICAgICAgICAoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSAgICAgICAgIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAv
KiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNWE0YWRmOGI4ZWIz
NDg4ZTQ5M2NjZTg4NjYzNzQxYzI5ODQ3NzFiOC4uZGYwMmRiNTQyNDYwOWNlNWZlODZiNWJmYTU3
NmQ3N2EwYjE2MWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdERvd25sb2FkLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0TmV0d29ya1Byb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFNlY3VyaXR5TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5oPgpAQCAtMzAwLDYgKzMwMSwxMCBAQCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Nyb2xsYmFycyAoV2ViS2l0V2ViQ29udGV4dAog
V0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVtX2Fw
cGVhcmFuY2VfZm9yX3Njcm9sbGJhcnMgKFdlYktpdFdlYkNvbnRleHQgICAgICAqY29udGV4dCk7
CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3MgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAgICAgICAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3MgIHRhcmdldF9wcm9jZXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICAgICAgICAqc2V0dGluZ3MpOwogR19FTkRfREVDTFMK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBiNWYzZTdkNjBk
MjAyZTBjNjViOTc3ODNlZGU3NGUwOWY3YWU3OGI5Li5lZGIwYTIwYjFhOWY5MWU2MjRjOTZmMjE5
ZGUzMzQ4YjRlZmRmNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTcx
LDYgKzcxLDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2luaXRpYWxpemVfbm90aWZpY2F0aW9uX3Bl
cm1pc3Npb25zCiB3ZWJraXRfd2ViX2NvbnRleHRfc2VuZF9tZXNzYWdlX3RvX2FsbF9leHRlbnNp
b25zCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3VzZV9zeXN0ZW1fYXBwZWFyYW5jZV9mb3Jfc2Ny
b2xsYmFycwogd2Via2l0X3dlYl9jb250ZXh0X2dldF91c2Vfc3lzdGVtX2FwcGVhcmFuY2VfZm9y
X3Njcm9sbGJhcnMKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzCiAKIDxTVUJTRUNUSU9OIFVSSSBTY2hlbWU+CiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2Fs
bGJhY2sKQEAgLTE5NTMsNCArMTk1NCwxOCBAQCBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRl
CiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElP
Tj4KKzxGSUxFPldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzCitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJvY2Vzcwor
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfY29weQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlCisK
KzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dl
dF90eXBlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNT
VVJFX1NFVFRJTkdTCis8L1NFQ1RJT04+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKaW5kZXggZWNiZTQzM2VkODg4MzUzYjFlNjAxMzk0M2I0NDYzODM1YzM1ODJk
Mi4uYjdkMjc0MWM0YjJjMWFkNGUzNGExZmFiNDhmZWM2MWFmMWM2MTAyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdE1pbWVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRO
YXZpZ2F0aW9uQWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFm
YTY0ZmYxMzhlYWUxODI3NTg3NGYyZGY4ODg2NDEyZTQ1ZDhhMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJ
VDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3NfaAorI2RlZmluZSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKworI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5H
UyAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSgpKQorCisvKioKKyAq
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcm9jZXNzOgorICogQFdFQktJVF9NRU1PUllf
UFJFU1NVUkVfU0VUVElOR1NfV0VCX1BST0NFU1M6IEFwcGx5IHNldHRpbmdzIHRvIHdlYiBwcm9j
ZXNzZXMuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgcHJvY2Vzc2Vz
IGFmZmVjdGVkIGJ5IHRoZSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy4KKyAqCisgKiBT
aW5jZTogMi4zNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9NRU1PUllfUFJFU1NV
UkVfU0VUVElOR1NfV0VCX1BST0NFU1MKK30gV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1By
b2Nlc3M7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICoKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfbmV3ICAgICAgICAgIChjb25zdCBndWludCAgICAgICAgICAgICAgICAgICAgICAg
bWVtb3J5X2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdkb3VibGUgICAgICAgICAgICAgICAgICAgICBjb25zZXJ2YXRpdmVfdGhyZXNo
b2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdkb3VibGUgICAgICAgICAgICAgICAgICAgICBzdHJpY3RfdGhyZXNob2xkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdkb3VibGUgICAgICAg
ICAgICAgICAgICAgICBraWxsX3RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnZG91YmxlICAgICAgICAgICAgICAgICAgICAgcG9s
bF9pbnRlcnZhbCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAq
Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkgICAgICAgICAoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggNGNlOTNhNGUwNzkwOTIyZjkx
Mzk1NjJlN2NiZjZmODQwOWFkOGRmOC4uNDQzMDAzOGM5ODI5N2QxZmE4ZTM3ZjU4ODVjZjgzNzk2
MDBjZTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJDb250ZXh0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0RG93
bmxvYWQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVk
ZSA8d3BlL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdE5ldHdvcmtQcm94
eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3VyaXR5TWFuYWdlci5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CkBAIC0yODksNiArMjkwLDEwIEBA
IFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3NlbmRfbWVzc2FnZV90b19hbGxf
ZXh0ZW5zaW9ucyAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
VXNlck1lc3NhZ2UgICAgICAgICAgICAgKm1lc3NhZ2UpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfY29udGV4dF9zZXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzICAgICAoV2ViS2l0
V2ViQ29udGV4dCAgICAgICAgICAgICAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3NQcm9jZXNzICB0YXJnZXRfcHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyAgICAgICAgKnNldHRpbmdzKTsKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CmluZGV4IDRiNjZiYjk1ZjEzMjZiZDgzODMyYjY4ZjQyOWMyMWVmNjg4MDhmMzguLjQxYWM3
NDcxMWEwMjZjNDBiZjMwYWI2ZjE3MTM1MjI0NDc5Yjk5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQK
QEAgLTQ2LDYgKzQ2LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2dldF9wcm9jZXNzX21vZGVsCiB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Byb2Nlc3NfbW9kZWwKIHdlYmtpdF93ZWJfY29udGV4dF9p
bml0aWFsaXplX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9ucwogd2Via2l0X3dlYl9jb250ZXh0X3Nl
bmRfbWVzc2FnZV90b19hbGxfZXh0ZW5zaW9ucword2Via2l0X3dlYl9jb250ZXh0X3NldF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3MKIAogPFNVQlNFQ1RJT04gVVJJIFNjaGVtZT4KIFdlYktpdFVS
SVNjaGVtZVJlcXVlc3RDYWxsYmFjawpAQCAtMTY1MSwzICsxNjUyLDE4IEBAIFdFQktJVF9XRUJT
SVRFX1BPTElDSUVTX0dFVF9DTEFTUwogV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZQogd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8
RklMRT5XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzPC9GSUxFPgorV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1Byb2Nlc3MKK3dlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2NvcHkKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZQorCis8U1VC
U0VDVElPTiBQcml2YXRlPgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlw
ZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9T
RVRUSU5HUworPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0
LmgKaW5kZXggODc5MjkyNTdiZjczYWJhNjg0YTM4MGFjY2Q4YzFiYmIzOTRiYWQ4Ny4uNWM5M2Q3
NjBmNzM0YTEyZjYxNDg5OTU0NTEzNWZkZjc3MDE2NDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8d3BlL1dl
YktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRN
ZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0TWltZUluZm8uaD4K
ICNpbmNsdWRlIDx3cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDZiNDg2Nzg1YWI5MDhmNzMxMGMyYjg0YWJkMGJmZGQ3ZDRj
YzVhYTguLjgxNmUzZjMyNTBkMjRkMDkyY2ViYjU0MTc3NDhiNzQzYmI3MjI0OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDc1LDYgKzQ3NSw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoVXNl
ck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4mJik+JiYg
aGFuZGxlcikgeyBtX3VzZXJNZXNzYWdlSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7IH0KICAg
ICBjb25zdCBGdW5jdGlvbjx2b2lkKFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVXNlck1lc3NhZ2UmJik+JiYpPiYgdXNlck1lc3NhZ2VIYW5kbGVyKCkgY29uc3QgeyByZXR1
cm4gbV91c2VyTWVzc2FnZUhhbmRsZXI7IH0KKworICAgIHZvaWQgc2V0V2ViUHJvY2Vzc01lbW9y
eVByZXNzdXJlSGFuZGxlclNldHRpbmdzKGNvbnN0IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6U2V0
dGluZ3MmIHNldHRpbmdzKSB7IG1fd2ViUHJvY2Vzc01lbW9yeVByZXNzdXJlSGFuZGxlclNldHRp
bmdzID0gc2V0dGluZ3M7IH0KICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVk
aWFUb2tlbiB3ZWJQcm9jZXNzV2l0aEF1ZGlibGVNZWRpYVRva2VuKCkgY29uc3Q7CkBAIC03NjYs
NiArNzY4LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPENTdHJpbmcsIFNhbmRib3hQZXJtaXNz
aW9uPiBtX2V4dHJhU2FuZGJveFBhdGhzOwogCiAgICAgRnVuY3Rpb248dm9pZChVc2VyTWVzc2Fn
ZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKT4gbV91c2VyTWVz
c2FnZUhhbmRsZXI7CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
U2V0dGluZ3M+IG1fd2ViUHJvY2Vzc01lbW9yeVByZXNzdXJlSGFuZGxlclNldHRpbmdzOwogI2Vu
ZGlmCiAKICAgICBXZWJQcm9jZXNzV2l0aEF1ZGlibGVNZWRpYUNvdW50ZXIgbV93ZWJQcm9jZXNz
V2l0aEF1ZGlibGVNZWRpYUNvdW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggODRhYTY1MzI3OGY4MzE4YjFkY2Y3
YzliYTE1ZTgwMjJmODIwNzYzYi4uOTI0YTc3YWI1MGM4OGQwMGMxZTFlZmVkODFkM2M2ZjhhOWFh
NTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UG9vbEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Bvb2xHTGliLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
CiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcGFyYW1ldGVycy51c2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyA9IG1fY29uZmlndXJhdGlvbi0+dXNlU3lzdGVtQXBw
ZWFyYW5jZUZvclNjcm9sbGJhcnMoKTsKICNlbmRpZgorCisgICAgcGFyYW1ldGVycy5tZW1vcnlQ
cmVzc3VyZUhhbmRsZXJTZXR0aW5ncyA9IG1fd2ViUHJvY2Vzc01lbW9yeVByZXNzdXJlSGFuZGxl
clNldHRpbmdzOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVD
b250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NH
TGliLmNwcAppbmRleCBiYWQwMDE0NmQ4ODYzNTIzMGIwYTU3MWE5OTM5YzIxY2Q4YTY0ODIyLi5h
YmEyZGU3OTgyZjJmYmU5YWFmNTBiNDBmOWZjYjFhZTkxZWExYzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCkBAIC0xMDUsNiArMTA1
LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKICNpZiBQTEFURk9STShHVEspICYmICFVU0Uo
R1RLNCkKICAgICBzZXRVc2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyhwYXJhbWV0ZXJz
LnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKTsKICNlbmRpZgorCisgICAgaWYgKHBh
cmFtZXRlcnMubWVtb3J5UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3MpCisgICAgICAgIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuc2V0U2V0dGluZ3MoKnBhcmFtZXRlcnMubWVtb3J5
UHJlc3N1cmVIYW5kbGVyU2V0dGluZ3MpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3Jt
U2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMmJikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA3NDExYmRhN2Q0ZDNkNGQ2MGRiZTU3YzFmMmZhOTljODRhNTQ5ZjMyLi4zNzM5OGZhNTkyZmNi
ZjVlYjExMWRlNjZjOWM4ZGNlZDg4MTE4MzA5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDctMTMgIE1pZ3Vl
bCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93
IHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgdGhlIG5ldyB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5ncyBtZXRob2QuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAo
TWVtb3J5UHJlc3N1cmVUZXN0Ojp3ZWJQcm9jZXNzVGVybWluYXRlZENhbGxiYWNrKToKKyAgICAg
ICAgKE1lbW9yeVByZXNzdXJlVGVzdDo6d2FpdFVudGlsV2ViUHJvY2Vzc1Rlcm1pbmF0ZWQpOgor
ICAgICAgICAodGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MpOgorICAgICAgICAoYmVmb3JlQWxs
KToKKwogMjAyMS0wNy0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bV1BFXSBFeHBvc2Ugc3VwcG9ydCBmb3IgY2xpZW50IGNlcnRp
ZmljYXRlIGF1dGgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDllOTIzM2FiMDkwNzA5
OWEwMmI3ODRjMjg0ZmVkMTk3MzNmNjQyNzYuLjNiMWQ3OWNmNjhkZDJiNGQ4NmQ5ZDhlZTBjZTEx
YTI1MGI5MmJhODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNzcwLDYgKzc3MCw2
MiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MoUHJveHlUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogI2VuZGlmCiB9CiAKK2NsYXNzIE1lbW9yeVByZXNzdXJlVGVz
dCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShNZW1vcnlQcmVzc3VyZVRlc3QpOworCisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rl
cm1pbmF0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNz
VGVybWluYXRpb25SZWFzb24gcmVhc29uLCBNZW1vcnlQcmVzc3VyZVRlc3QqIHRlc3QpCisgICAg
eworICAgICAgICB0ZXN0LT5tX3Rlcm1pbmF0aW9uUmVhc29uID0gcmVhc29uOworICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4od2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayksIHRlc3QpOworICAgICAg
ICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQg
d2FpdFVudGlsV2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdF9hZnRlcihtX3dlYlZpZXcsICJ3ZWItcHJvY2Vzcy10ZXJtaW5hdGVkIiwgR19DQUxM
QkFDSyhNZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NUZXJtaW5hdGVkQ2FsbGJhY2spLCB0
aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAg
IFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiBtX3Rlcm1pbmF0aW9uUmVhc29uIHsg
V0VCS0lUX1dFQl9QUk9DRVNTX0NSQVNIRUQgfTsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICAvLyBBbiBlbXB0eSB2aWV3IHVzZXMgYXJvdW5kIDdNQiBvZiBtZW1vcnkuIFdl
J3JlIHNldHRpbmcgYSBtYXhpbXVtIG9mIDIwTUIgaGVyZSwgcG9sbGluZyBldmVyeSAwLjUgc2Vj
b25kcywKKyAgICAvLyBhbmQgdGhlIGtpbGwgZnJhY3Rpb24gaXMgMSwgc28gdGhlIHdlYiBwcm9j
ZXNzIHdpbGwgYmUga2lsbGVkIHdoZW4gaXQgZXhjZWVkcyAyME1CLgorICAgIC8vIFRoZSB0ZXN0
IGh0bWwgd2lsbCBhbGxvY2F0ZSBhIGNhbnZhcyBvZiAzMDAweDMwMDAsIHdoaWNoIHJlcXVpcmVz
IGFyb3VuZCAzNk1CIG9mIG1lbW9yeSwgc28gb25jZSBpdCBnZXRzCisgICAgLy8gY3JlYXRlZCwg
dGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciB3aWxsIGRldGVjdCB0aGF0IHRoZSBtZW1vcnkgdXNh
Z2UgaXMgdG9vIGhpZ2ggYW5kIGtpbGwgdGhlIHdlYiBwcm9jZXNzLgorICAgIC8vIFRoaXMgdHJp
Z2dlcnMgdGhlIHdlYi1wcm9jZXNzLXRlcm1pbmF0ZWQgc2lnbmFsIGluIHRoZSB2aWV3IHdpdGgg
V0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1JVAorICAgIC8vIGFzIHRoZSB0
ZXJtaW5hdGlvbiByZWFzb24uCisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbCA9CisgICAg
ICAgICI8aHRtbD4iCisgICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgICA8c2NyaXB0PiIK
KyAgICAgICAgIiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IgorICAgICAgICAiICAgICAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOyIKKyAgICAg
ICAgIiAgICAgICAgY2FudmFzLndpZHRoID0gMzAwMDsiCisgICAgICAgICIgICAgICAgIGNhbnZh
cy5oZWlnaHQgPSAzMDAwOyIKKyAgICAgICAgIiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnKTsiCisgICAgICAgICIgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0g
J2dyZWVuJzsiCisgICAgICAgICIgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMzAwMCwg
MzAwMCk7IgorICAgICAgICAiICAgICAgfSwgMCk7IgorICAgICAgICAiICAgIDwvc2NyaXB0PiIK
KyAgICAgICAgIiAgICA8Y2FudmFzIGlkPSdjYW52YXMnPjwvY2FudmFzPiIKKyAgICAgICAgIiAg
PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncyogbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfbmV3KDIwLCAwLjMsIDAuNSwgMSwgMC41KTsKKyAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5ncyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCks
IFdFQktJVF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1NfV0VCX1BST0NFU1MsIG1lbW9yeVByZXNz
dXJlU2V0dGluZ3MpOworICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSht
ZW1vcnlQcmVzc3VyZVNldHRpbmdzKTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJvY2Vzc0Ny
YXNoID0gdHJ1ZTsKKworICAgIHRlc3QtPmxvYWRIdG1sKGh0bWwsIG51bGxwdHIpOworICAgIHRl
c3QtPndhaXRVbnRpbFdlYlByb2Nlc3NUZXJtaW5hdGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5tX3Rlcm1pbmF0aW9uUmVhc29uLCA9PSwgV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VF
REVEX01FTU9SWV9MSU1JVCk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVy
ID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTc4Niw2ICs4NDIsNyBAQCB2b2lkIGJlZm9y
ZUFsbCgpCiAgICAgU2VjdXJpdHlQb2xpY3lUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdl
ciIsICJzZWN1cml0eS1wb2xpY3kiLCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5UG9saWN5KTsKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0
ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktp
dFdlYkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOworICAg
IE1lbW9yeVByZXNzdXJlVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgIm1lbW9yeS1wcmVz
c3VyZSIsIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433899</attachid>
            <date>2021-07-20 13:36:02 -0700</date>
            <delta_ts>2021-07-21 05:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210720223600.patch</filename>
            <type>text/plain</type>
            <size>56937</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLmQ1YmE2NmMwN2QzMjUyMGFlZTI1NWEwZjk4ZjcwZTQyOTJkM2E1
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDctMjAgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNv
bmZpZ3VyYXRpb24gc3RydWN0dXJlIHRvIE1lbW9yeVByZXNzdXJlSGFuZGxlciwgd2l0aCB0aGUg
bWV0aG9kcyB0byBlbmNvZGUvZGVjb2RlIGl0LiBBbHNvCisgICAgICAgIGFkZCBhIG1ldGhvZCB0
byBzZXQgYSBzZXR0aW5ncyBzdHJ1Y3R1cmUgdG8gYSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5z
dGFuY2UsIGFuZCBtb2RpZnkgdGhlCisgICAgICAgIGJlaGF2aW9yIHNvIHRoZSB0aGUgc2V0dGlu
Z3MgYXJlIHVzZWQgd2hlbiBjaGVja2luZyB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIHByb2Nlc3Mu
CisKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdU
Rjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0
b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1l
bW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9s
ZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cG9saWN5
Rm9yRm9vdHByaW50KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25m
aWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJh
dGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnNldENvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTA3LTE2ICBBbGV4YW5kZXIgTWlraGF5
bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV1BFXSBTdXBwb3J0IGNv
bG9yLXNjaGVtZXMgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M0YTFlMGQ5N2E0OTJlMzFh
YzEwZjk4ZmIxODBlYmVlMGQxZWQwNy4uYjFhNzU5NzAyOGVlNzI4ZTJhMTQwMjMwYWU2MTkyMTQw
NWNhMGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTIwICBNaWd1ZWwg
R29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0
aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhl
IHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpIGlz
IG5vdyBhbiBpbnN0YW5jZSBtZXRob2QgYW5kIG5vdCBhIGNsYXNzIG9uZSwKKyAgICAgICAgc28g
dXBkYXRlIHRoZSBjYWxsIGluIFJlbmRlckxheWVyQ29tcG9zaXRvciB0byB1c2UgdGhlIHNpbmds
ZXRvbiBpbnN0YW5jZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVD
b21wb3NpdGluZ1BvbGljeSk6CisKIDIwMjEtMDctMTkgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbQ1NTLWdyaWRdIElnbm9yZSB0aGUgYXNwZWN0LXJhdGlvIG9mIGEg
cmVwbGFjZWQgZWxlbWVudCBpZiBzdHJldGNoIGFsaWdubWVudHMgYXJlIGFwcGxpZWQgdG8gYm90
aCBheGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDczMDQ1ZmViMWMxYjZlMDE2ZTAwZjhlMWI5M2VlZDliYTk1YTAy
YjguLjQ0NmVhYzlkOGQ3OGViMzBhZWVkMjI3ZTViOGViMGMwNjNhZjkyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMjEtMDctMjAgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSB0
aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdHlw
ZSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uZmln
dXJlIHRoZSBiZWhhdmlvcgorICAgICAgICBvZiB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyLiBB
ZGQgYSBwcm9wZXJ0eSB0byBXZWJLaXRXZWJDb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFz
cworICAgICAgICBuZXcgc2V0dGluZ3MgdG8gaXQsIGFuZCBzdG9yZSB0aGVtIGluc2lkZSBpdHMg
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLiBUaG9zZSBzZXR0aW5ncworICAgICAgICB3aWxs
IGJlIHNldCB0byBuZXcgd2ViIHByb2Nlc3NlcyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxp
emF0aW9uIHN0YWdlLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNl
c1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NSZWYp
OgorICAgICAgICAod2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1VucmVmKToKKyAgICAgICAg
KHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdCk6CisgICAgICAgICh3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQpOgorICAgICAgICAo
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVzaG9s
ZCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2
YXRpdmVfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3Nfc2V0X3N0cmljdF90aHJlc2hvbGQpOgorICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9raWxsX3RocmVzaG9sZCk6CisgICAgICAgICh3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZCk6CisgICAgICAgICh3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsKToKKyAgICAg
ICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwpOgor
ICAgICAgICAod2Via2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc0dldE1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdU
Rjo6ZGVyZWZHUHRyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5nc1ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEdl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9j
b250ZXh0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dw
ZS93ZWJraXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisKIDIwMjEtMDctMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gW0FYXSBLZXlib2FyZCB0ZXh0IGNhbmRpZGF0ZXMgZG9uJ3Qg
dXBkYXRlIHdoZW4gY2hhbmdpbmcgc2VsZWN0aW9uIHVzaW5nIFN3aXRjaCBDb250cm9sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNl
L1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA1YjA3ZGY4MDk0ZGUyOWJm
YzczMDAwNzczNGE5N2M1NGE3YmEzZmY5Li5iMjY3OWM2YzQ5MWM0YWQ0NTIzZThlM2E5YWM5Yjdh
MjI5MTI4NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAg
LTM4LDYgKzM4LDE2IEBAIERFRklORV9MT0dfQ0hBTk5FTChNZW1vcnlQcmVzc3VyZSwgTE9HX0NI
QU5ORUxfV0VCS0lUX1NVQlNZU1RFTSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpzX2xvZ2dpbmdFbmFibGVkID0gZmFsc2U7
CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorc3RhdGljIGNvbnN0IGRvdWJsZSBzX2NvbnNl
cnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBzX3N0
cmljdFRocmVzaG9sZEZyYWN0aW9uID0gMC42NTsKKyNlbHNlCitzdGF0aWMgY29uc3QgZG91Ymxl
IHNfY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjMzOworc3RhdGljIGNvbnN0IGRv
dWJsZSBzX3N0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gMC41OworI2VuZGlmCitzdGF0aWMgY29u
c3Qgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNfa2lsbFRocmVzaG9sZEZyYWN0aW9uID0gc3RkOjpu
dWxsb3B0Oworc3RhdGljIGNvbnN0IFNlY29uZHMgc19wb2xsSW50ZXJ2YWwgPSAzMF9zOworCiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXImIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkK
IHsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4g
bWVtb3J5UHJlc3N1cmVIYW5kbGVyOwpAQCAtNzMsNyArODMsNyBAQCB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNlKQog
CiAgICAgaWYgKHVzZSkgewogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVl
PFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKLSAg
ICAgICAgbV9tZWFzdXJlbWVudFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKKyAgICAgICAg
bV9tZWFzdXJlbWVudFRpbWVyLT5zdGFydFJlcGVhdGluZyhtX2NvbmZpZ3VyYXRpb24ucG9sbElu
dGVydmFsKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbnVsbHB0
cjsKIH0KQEAgLTExMCw2ICsxMjAsOSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
UGFnZUNvdW50KHVuc2lnbmVkIHBhZ2VDb3VudCkKIAogc3RkOjpvcHRpb25hbDxzaXplX3Q+IE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6dGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpCiB7CisgICAgaWYg
KG1fY29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24pCisgICAgICAgIHJldHVybiBt
X2NvbmZpZ3VyYXRpb24uYmFzZVRocmVzaG9sZCAqICgqbV9jb25maWd1cmF0aW9uLmtpbGxUaHJl
c2hvbGRGcmFjdGlvbik7CisKICAgICBzd2l0Y2ggKG1fcHJvY2Vzc1N0YXRlKSB7CiAgICAgY2Fz
ZSBXZWJzYW1Qcm9jZXNzU3RhdGU6OkluYWN0aXZlOgogICAgICAgICByZXR1cm4gdGhyZXNob2xk
Rm9yTWVtb3J5S2lsbE9mSW5hY3RpdmVQcm9jZXNzKG1fcGFnZUNvdW50KTsKQEAgLTExOSwzMiAr
MTMyLDIyIEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRo
cmVzaG9sZEZvck1lbW9yeUtpbGwoKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkK
K3NpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvclBvbGljeShNZW1vcnlV
c2FnZVBvbGljeSBwb2xpY3kpCiB7Ci0gICAgY29uc3Qgc2l6ZV90IGJhc2VUaHJlc2hvbGRGb3JQ
b2xpY3kgPSBzdGQ6Om1pbigzICogR0IsIHJhbVNpemUoKSk7Ci0KLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGNvbnN0IGRvdWJsZSBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9
IDAuNTsKLSAgICBjb25zdCBkb3VibGUgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSAwLjY1Owot
I2Vsc2UKLSAgICBjb25zdCBkb3VibGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAw
LjMzOwotICAgIGNvbnN0IGRvdWJsZSBzdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKLSNl
bmRpZgotCiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5
OjpVbnJlc3RyaWN0ZWQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgTWVtb3J5VXNhZ2VQ
b2xpY3k6OkNvbnNlcnZhdGl2ZToKLSAgICAgICAgcmV0dXJuIGJhc2VUaHJlc2hvbGRGb3JQb2xp
Y3kgKiBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fY29u
ZmlndXJhdGlvbi5iYXNlVGhyZXNob2xkICogbV9jb25maWd1cmF0aW9uLmNvbnNlcnZhdGl2ZVRo
cmVzaG9sZEZyYWN0aW9uOwogICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdDoKLSAg
ICAgICAgcmV0dXJuIGJhc2VUaHJlc2hvbGRGb3JQb2xpY3kgKiBzdHJpY3RUaHJlc2hvbGRGcmFj
dGlvbjsKKyAgICAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5iYXNlVGhyZXNob2xkICogbV9j
b25maWd1cmF0aW9uLnN0cmljdFRocmVzaG9sZEZyYWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAK
LXN0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3lGb3JGb290cHJpbnQoc2l6ZV90IGZvb3Rw
cmludCkKK01lbW9yeVVzYWdlUG9saWN5IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cG9saWN5Rm9y
Rm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCiB7CiAgICAgaWYgKGZvb3RwcmludCA+PSB0aHJl
c2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkpCiAgICAgICAgIHJldHVy
biBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OwpAQCAtMzE2LDQgKzMxOSwyMiBAQCB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRj
aF9xdWV1ZV90PiYmIHF1ZQogfQogI2VuZGlmCiAKK01lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29u
ZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCisgICAgOiBiYXNlVGhyZXNob2xkKHN0ZDo6bWlu
KDMgKiBHQiwgcmFtU2l6ZSgpKSkKKyAgICAsIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9u
KHNfY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24pCisgICAgLCBzdHJpY3RUaHJlc2hvbGRG
cmFjdGlvbihzX3N0cmljdFRocmVzaG9sZEZyYWN0aW9uKQorICAgICwga2lsbFRocmVzaG9sZEZy
YWN0aW9uKHNfa2lsbFRocmVzaG9sZEZyYWN0aW9uKQorICAgICwgcG9sbEludGVydmFsKHNfcG9s
bEludGVydmFsKQoreworfQorCitNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb246
OkNvbmZpZ3VyYXRpb24oc2l6ZV90IGJhc2UsIGRvdWJsZSBjb25zZXJ2YXRpdmUsIGRvdWJsZSBz
dHJpY3QsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBraWxsLCBTZWNvbmRzIGludGVydmFsKQorICAg
IDogYmFzZVRocmVzaG9sZChiYXNlKQorICAgICwgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rp
b24oY29uc2VydmF0aXZlKQorICAgICwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24oc3RyaWN0KQor
ICAgICwga2lsbFRocmVzaG9sZEZyYWN0aW9uKGtpbGwpCisgICAgLCBwb2xsSW50ZXJ2YWwoaW50
ZXJ2YWwpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMGI1ZDc3YmUzYzcwYjNjMTU0YjQxYmJkMjUyYjQwNWI3
ZTNhZDEwNi4uMDkzMDZlMzM0YTNiYzM5ZTllNzNiYjQwOGU0MDAxMjYyZjFiZWQ5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBt
X2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9CiAgICAgdm9pZCBzZXRVbmRlck1lbW9yeVBy
ZXNzdXJlKGJvb2wpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBNZW1vcnlVc2Fn
ZVBvbGljeSBjdXJyZW50TWVtb3J5VXNhZ2VQb2xpY3koKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTWVtb3J5VXNhZ2VQb2xpY3kgY3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREaXNwYXRjaFF1
ZXVlKE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiYpOwpAQCAtMTQ3LDYgKzE0Nyw1OSBA
QCBwdWJsaWM6CiAgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzX2xvZ2dp
bmdFbmFibGVkOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZ3Vy
YXRpb24oc2l6ZV90LCBkb3VibGUsIGRvdWJsZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBTZWNv
bmRzKTsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGJh
c2VUaHJlc2hvbGQ7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGNvbnNlcnZhdGl2ZVRocmVzaG9s
ZEZyYWN0aW9uOworICAgICAgICAgICAgZW5jb2RlciA8PCBzdHJpY3RUaHJlc2hvbGRGcmFjdGlv
bjsKKyAgICAgICAgICAgIGVuY29kZXIgPDwga2lsbFRocmVzaG9sZEZyYWN0aW9uOworICAgICAg
ICAgICAgZW5jb2RlciA8PCBwb2xsSW50ZXJ2YWw7CisgICAgICAgIH0KKworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb25maWd1
cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGJhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICBkZWNvZGVy
ID4+IGJhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICBpZiAoIWJhc2VUaHJlc2hvbGQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICAgICAg
ZGVjb2RlciA+PiBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGlm
ICghY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHN0cmlj
dFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICAgICAgZGVjb2RlciA+PiBzdHJpY3RUaHJlc2hv
bGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGlmICghc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAg
ICAgICAgICAgIGRlY29kZXIgPj4ga2lsbFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICAgICAg
aWYgKCFraWxsVGhyZXNob2xkRnJhY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBwb2xsSW50ZXJ2
YWw7CisgICAgICAgICAgICBkZWNvZGVyID4+IHBvbGxJbnRlcnZhbDsKKyAgICAgICAgICAgIGlm
ICghcG9sbEludGVydmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgICAgIHJldHVybiB7eyAqYmFzZVRocmVzaG9sZCwgKmNvbnNlcnZhdGl2ZVRocmVz
aG9sZEZyYWN0aW9uLCAqc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24sICpraWxsVGhyZXNob2xkRnJh
Y3Rpb24sICpwb2xsSW50ZXJ2YWwgfX07CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgYmFz
ZVRocmVzaG9sZDsKKyAgICAgICAgZG91YmxlIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9u
OworICAgICAgICBkb3VibGUgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBraWxsVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIFNlY29uZHMg
cG9sbEludGVydmFsOworICAgIH07CisgICAgdm9pZCBzZXRDb25maWd1cmF0aW9uKENvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKSB7IG1fY29uZmlndXJhdGlvbiA9IFdURk1vdmUoY29uZmln
dXJhdGlvbik7IH0KKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VNZW1vcnko
Q3JpdGljYWwsIFN5bmNocm9ub3VzID0gU3luY2hyb25vdXM6Ok5vKTsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTE2MSw2
ICsyMTQsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHRocmVzaG9sZEZvck1lbW9yeUtpbGwoKTsKKyAgICBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5
KE1lbW9yeVVzYWdlUG9saWN5KTsKKyAgICBNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3lGb3JGb290
cHJpbnQoc2l6ZV90KTsKKwogICAgIHZvaWQgbWVtb3J5UHJlc3N1cmVTdGF0dXNDaGFuZ2VkKCk7
CiAKICAgICB2b2lkIHVuaW5zdGFsbCgpOwpAQCAtMTk4LDYgKzI1NCw4IEBAIHByaXZhdGU6CiAg
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZGlkRXhjZWVkSW5hY3RpdmVMaW1pdFdoaWxlQWN0
aXZlQ2FsbGJhY2s7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xvd01lbW9yeUhhbmRsZXI7CiAK
KyAgICBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKKwogI2lmIE9TKFdJTkRPV1MpCiAg
ICAgdm9pZCB3aW5kb3dzTWVhc3VyZW1lbnRUaW1lckZpcmVkKCk7CiAgICAgUnVuTG9vcDo6VGlt
ZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX3dpbmRvd3NNZWFzdXJlbWVudFRpbWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApp
bmRleCA1OTcxOWNhYjcyNjU2NzllNDllOGIxOGFmYTFmMjUyNzI1Y2QwMzlhLi41YTVlZjZiNzE3
OTM0YmU0N2YzZTI3YzVlNDVlNThmZGIyZGQwMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNTI2LDcgKzUyNiw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ1BvbGljeSgpCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lbW9yeVBvbGljeUNhY2hpbmdEdXJhdGlvbiA9IDJf
czsKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIGlmIChub3cgLSBj
YWNoZWRNZW1vcnlQb2xpY3lUaW1lID4gbWVtb3J5UG9saWN5Q2FjaGluZ0R1cmF0aW9uKSB7Ci0g
ICAgICAgIGNhY2hlZE1lbW9yeVBvbGljeSA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y3VycmVu
dE1lbW9yeVVzYWdlUG9saWN5KCk7CisgICAgICAgIGNhY2hlZE1lbW9yeVBvbGljeSA9IE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuY3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7
CiAgICAgICAgIGNhY2hlZE1lbW9yeVBvbGljeVRpbWUgPSBub3c7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBkNjc5Nzg1Y2EzYmQ1OGIyZWQyY2UwODc2NWViNTU3MDFiZjVl
NzIzLi4xNzNkNDE1ZjQzYTUzYjc2NWMwYjIzYjEyMTBlZjU4M2VkNTU5NDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTExMSw2ICsxMTEsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxM
RURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lv
blJlcXVlc3QuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRNaW1lSW5mby5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFr
ZQppbmRleCBlMzk3YzA3YjdjZjcxNzBmNGQ4MzM5OTdkNDk5YjRhYzdmZmNkODk4Li44NjcyNGM2
N2U4ODcxYTk0MGE0ZjkzZjY1Y2ZmMjU0OGE0YzFmMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21h
a2UKQEAgLTE0NCw2ICsxNDQsNyBAQCBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaAorICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRNaW1lSW5m
by5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXROYXZpZ2F0aW9u
QWN0aW9uLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDI3ODE0ZjdiMTU4MDQ1YjkwODZj
NDZjMjk0OTA4NTY2MTQ5YjYyNWYuLjc3NmZiMGJlNjk5Y2Y3NGNhZWE2YTY4MjRmMzk0ZTg0YmE4
ZTg2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0yMDgsNiArMjA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNl
bmRpZgogCiAgICAgZW5jb2RlciA8PCBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXM7CisKKyNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBlbmNvZGVyIDw8IG1lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH0KIAogYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNTY5LDYgKzU3MywxNCBAQCBib29s
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVy
cy5hY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgPSBXVEZNb3ZlKCphY2Nlc3NpYmlsaXR5UHJlZmVy
ZW5jZXMpOwogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlv
bj4+IG1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisgICAgZGVjb2RlciA+PiBt
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uOworICAgIGlmICghbWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFt
ZXRlcnMubWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbiA9IFdURk1vdmUoKm1lbW9y
eVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24pOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IGNjODM1MjhkYzFkYTQzMjFmZTQ2Zjc2N2YyZWM0N2U3OGIyOGJm
NjAuLjA2MGQ0ZjE5MzMxYTU3OWM0YTZkNmEyNmY0NzUyOGJlZjYzZjBiODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAg
LTUyLDYgKzUyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUgPHd0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERh
dGE7CiB9CkBAIC0yNDksNiArMjUzLDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNlbmRpZgogICAgIAogICAgIEFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nl
c3NpYmlsaXR5UHJlZmVyZW5jZXM7CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKKyAgICBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlv
bj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBhNDM5MWJlN2I2MzdmZDk2
ZDg4MGNiMDY4MzhiNmRlYjVkYjU1MmI2Li4wNTFhYTdmMDc5MDc0OGQwZjAyYzE1NTk2ZjgyZDA5
NzlkZTQ4ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTE0OCw2ICsxNDgsNyBAQCBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdC5jcHAgQG5vLXVuaQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1
bHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lZGlhS2V5U3lzdGVt
UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
YXZpZ2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
YXZpZ2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5k
ZXggZjhmYjE1MTFmMmEwMTlhMDhhODk2ZjdjYmY0NWNhNDcwZGEyODE4NS4uMmE0ZjQwNmFiYjhh
ZmIzMDRlZTM4ZDYyYjNhMmJmNzYwODk0Y2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0xMzks
NiArMTM5LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0TWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CitV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWltZUluZm8uY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwIEBuby11bmlmeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcAppbmRleCA5NWZmZTA1ODRjYWE3MTkxMWRhYmNlNjE5ZDg0MjlkZjU1
ZGFlY2UwLi44MzY0YTBjMDIxMjE3MzM5ZjExOWZhZWQ5ZTNhMTY2NmYxYzNmZGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcApAQCAtNzcsNiArNzcsOSBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fd2Vi
UHJvY2Vzc1BhdGggPSB0aGlzLT5tX3dlYlByb2Nlc3NQYXRoOwogICAgIGNvcHktPm1fbmV0d29y
a1Byb2Nlc3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CiAgICAgY29weS0+bV91
c2VySWQgPSB0aGlzLT5tX3VzZXJJZDsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorICAgIGNvcHktPm1fbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlv
biA9IHRoaXMtPm1fbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsKICNlbmRpZgog
ICAgIHJldHVybiBjb3B5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IGZhNjlhNGI0NTdlZTMx
Y2VjNzg3NjVlMjYyYjBhZjEzZmU0MGI4N2QuLjA4OTJmMDA0MDQ5ZmIzNDJmYzEwOWNiNDYwMDcx
ODU3ZWRhNjgwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE1Myw2ICsxNTQsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VXNlcklkKGNvbnN0IGludDMyX3QgdXNlcklkKSB7IG1fdXNlcklkID0gdXNlcklkOyB9CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHZvaWQgc2V0
TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbihjb25zdCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIHsgbV9tZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uPiYgbWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29uZmlndXJhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29uZmlndXJhdGlvbjsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9p
bmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2N1c3RvbUNsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2RlcjsKQEAgLTE4OSw2ICsxOTUsOSBAQCBwcml2YXRlOgogICAgIFdU
Rjo6U3RyaW5nIG1fbmV0d29ya1Byb2Nlc3NQYXRoOwogICAgIGludDMyX3QgbV91c2VySWQgeyAt
MSB9OwogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3Rk
OjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+IG1fbWVtb3J5
UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMGU2
MjNjNDRmYmY5ZGIxMDQ2MDE5ZjY0ZTlmODVmZjBjZDM1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzLmNwcApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1By
aXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisKKy8qKgor
ICogU0VDVElPTjogV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICogQFNob3J0X2Rlc2Ny
aXB0aW9uOiBBIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBzZXR0aW5ncyBmb3IgdGhlIE1l
bW9yeVByZXNzdXJlSGFuZGxlcgorICogQFRpdGxlOiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJDb250ZXh0LgorICoKKyAqICNXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzIGlzIGEgYm94ZWQgdHlwZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBy
b3ZpZGUgc29tZSBjdXN0b20gc2V0dGluZ3MKKyAqIHRvIGNvbnRyb2wgaG93IHRoZSBtZW1vcnkg
cHJlc3N1cmUgc2l0dWF0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUgZGlmZmVyZW50IHByb2Nlc3Nl
cy4KKyAqCisgKiBUaGUgbWVtb3J5IHByZXNzdXJlIHN5c3RlbSBpbXBsZW1lbnRlZCBpbnNpZGUg
dGhlIGRpZmZlcmVudCBwcm9jZXNzIHdpbGwgdHJ5IHRvIGtlZXAgdGhlIG1lbW9yeSB1c2FnZQor
ICogdW5kZXIgdGhlIGRlZmluZWQgbWVtb3J5IGxpbWl0LiBJbiBvcmRlciB0byBkbyB0aGF0LCBp
dCB3aWxsIGNoZWNrIHRoZSB1c2VkIG1lbW9yeSBldmVyeSB3aXRoIGEgdXNlciBkZWZpbmVkCisg
KiBmcmVxdWVuY3kgYW5kIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCB0cnkgdG8gcmVsZWFzZSBt
ZW1vcnkuIFRoZSB0aHJlc2hvbGRzIHBhc3NlZCB3aWxsIGRlZmluZSBob3cgdXJnZW50CisgKiBp
cyB0byByZWxlYXNlIHRoYXQgbWVtb3J5LgorICoKKyAqIFRha2UgaW50byBhY2NvdW50IHRoYXQg
YmFkbHkgZGVmaW5lZCBwYXJhbWV0ZXJzIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgcGVyZm9ybWFu
Y2Ugb2YgdGhlIGVuZ2luZS4gRm9yCisgKiBleGFtcGxlLCBzZXR0aW5nIG1lbW9yeSBsaW1pdCB0
b28gbG93IHdpdGggYSBmYXN0IHBvbGwgaW50ZXJ2YWwgY2FuIGNhdXNlIHRoZSBwcm9jZXNzIHRv
IGNvbnN0YW50bHkKKyAqIGJlIHRyeWluZyB0byByZWxlYXNlIG1lbW9yeS4KKyAqCisgKiBBICNX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIGNhbiBiZSBwYXNzZWQgdG8gYSAjV2ViS2l0V2Vi
Q29udGV4dCBjb25zdHJ1Y3RvciwgYW5kIHRoZSBzZXR0aW5ncyB3aWxsCisgKiBiZSBhcHBsaWVk
IHRvIGFsbCB0aGUgd2ViIHByb2Nlc3NlcyBjcmVhdGVkIGJ5IHRoYXQgY29udGV4dC4KKyAqCisg
KiBTaW5jZTogMi4zNAorICovCitzdHJ1Y3QgX1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mg
eworICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OworICAgIGludCByZWZlcmVuY2VDb3VudCB7IDEgfTsKK307CisKK3N0YXRpYyBXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKiB3ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUmVmKFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEFTU0VSVChzZXR0aW5n
cyk7CisgICAgZ19hdG9taWNfaW50X2luYygmc2V0dGluZ3MtPnJlZmVyZW5jZUNvdW50KTsKKyAg
ICByZXR1cm4gc2V0dGluZ3M7Cit9CisKK3ZvaWQgd2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
c1VucmVmKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEFT
U0VSVChzZXR0aW5ncyk7CisgICAgaWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QoJnNldHRp
bmdzLT5yZWZlcmVuY2VDb3VudCkpCisgICAgICAgIGZhc3RGcmVlKHNldHRpbmdzKTsKK30KKwor
R19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLCB3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzLCB3ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUmVm
LCB3ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzVW5yZWYpOworCisvKioKKyAqIHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3OgorICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlcy4KKyAqIFRoZSBy
ZXR1cm5lZCAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBzaG91bGQgbmV2ZXIgYmUgZnJl
ZWQgYnkgdGhlIHVzZXI7IGl0IG11c3QgYmUgcGFzc2VkIHRvIGEKKyAqICNXZWJLaXRXZWJDb250
ZXh0IGNvbnN0cnVjdG9yIHRoYXQgd2lsbCB0YWtlIHRoZSBvd25lcnNoaXAuCisgKgorICogUmV0
dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ldyAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyBpbnN0YW5jZSBmaWxsZWQgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKgorICogU2luY2U6
IDIuMzQKKyAqLworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19uZXcoKQoreworICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzdGF0aWNfY2FzdDxXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncykpKTsKKyAgICBuZXcgKG1lbW9yeVByZXNzdXJlU2V0dGluZ3MpIFdlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3M7CisKKyAgICByZXR1cm4gbWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKK30K
KworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9tZW1vcnlfbGlt
aXQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEBt
ZW1vcnlfbGltaXQ6IGFtb3VudCBvZiBtZW1vcnkgKGluIE1CKSB0aGF0IHRoZSBwcm9jZXNzIGlz
IGFsbG93ZWQgdG8gdXNlLiBUaGUgZGVmYXVsdCB2YWx1ZQorICogICBpcyB0aGUgc3lzdGVtJ3Mg
UkFNIHNpemUgd2l0aCBhIG1heGltdW0gb2YgM0dCLgorICoKKyAqIFNldHMgQG1lbW9yeV9saW1p
dCB0aGUgbWVtb3J5IGxpbWl0IHZhbHVlIHRvIEBzZXR0aW5ncy4KKyAqCisgKiBTaW5jZTogMi4z
NAorICovCit2b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9s
aW1pdChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQgbWVtb3J5
TGltaXQpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChtZW1vcnlMaW1pdCk7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5iYXNl
VGhyZXNob2xkID0gbWVtb3J5TGltaXQgKiBNQjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQ6CisgKiBAc2V0dGluZ3M6IGEgI1dl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0
aGUgbWVtb3J5IGxpbWl0IGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAq
LworZ3VpbnQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0
KFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmln
dXJhdGlvbi5iYXNlVGhyZXNob2xkIC8gTUI7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICogQHZhbHVlOiBmcmFjdGlvbiBv
ZiB0aGUgbWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUgcG9saWN5IHN0YXJ0cwor
ICogICB3b3JraW5nLiBJdCBtdXN0IGJlIGEgdmFsdWUgYmlnZ2VyIHRoYW4gMCBhbmQgc21hbGxl
ciB0aGFuIDEsIGFuZCBpdCBtdXN0CisgKiAgIGJlIHNtYWxsZXIgdGhhbiB0aGUgc3RyaWN0IHRo
cmVzaG9sZCBkZWZpbmVkIGluIEBzZXR0aW5ncy4gVGhlIGRlZmF1bHQgdmFsdWUKKyAqICAgaXMg
MC4zMy4KKyAqCisgKiBTZXRzIEB2YWx1ZSBhcyB0aGUgZnJhY3Rpb24gb2YgdGhlIGRlZmluZWQg
bWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUKKyAqIHBvbGljeSBzdGFydHMgd29y
a2luZy4gVGhpcyBwb2xpY3kgd2lsbCB0cnkgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50
IGJ5CisgKiByZWxlYXNpbmcgbm9uIGNyaXRpY2FsIG1lbW9yeS4KKyAqCisgKiBTaW5jZTogMi4z
NAorICovCit2b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZh
dGl2ZV90aHJlc2hvbGQoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MsIGdk
b3VibGUgdmFsdWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbCh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKHZhbHVlIDwgc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rp
b24pOworCisgICAgc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uY29uc2VydmF0aXZlVGhyZXNob2xk
RnJhY3Rpb24gPSB2YWx1ZTsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhl
IHRoZSBjb25zZXJ2YXRpdmUgdGhyZXNob2xkIGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2lu
Y2U6IDIuMzQKKyAqLworZ2RvdWJsZSB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dl
dF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAg
IHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9z
dHJpY3RfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzCisgKiBAdmFsdWU6IGZyYWN0aW9uIG9mIHRoZSBtZW1vcnkgbGltaXQgd2hlcmUgdGhl
IHN0cmljdCBwb2xpY3kgc3RhcnRzCisgKiAgIHdvcmtpbmcuIEl0IG11c3QgYmUgYSB2YWx1ZSBi
aWdnZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4gMS4gQWxzbyBpdCBtdXN0CisgKiAgIGJlIGJp
Z2dlciB0aGFuIHRoZSBjb25zZXJ2YXRpdmUgdGhyZXNob2xkIGRlZmluZWQgaW4gQHNldHRpbmdz
LCBhbmQgc21hbGxlcgorICogICB0aGFuIHRoZSBraWxsIHRocmVzaG9sZCBpZiBpdCB3YXMgZGVm
aW5lZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC41LgorICoKKyAqIFNldHMgQHZhbHVlIGFzIHRo
ZSBmcmFjdGlvbiBvZiB0aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQgd2hlcmUgdGhlIHN0cmljdAor
ICogcG9saWN5IHN0YXJ0cyB3b3JraW5nLiBUaGlzIHBvbGljeSB3aWxsIHRyeSB0byByZWR1Y2Ug
dGhlIG1lbW9yeSBmb290cHJpbnQgYnkKKyAqIHJlbGVhc2luZyBjcml0aWNhbCBtZW1vcnkuCisg
KgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzX3NldF9zdHJpY3RfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNl
dHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0dGluZ3Mp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPiAwICYmIHZhbHVlIDwgMSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbCh2YWx1ZSA+IHNldHRpbmdzLT5jb25maWd1cmF0aW9uLmNvbnNlcnZhdGl2
ZVRocmVzaG9sZEZyYWN0aW9uKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCFzZXR0aW5ncy0+Y29u
ZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24gfHwgdmFsdWUgPCBzZXR0aW5ncy0+Y29u
ZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24pOworCisgICAgc2V0dGluZ3MtPmNvbmZp
Z3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSB2YWx1ZTsKK30KKworLyoqCisgKiB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICogUmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGhlIHRoZSBzdHJpY3QgdGhyZXNob2xkIGluc2lkZSBAc2V0dGluZ3Mu
CisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2RvdWJsZSB3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsK
KworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5zdHJpY3RUaHJlc2hvbGRGcmFj
dGlvbjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9r
aWxsX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncworICogQHZhbHVlOiBmcmFjdGlvbiBvZiB0aGUgbWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBw
cm9jZXNzIHdpbGwgYmUga2lsbGVkIGJlY2F1c2UKKyAqICAgb2YgZXhjZXNzaXZlIG1lbW9yeSB1
c2FnZS4gVmFsdWVzIGJpZ2dlciB0aGFuIDEgYXJlIGFsbG93ZWQsIGFuZCB0aGUgdmFsdWUgbXVz
dAorICogICBiZSBiaWdnZXIgdGhhbiB0aGUgc3RyaWN0IHRocmVzaG9sZCBkZWZpbmVkLiBBIHZh
bHVlIG9mIDAgaXMgYWxzbyBhbGxvd2VkLCBtZWFuaW5nCisgKiAgIHRoYXQgdGhlIHByb2Nlc3Mg
aXMgbmV2ZXIga2lsbGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorICoKKyAqIFNldHMgQHZh
bHVlIGFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQgd2hlcmUgdGhl
IHByb2Nlc3Mgd2lsbCBiZQorICoga2lsbGVkLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3Zv
aWQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MsIGdkb3VibGUgdmFsdWUpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1
ZSA+PSAwKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCF2YWx1ZSB8fCB2YWx1ZSA+IHNldHRpbmdz
LT5jb25maWd1cmF0aW9uLnN0cmljdFRocmVzaG9sZEZyYWN0aW9uKTsKKworICAgIHNldHRpbmdz
LT5jb25maWd1cmF0aW9uLmtpbGxUaHJlc2hvbGRGcmFjdGlvbiA9IHZhbHVlID8gc3RkOjptYWtl
X29wdGlvbmFsKHZhbHVlKSA6IHN0ZDo6bnVsbG9wdDsKK30KKworLyoqCisgKiB3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczog
YSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICoKKyAqIFJldHVybnMgdGhlIHZhbHVl
IG9mIHRoZSB0aGUga2lsbCB0aHJlc2hvbGQgaW5zaWRlIEBzZXR0aW5ncy4KKyAqCisgKiBTaW5j
ZTogMi4zNAorICovCitnZG91YmxlIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X2tpbGxfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBz
ZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24udmFsdWVfb3IoMCk7
Cit9CisKKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xs
X2ludGVydmFsOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
CisgKiBAdmFsdWU6IHBlcmlvZCAoaW4gc2Vjb25kcykgYmV0d2VlbiBtZW1vcnkgdXNhZ2UgbWVh
c3VyZW1lbnRzLiBUaGUgdmFsdWUgbXVzdCBiZSBiaWdnZXIgdGhhbiAwLgorICogICBUaGUgZGVm
YXVsdCB2YWx1ZSBpcyAzMCBzZWNvbmRzLgorICoKKyAqIFNldHMgQHZhbHVlIGFzIHRoZSBwb2xs
IGludGVydmFsIHVzZWQgYnkgQHNldHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3Zv
aWQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbChXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ2RvdWJsZSB2YWx1ZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKHNldHRpbmdzKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVl
ID4gMCk7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5wb2xsSW50ZXJ2YWwgPSBTZWNv
bmRzKHZhbHVlKTsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF9wb2xsX2ludGVydmFsOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzCisgKgorICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHRoZSBwb2xsIGludGVy
dmFsIGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2RvdWJsZSB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsKFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5w
b2xsSW50ZXJ2YWwuc2Vjb25kcygpOworfQorCitjb25zdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OkNvbmZpZ3VyYXRpb24mIHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NHZXRNZW1vcnlQcmVz
c3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNl
dHRpbmdzKQoreworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbjsKK30KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mq
IHJlZkdQdHIoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogcHRyKQoreworICAgIGlmIChw
dHIpCisgICAgICAgIHdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NSZWYocHRyKTsKKyAgICBy
ZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgd2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5nc1VucmVmKHB0cik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMzBmNGIwYjIwZWNjMzFlNTgw
NWY3ZTkxYTNiNGU1ZGI4NjZmODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgiCisK
KyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyogcmVmR1B0cihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
KiBwdHIpOwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncyogcHRyKTsKKworfQorCitjb25zdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZp
Z3VyYXRpb24mIHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NHZXRNZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb25maWd1cmF0aW9uKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggNmRkOWYyMGU0ZmYyYmRhMDE4NGQwNjQ1MzAxY2VmMjJlNDdkY2YxNS4uMTY1NzFm
MjJkNTI2NjI0MzhmYzFmODlhNjMzNzcwODJiMmU2MzliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM5LDYg
KzM5LDggQEAKICNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0SW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYktpdEluamVjdGVkQnVu
ZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmgiCkBAIC0xMjQsNiArMTI2LDcg
QEAgZW51bSB7CiAgICAgUFJPUF9VU0VfU1lTVEVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlMs
CiAjZW5kaWYKICNlbmRpZgorICAgIFBST1BfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAogICAg
IE5fUFJPUEVSVElFUywKIH07CiAKQEAgLTI0MSw2ICsyNDQsOCBAQCBzdHJ1Y3QgX1dlYktpdFdl
YkNvbnRleHRQcml2YXRlIHsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBkbnNQcmVmZXRjaGVkSG9z
dHM7CiAgICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzOwor
CisgICAgR1JlZlB0cjxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzPiBtZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAw
LCB9OwpAQCAtMzQ2LDYgKzM1MSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2CiAgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBST1BfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTOgorICAgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfYm94ZWQodmFsdWUsIGNvbnRleHQt
PnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MuZ2V0KCkpOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMzc2LDYgKzM4NCwxMSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSUQsIGNvbnN0IEdWYQogICAgICAgICBicmVhazsKICNlbmRpZgogI2VuZGlmCisgICAg
Y2FzZSBQUk9QX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5HUzogeworICAgICAgICBncG9pbnRlciBz
ZXR0aW5ncyA9IGdfdmFsdWVfZ2V0X2JveGVkKHZhbHVlKTsKKyAgICAgICAgY29udGV4dC0+cHJp
di0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHNldHRpbmdzID8gYWRvcHRHUmVmKHN0YXRpY19j
YXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihzZXR0aW5ncykpIDogbnVsbHB0cjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9
CkBAIC0zOTksNiArNDEyLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVj
dGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBjb25maWd1cmF0aW9uLnNldFVzZVN5c3RlbUFwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzKHByaXYtPnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJz
KTsKICNlbmRpZgogI2VuZGlmCisgICAgaWYgKHByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3Mp
CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJh
dGlvbih3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29uZmlndXJhdGlvbihwcml2LT5tZW1vcnlQcmVzc3VyZVNldHRpbmdzLmdldCgpKSk7CiAKICAg
ICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxv
Y2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEo
KSwgbnVsbHB0cikpOwpAQCAtNTQzLDYgKzU1OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFz
cwogI2VuZGlmCiAjZW5kaWYKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6bWVt
b3J5LXByZXNzdXJlLXNldHRpbmdzOgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUVNT1JZ
X1BSRVNTVVJFX1NFVFRJTkdTXSA9CisgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgKKyAgICAg
ICAgICAgICJtZW1vcnktcHJlc3N1cmUtc2V0dGluZ3MiLAorICAgICAgICAgICAgXygiTWVtb3J5
IFByZXNzdXJlIFNldHRpbmdzIiksCisgICAgICAgICAgICBfKCJUaGUgV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0IiksCisgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MsCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhn
T2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiY2RmZThiMzBhODViNzU3YzNh
YjI5ODE5ZTRlYjRlNjQ1Mzg3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKyNk
ZWZpbmUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTICh3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3M7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Z2V0X3R5cGUgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19u
ZXcgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0ICAgICAgICAgICAo
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg
ICAgICAgICAgICAgICAgICBtZW1vcnlfbGltaXQpOworCitXRUJLSVRfQVBJIGd1aW50Cit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQgICAgICAgICAgIChX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVz
aG9sZCAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91Ymxl
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZCAo
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0cmljdF90aHJlc2hvbGQg
ICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hvbGQgICAgICAg
KFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9raWxsX3RocmVzaG9sZCAg
ICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZCAgICAgICAg
IChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbCAg
ICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91
YmxlICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQor
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbCAgICAgICAg
ICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitHX0VORF9ERUNM
UworCisjZW5kaWYgLyogV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBiNWYzZTdkNjBkMjAyZTBjNjViOTc3ODNlZGU3
NGUwOWY3YWU3OGI5Li45MzViNjg5OTRkNDVhYTBlMDUwYTNkMGU1YjVkMWE5NzgyNmY3YWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5NTMsNCArMTk1MywyNSBAQCBX
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRf
dHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCit3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19zZXRfbWVtb3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9t
ZW1vcnlfbGltaXQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZh
dGl2ZV90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNl
cnZhdGl2ZV90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0
cmljdF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmlj
dF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhy
ZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9s
ZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbAord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbAorCis8U1VCU0VD
VElPTiBQcml2YXRlPgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZQor
Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9TRVRU
SU5HUworPC9TRUNUSU9OPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oCmluZGV4IGVjYmU0MzNlZDg4ODM1M2IxZTYwMTM5NDNiNDQ2MzgzNWMzNTgyZDIuLmI3ZDI3
NDFjNGIyYzFhZDRlMzRhMWZhYjQ4ZmVjNjFhZjFjNjEwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRNaW1lSW5mby5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TmF2aWdhdGlv
bkFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2Y2ZkNzRiNzE5
NTg2NTAzYzAyMDI5MDk1ZjY1ZTYwNmQ3ZmIzZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJ
TEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJl
Y3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gK
KyNkZWZpbmUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MgKHdlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
czsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19n
ZXRfdHlwZSAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25l
dyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9tZW1vcnlfbGltaXQgICAgICAgICAgIChX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lbW9yeV9saW1pdCk7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCAgICAgICAgICAgKFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNo
b2xkIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkIChX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0X3RocmVzaG9sZCAg
ICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91Ymxl
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZCAgICAgICAo
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkICAg
ICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkICAgICAgICAg
KFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsICAg
ICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsICAgICAgICAg
IChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZiAvKiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dAppbmRleCA0YjY2YmI5NWYxMzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li5j
NzQ3ODYxYzg1MTk4YjdhMTVlYTgzZjQ0YmM0NTE2ZDAyOTExMzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CkBAIC0xNjUxLDMgKzE2NTEsMjUgQEAgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NM
QVNTCiBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF9tZW1vcnlfbGltaXQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2Nv
bnNlcnZhdGl2ZV90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
c2V0X3N0cmljdF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X3N0cmljdF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tp
bGxfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3Ro
cmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZh
bAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbAorCis8
U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRf
dHlwZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VS
RV9TRVRUSU5HUworPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Vi
a2l0LmgKaW5kZXggODc5MjkyNTdiZjczYWJhNjg0YTM4MGFjY2Q4YzFiYmIzOTRiYWQ4Ny4uNWM5
M2Q3NjBmNzM0YTEyZjYxNDg5OTU0NTEzNWZkZjc3MDE2NDU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8d3Bl
L1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0TWltZUluZm8u
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCA4NGFhNjUzMjc4
ZjgzMThiMWRjZjdjOWJhMTVlODAyMmY4MjA3NjNiLi4xNjAzYzliMmYzNDk2YzVmM2ZlMWViZDY5
NjFhNmMwOWY0Y2I3NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCkBAIC0xMDcsNiArMTA3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAgICBwYXJhbWV0
ZXJzLnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzID0gbV9jb25maWd1cmF0aW9uLT51
c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycygpOwogI2VuZGlmCisKKyAgICBwYXJhbWV0
ZXJzLm1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24t
Pm1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5kZXggYmFkMDAxNDZkODg2MzUy
MzBiMGE1NzFhOTkzOWMyMWNkOGE2NDgyMi4uY2Q3MzIxOTNlODMxOTA2OWQ5ZDMwYTcyNmEyNjNk
YzUxNjEwNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc0dMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NHTGliLmNwcApAQCAtMTA1LDYgKzEwNSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
CiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgc2V0VXNlU3lzdGVtQXBwZWFy
YW5jZUZvclNjcm9sbGJhcnMocGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xs
YmFycyk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlSGFuZGxl
ckNvbmZpZ3VyYXRpb24pCisgICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9u
KCkuc2V0Q29uZmlndXJhdGlvbihXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvbmZpZ3VyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjMx
ZTAyMWU0MmE4YTBiMTg2ODQ0ODhiZjY1M2E5MGM2MTFiNmViNS4uNmU2ZTM4ZTAyYmRmNTQ2NjU0
ODExZTkwNGQxYjkwYjA5YTU3NTkyYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA3LTIwICBNaWd1ZWwgR29t
ZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUg
dXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdl
YiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjI3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYW4gQVBJIHRlc3QgZm9yIFdlYktpdFdlYkNvbnRleHQgd2l0aCBub24gZGVmYXVsdCBX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIHZhbHVlcy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChNZW1vcnlQcmVzc3VyZVRlc3Q6OnNldHVwKToKKyAgICAgICAgKE1lbW9yeVByZXNzdXJlVGVz
dDo6dGVhcmRvd24pOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVUZXN0Ojp3ZWJQcm9jZXNzVGVy
bWluYXRlZENhbGxiYWNrKToKKyAgICAgICAgKE1lbW9yeVByZXNzdXJlVGVzdDo6d2FpdFVudGls
V2ViUHJvY2Vzc1Rlcm1pbmF0ZWQpOgorICAgICAgICAodGVzdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0TWFpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvVGVzdE1haW4uaDoKKyAgICAgICAgKFRlc3Q6OlRlc3QpOgorCiAyMDIxLTA3LTE4
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgSWdub3JlIHdl
YWsgZXh0ZXJuYWwgc3ltYm9scyBpbiBjbGFuZyBjb3ZlcmFnZSBidWlsZHMgdXNpbmcgY2hlY2st
Zm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCA5ZTkyMzNhYjA5MDcwOTlhMDJiNzg0YzI4NGZlZDE5NzMzZjY0Mjc2Li44ZjQzYTA2ZWZh
MDA0N2Y4YjI3OTM3ZDY1NDQxNDU2NjE4ZjY3ZTMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAKQEAgLTc3MCw2ICs3NzAsNzMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRQcm94eVNl
dHRpbmdzKFByb3h5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICNlbmRpZgogfQogCitjbGFz
cyBNZW1vcnlQcmVzc3VyZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAg
IE1BS0VfR0xJQl9URVNUX0ZJWFRVUkVfV0lUSF9TRVRVUF9URUFSRE9XTihNZW1vcnlQcmVzc3Vy
ZVRlc3QsIHNldHVwLCB0ZWFyZG93bik7CisKKyAgICBzdGF0aWMgdm9pZCBzZXR1cCgpCisgICAg
eworICAgICAgICBUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSB3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX25ldygpOworICAgICAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX3NldF9tZW1vcnlfbGltaXQoVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdz
LCAyMCk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxf
aW50ZXJ2YWwoVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdzLCAwLjUpOworICAgICAgICB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9raWxsX3RocmVzaG9sZChUZXN0Ojpz
X21lbW9yeVByZXNzdXJlU2V0dGluZ3MsIDEpOworICAgICAgICB3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkKFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncywgMC43NSk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
c2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQoVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdz
LCAwLjUpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRlYXJkb3duKCkKKyAgICB7CisgICAg
ICAgIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IG51bGxwdHI7CisgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uLCBNZW1v
cnlQcmVzc3VyZVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5tX3Rlcm1pbmF0aW9u
UmVhc29uID0gcmVhc29uOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4od2ViUHJvY2Vzc1Rlcm1pbmF0
ZWRDYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsV2ViUHJvY2Vzc1Rlcm1pbmF0ZWQo
KQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9hZnRlcihtX3dlYlZpZXcsICJ3ZWIt
cHJvY2Vzcy10ZXJtaW5hdGVkIiwgR19DQUxMQkFDSyhNZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlBy
b2Nlc3NUZXJtaW5hdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbiBtX3Rlcm1pbmF0aW9uUmVhc29uIHsgV0VCS0lUX1dFQl9QUk9DRVNTX0NSQVNIRUQgfTsK
K307CisKK3N0YXRpYyB2b2lkIHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNz
dXJlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBBbiBlbXB0eSB2aWV3IHVz
ZXMgYXJvdW5kIDdNQiBvZiBtZW1vcnkuIFdlJ3JlIHNldHRpbmcgYSBtYXhpbXVtIG9mIDIwTUIg
aGVyZSwgcG9sbGluZyBldmVyeSAwLjUgc2Vjb25kcywKKyAgICAvLyBhbmQgdGhlIGtpbGwgZnJh
Y3Rpb24gaXMgMSwgc28gdGhlIHdlYiBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIHdoZW4gaXQgZXhj
ZWVkcyAyME1CLgorICAgIC8vIFRoZSB0ZXN0IGh0bWwgd2lsbCBhbGxvY2F0ZSBhIGNhbnZhcyBv
ZiAzMDAweDMwMDAsIHdoaWNoIHJlcXVpcmVzIGFyb3VuZCAzNk1CIG9mIG1lbW9yeSwgc28gb25j
ZSBpdCBnZXRzCisgICAgLy8gY3JlYXRlZCwgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciB3aWxs
IGRldGVjdCB0aGF0IHRoZSBtZW1vcnkgdXNhZ2UgaXMgdG9vIGhpZ2ggYW5kIGtpbGwgdGhlIHdl
YiBwcm9jZXNzLgorICAgIC8vIFRoaXMgdHJpZ2dlcnMgdGhlIHdlYi1wcm9jZXNzLXRlcm1pbmF0
ZWQgc2lnbmFsIGluIHRoZSB2aWV3IHdpdGggV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01F
TU9SWV9MSU1JVAorICAgIC8vIGFzIHRoZSB0ZXJtaW5hdGlvbiByZWFzb24uCisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogaHRtbCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICIgIDxib2R5
PiIKKyAgICAgICAgIiAgICA8c2NyaXB0PiIKKyAgICAgICAgIiAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IgorICAgICAgICAiICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NhbnZhcycpOyIKKyAgICAgICAgIiAgICAgICAgY2FudmFzLndpZHRoID0gMzAw
MDsiCisgICAgICAgICIgICAgICAgIGNhbnZhcy5oZWlnaHQgPSAzMDAwOyIKKyAgICAgICAgIiAg
ICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsiCisgICAgICAgICIg
ICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ2dyZWVuJzsiCisgICAgICAgICIgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoMCwgMCwgMzAwMCwgMzAwMCk7IgorICAgICAgICAiICAgICAgfSwgMCk7
IgorICAgICAgICAiICAgIDwvc2NyaXB0PiIKKyAgICAgICAgIiAgICA8Y2FudmFzIGlkPSdjYW52
YXMnPjwvY2FudmFzPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOwor
CisgICAgdGVzdC0+bV9leHBlY3RlZFdlYlByb2Nlc3NDcmFzaCA9IHRydWU7CisgICAgdGVzdC0+
bG9hZEh0bWwoaHRtbCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsV2ViUHJvY2Vzc1Rl
cm1pbmF0ZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGVybWluYXRpb25SZWFz
b24sID09LCBXRUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUKTsKK30KKwog
dm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigp
OwpAQCAtNzg2LDYgKzg1Myw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBTZWN1cml0eVBvbGlj
eVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgInNlY3VyaXR5LXBvbGljeSIsIHRl
c3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFNlY3VyaXR5TWFuYWdlciIsICJmaWxlLXhociIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlGaWxl
WEhSKTsKICAgICBQcm94eVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJwcm94eSIsIHRl
c3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk7CisgICAgTWVtb3J5UHJlc3N1cmVUZXN0OjphZGQo
IldlYktpdFdlYkNvbnRleHQiLCAibWVtb3J5LXByZXNzdXJlIiwgdGVzdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAppbmRleCBmYTViZTE2MjcyZGMyNjVhYTM5
NTYyMGIxNjkxMjY3ZWJhYzlkOTM1Li5lODk2ZjdhZTE1ZjAzZmE2ODA0Y2M4YjRiODUzNTc5N2Nm
ZjUxY2UzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVz
dE1haW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiBHUmVmUHRyPEdEQnVzU2VydmVyPiBUZXN0Ojpz
X2RidXNTZXJ2ZXI7CiBWZWN0b3I8R1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+PiBUZXN0OjpzX2Ri
dXNDb25uZWN0aW9uczsKIEhhc2hNYXA8dWludDY0X3QsIEdEQnVzQ29ubmVjdGlvbio+IFRlc3Q6
OnNfZGJ1c0Nvbm5lY3Rpb25QYWdlTWFwOworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyog
VGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdzID0gbnVsbHB0cjsKIAogdm9pZCBiZWZvcmVB
bGwoKTsKIHZvaWQgYWZ0ZXJBbGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4IDE0NDUzMTFmNmY4NmVkM2Y1NDY4OTkzZDgwZjA4ODM2
YmQ0OWQ3MjYuLjhjNzkwMDA0OWEzYmEyNDQ0Y2M0NjczMmY0NWExMzc2Yjc5ZjdiNGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAtMTQy
LDYgKzE0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICJ1c2Utc3lzdGVtLWFwcGVhcmFuY2Ut
Zm9yLXNjcm9sbGJhcnMiLCBGQUxTRSwKICNlbmRpZgogI2VuZGlmCisgICAgICAgICAgICAibWVt
b3J5LXByZXNzdXJlLXNldHRpbmdzIiwgc19tZW1vcnlQcmVzc3VyZVNldHRpbmdzLAogICAgICAg
ICAgICAgbnVsbHB0cikpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChtX3dlYkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChtX3dlYkNvbnRleHQuZ2V0KCksICJpbml0aWFsaXplLXdlYi1leHRlbnNpb25zIiwg
R19DQUxMQkFDSyhpbml0aWFsaXplV2ViRXh0ZW5zaW9uc0NhbGxiYWNrKSwgdGhpcyk7CkBAIC0y
OTIsNCArMjkzLDUgQEAgcHVibGljOgogICAgIHN0YXRpYyBHUmVmUHRyPEdEQnVzU2VydmVyPiBz
X2RidXNTZXJ2ZXI7CiAgICAgc3RhdGljIFZlY3RvcjxHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4+
IHNfZGJ1c0Nvbm5lY3Rpb25zOwogICAgIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBHREJ1c0Nv
bm5lY3Rpb24qPiBzX2RidXNDb25uZWN0aW9uUGFnZU1hcDsKKyAgICBzdGF0aWMgV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyogc19tZW1vcnlQcmVzc3VyZVNldHRpbmdzOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433926</attachid>
            <date>2021-07-21 05:27:10 -0700</date>
            <delta_ts>2021-07-21 06:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210721142709.patch</filename>
            <type>text/plain</type>
            <size>59240</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyZDUzZWNjMTg4ZjZlMWZlMTc3OTk4
ODc0OTE5ZGIzMTg4NjZhZWYuLjZjNWU3OGUxNzRlNzI3YjBlOTc3OTc5NTI5NzI5ZDVmZTM3NjFh
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDctMjEgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNv
bmZpZ3VyYXRpb24gc3RydWN0dXJlIHRvIE1lbW9yeVByZXNzdXJlSGFuZGxlciwgd2l0aCB0aGUg
bWV0aG9kcyB0byBlbmNvZGUvZGVjb2RlIGl0LiBBbHNvCisgICAgICAgIGFkZCBhIG1ldGhvZCB0
byBzZXQgYSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byBhIE1lbW9yeVByZXNzdXJlSGFuZGxl
ciBpbnN0YW5jZSwgYW5kIG1vZGlmeSB0aGUKKyAgICAgICAgYmVoYXZpb3Igc28gdGhlIHRoZSBj
b25maWd1cmF0aW9uIGlzIHVzZWQgd2hlbiBjaGVja2luZyB0aGUgbWVtb3J5IHVzZWQgYnkgdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01l
bW9yeU1vbml0b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVz
aG9sZEZvck1lbW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnRocmVzaG9sZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiB3dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldENvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTA3LTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4MDEwMyBpcyBu
b3QgbmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1OTZl
ZmViMTViNGVhOTc1MzdlZDk4Zjk2MjgwNDM0NzJkZTYyZTQuLjJjNzNjYjU4YTMyNzk3NzNjOGY3
MzM2MzhlNTQyNDc3NmIwN2ZmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0w
Ny0yMSAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
W1dQRV0gQWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIgaW5zaWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVtb3J5VXNh
Z2VQb2xpY3koKSBpcyBub3cgYW4gaW5zdGFuY2UgbWV0aG9kIGFuZCBub3QgYSBjbGFzcyBvbmUs
CisgICAgICAgIHNvIHVwZGF0ZSB0aGUgY2FsbCBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3IgdG8g
dXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgorCiAyMDIxLTA3LTIwICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4MDEwMyBpcyBub3Qg
bmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZGY4ZTQwYmY2
ZDI4YmY1YWE4OTRlYjk3NTEyYWY5MmE4NzNkYzllLi5lNDM2Mzg1NzkzOTk5OTU2NTE3NGM3YmE4
NjExODM3MDU2N2YxNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA3LTIxICBN
aWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBB
bGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNp
ZGUgdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjI3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBuZXcgQVBJIHR5cGUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3IKKyAgICAgICAgb2Yg
dGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlci4gQWRkIGEgcHJvcGVydHkgdG8gV2ViS2l0V2ViQ29u
dGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MKKyAgICAgICAgbmV3IHNldHRpbmdzIHRvIGl0
LCBhbmQgc3RvcmUgdGhlbSBpbnNpZGUgaXRzIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LiBUaG9zZSBzZXR0aW5ncworICAgICAgICB3aWxsIGJlIHNldCB0byBuZXcgd2ViIHByb2Nlc3Nl
cyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxpemF0aW9uIHN0YWdlLgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAg
ICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291
cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2ZyZWUpOgorICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19zZXRfbWVtb3J5X2xpbWl0KToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQpOgor
ICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0X3RocmVz
aG9sZCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9zdHJp
Y3RfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
c2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwpOgorICAgICAgICAod2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICh3ZWJraXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3NQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS93ZWJraXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdM
aWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGli
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyk6CisKIDIwMjEtMDctMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIFNQSSBmb3IgaW50ZXJuYWwgY2xpZW50cyB0byBj
b25zdWx0IHdoZXRoZXIgb3Igbm90IHZpZXdwb3J0IHF1aXJrcyBzaG91bGQgYmUgZW5hYmxlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNWIwN2RmODA5NGRl
MjliZmM3MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOS4uNzVhMDg1NDYwOGVmNWE5MjFlMjUyOTJkYTFm
YjY4ZjRlZDE1NzVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
CkBAIC0zOCw2ICszOCwxNiBAQCBERUZJTkVfTE9HX0NIQU5ORUwoTWVtb3J5UHJlc3N1cmUsIExP
R19DSEFOTkVMX1dFQktJVF9TVUJTWVNURU0pOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9IGZh
bHNlOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBjb25zdCBkb3VibGUgc19j
b25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUg
c19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNjU7CisjZWxzZQorc3RhdGljIGNvbnN0IGRv
dWJsZSBzX2NvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKK3N0YXRpYyBjb25z
dCBkb3VibGUgc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKKyNlbmRpZgorc3RhdGlj
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzX2tpbGxUaHJlc2hvbGRGcmFjdGlvbjsKK3N0
YXRpYyBjb25zdCBTZWNvbmRzIHNfcG9sbEludGVydmFsID0gMzBfczsKKwogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpCiB7CiAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNz
dXJlSGFuZGxlcjsKQEAgLTczLDcgKzgzLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKIAogICAgIGlmICh1
c2UpIHsKICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7Ci0gICAgICAgIG1fbWVh
c3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CisgICAgICAgIG1fbWVhc3VyZW1l
bnRUaW1lci0+c3RhcnRSZXBlYXRpbmcobV9jb25maWd1cmF0aW9uLnBvbGxJbnRlcnZhbCk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CiB9CkBAIC0x
MTAsNiArMTIwLDkgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFBhZ2VDb3VudCh1
bnNpZ25lZCBwYWdlQ291bnQpCiAKIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogeworICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24ua2lsbFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICByZXR1cm4gbV9jb25maWd1cmF0
aW9uLmJhc2VUaHJlc2hvbGQgKiAoKm1fY29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rp
b24pOworCiAgICAgc3dpdGNoIChtX3Byb2Nlc3NTdGF0ZSkgewogICAgIGNhc2UgV2Vic2FtUHJv
Y2Vzc1N0YXRlOjpJbmFjdGl2ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZEZvck1lbW9yeUtp
bGxPZkluYWN0aXZlUHJvY2VzcyhtX3BhZ2VDb3VudCk7CkBAIC0xMTksMzIgKzEzMiwyMiBAQCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JN
ZW1vcnlLaWxsKCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgc2l6ZV90
IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCitzaXplX3QgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kg
cG9saWN5KQogewotICAgIGNvbnN0IHNpemVfdCBiYXNlVGhyZXNob2xkRm9yUG9saWN5ID0gc3Rk
OjptaW4oMyAqIEdCLCByYW1TaXplKCkpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBjb25zdCBkb3VibGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7Ci0gICAg
Y29uc3QgZG91YmxlIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gMC42NTsKLSNlbHNlCi0gICAg
Y29uc3QgZG91YmxlIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKLSAgICBj
b25zdCBkb3VibGUgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7Ci0jZW5kaWYKLQogICAg
IHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmlj
dGVkOgogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpDb25z
ZXJ2YXRpdmU6Ci0gICAgICAgIHJldHVybiBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICogY29uc2Vy
dmF0aXZlVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
YmFzZVRocmVzaG9sZCAqIG1fY29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbjsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6Ci0gICAgICAgIHJldHVy
biBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICogc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAg
ICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYmFzZVRocmVzaG9sZCAqIG1fY29uZmlndXJhdGlv
bi5zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgTWVt
b3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCitNZW1v
cnlVc2FnZVBvbGljeSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBvbGljeUZvckZvb3RwcmludChz
aXplX3QgZm9vdHByaW50KQogewogICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9s
aWN5KE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3QpKQogICAgICAgICByZXR1cm4gTWVtb3J5VXNh
Z2VQb2xpY3k6OlN0cmljdDsKQEAgLTMxNiw0ICszMTksMjIgQEAgdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4m
JiBxdWUKIH0KICNlbmRpZgogCitNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb246
OkNvbmZpZ3VyYXRpb24oKQorICAgIDogYmFzZVRocmVzaG9sZChzdGQ6Om1pbigzICogR0IsIHJh
bVNpemUoKSkpCisgICAgLCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbihzX2NvbnNlcnZh
dGl2ZVRocmVzaG9sZEZyYWN0aW9uKQorICAgICwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24oc19z
dHJpY3RUaHJlc2hvbGRGcmFjdGlvbikKKyAgICAsIGtpbGxUaHJlc2hvbGRGcmFjdGlvbihzX2tp
bGxUaHJlc2hvbGRGcmFjdGlvbikKKyAgICAsIHBvbGxJbnRlcnZhbChzX3BvbGxJbnRlcnZhbCkK
K3sKK30KKworTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0
aW9uKHNpemVfdCBiYXNlLCBkb3VibGUgY29uc2VydmF0aXZlLCBkb3VibGUgc3RyaWN0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4ga2lsbCwgU2Vjb25kcyBpbnRlcnZhbCkKKyAgICA6IGJhc2VUaHJl
c2hvbGQoYmFzZSkKKyAgICAsIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKGNvbnNlcnZh
dGl2ZSkKKyAgICAsIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uKHN0cmljdCkKKyAgICAsIGtpbGxU
aHJlc2hvbGRGcmFjdGlvbihraWxsKQorICAgICwgcG9sbEludGVydmFsKGludGVydmFsKQorewor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oCmluZGV4IDBiNWQ3N2JlM2M3MGIzYzE1NGI0MWJiZDI1MmI0MDViN2UzYWQxMDYuLjA5
MzA2ZTMzNGEzYmMzOWU5ZTczYmI0MDhlNDAwMTI2MmYxYmVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRp
bmdNZW1vcnlQcmVzc3VyZTsgfQogICAgIHZvaWQgc2V0VW5kZXJNZW1vcnlQcmVzc3VyZShib29s
KTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgY3Vy
cmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lbW9yeVVz
YWdlUG9saWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZShPU09iamVj
dFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKQEAgLTE0Nyw2ICsxNDcsNTkgQEAgcHVibGljOgog
ICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19sb2dnaW5nRW5hYmxlZDsK
ICAgICB9OwogCisgICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWd1
cmF0aW9uKCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWd1cmF0aW9uKHNpemVf
dCwgZG91YmxlLCBkb3VibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgU2Vjb25kcyk7CisKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBiYXNlVGhyZXNob2xk
OworICAgICAgICAgICAgZW5jb2RlciA8PCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAg
ICAgICBlbmNvZGVyIDw8IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgcG9sbEludGVydmFsOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29uZmlndXJhdGlvbj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBiYXNlVGhyZXNob2xkOworICAgICAgICAgICAgZGVjb2RlciA+PiBiYXNlVGhy
ZXNob2xkOworICAgICAgICAgICAgaWYgKCFiYXNlVGhyZXNob2xkKQorICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4g
Y29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBpZiAoIWNvbnNlcnZh
dGl2ZVRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdHJpY3RUaHJlc2hvbGRG
cmFjdGlvbjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247
CisgICAgICAgICAgICBpZiAoIXN0cmljdFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxkb3VibGU+PiBraWxsVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBk
ZWNvZGVyID4+IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGlmICgha2lsbFRo
cmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gcG9sbEludGVydmFsOworICAgICAg
ICAgICAgZGVjb2RlciA+PiBwb2xsSW50ZXJ2YWw7CisgICAgICAgICAgICBpZiAoIXBvbGxJbnRl
cnZhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAg
ICByZXR1cm4ge3sgKmJhc2VUaHJlc2hvbGQsICpjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlv
biwgKnN0cmljdFRocmVzaG9sZEZyYWN0aW9uLCAqa2lsbFRocmVzaG9sZEZyYWN0aW9uLCAqcG9s
bEludGVydmFsIH19OworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGJhc2VUaHJlc2hvbGQ7
CisgICAgICAgIGRvdWJsZSBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAg
ZG91YmxlIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4ga2lsbFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICBTZWNvbmRzIHBvbGxJbnRlcnZh
bDsKKyAgICB9OworICAgIHZvaWQgc2V0Q29uZmlndXJhdGlvbihDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikgeyBtX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9
CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsLCBT
eW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBiZWdpblNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CkBAIC0xNjEsNiArMjE0LDkgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0aHJlc2hvbGRG
b3JNZW1vcnlLaWxsKCk7CisgICAgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2Fn
ZVBvbGljeSk7CisgICAgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVf
dCk7CisKICAgICB2b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAgdm9p
ZCB1bmluc3RhbGwoKTsKQEAgLTE5OCw2ICsyNTQsOCBAQCBwcml2YXRlOgogICAgIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiBtX2RpZEV4Y2VlZEluYWN0aXZlTGltaXRXaGlsZUFjdGl2ZUNhbGxiYWNr
OwogICAgIExvd01lbW9yeUhhbmRsZXIgbV9sb3dNZW1vcnlIYW5kbGVyOwogCisgICAgQ29uZmln
dXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisKICNpZiBPUyhXSU5ET1dTKQogICAgIHZvaWQgd2lu
ZG93c01lYXN1cmVtZW50VGltZXJGaXJlZCgpOwogICAgIFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcj4gbV93aW5kb3dzTWVhc3VyZW1lbnRUaW1lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNTk3MTlj
YWI3MjY1Njc5ZTQ5ZThiMThhZmExZjI1MjcyNWNkMDM5YS4uNWE1ZWY2YjcxNzkzNGJlNDdmM2Uy
N2M1ZTQ1ZTU4ZmRiMmRkMDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3koKQogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRpb24gPSAyX3M7CiAgICAgYXV0
byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBpZiAobm93IC0gY2FjaGVkTWVtb3J5
UG9saWN5VGltZSA+IG1lbW9yeVBvbGljeUNhY2hpbmdEdXJhdGlvbikgewotICAgICAgICBjYWNo
ZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1vcnlVc2Fn
ZVBvbGljeSgpOworICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnNpbmdsZXRvbigpLmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogICAgICAgICBj
YWNoZWRNZW1vcnlQb2xpY3lUaW1lID0gbm93OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggODk4NjA4MmFmNzg1NDdmY2NlNDQ3NWQwNTMxNWQzODE5ZjkxNDA5NC4uODhmMGE2
MDYxNTJmZjI5MzA0YzYyMWZmZTRlNTNmNjY3OTdhOGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC0xMTIsNiArMTEyLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgK
KyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWlt
ZUluZm8uaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdh
dGlvbkFjdGlvbi5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZTM5
N2MwN2I3Y2Y3MTcwZjRkODMzOTk3ZDQ5OWI0YWM3ZmZjZDg5OC4uODY3MjRjNjdlODg3MWE5NDBh
NGY5M2Y2NWNmZjI1NDhhNGMxZjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNDQs
NiArMTQ0LDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWltZUluZm8uaAogICAgICR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAyNzgxNGY3YjE1ODA0NWI5MDg2YzQ2YzI5NDkwODU2
NjE0OWI2MjVmLi43NzZmYjBiZTY5OWNmNzRjYWVhNmE2ODI0ZjM5NGU4NGJhOGU4NjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtMjA4LDYgKzIwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIAogICAg
IGVuY29kZXIgPDwgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzOworCisjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCisgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b25maWd1cmF0aW9uOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU2OSw2ICs1NzMsMTQgQEAgYm9vbCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9j
ZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuYWNjZXNzaWJp
bGl0eVByZWZlcmVuY2VzID0gV1RGTW92ZSgqYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKTsKIAor
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+PiBtZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uOworICAgIGRlY29kZXIgPj4gbWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsKKyAgICBpZiAoIW1lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJzLm1lbW9y
eVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKCptZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb25maWd1cmF0aW9uKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBjYzgzNTI4ZGMxZGE0MzIxZmU0NmY3NjdmMmVjNDdlNzhiMjhiZjYwLi4wNjBkNGYx
OTMzMWE1NzljNGE2ZDZhMjZmNDc1MjhiZWY2M2YwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Miw2ICs1Miwx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwogfQpAQCAt
MjQ5LDYgKzI1MywxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVBy
ZWZlcmVuY2VzOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3Rk
OjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+IG1lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggOTViNGZmYjc2OWQ3MTFiNmE0ODVhMDA1Zjdh
M2Y1ODE3MmZjZjFhZC4uZWI1OWRlN2JhNWJjNjlmNDE0ZDJhNzIwMzhiNjI5ZDdhN2IyYWQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xNDksNiArMTQ5LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIEBu
by11bmkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNaW1lSW5mby5j
cHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkFj
dGlvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNs
aWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGY4ZmIxNTEx
ZjJhMDE5YTA4YTg5NmY3Y2JmNDVjYTQ3MGRhMjgxODUuLjJhNGY0MDZhYmI4YWZiMzA0ZWUzOGQ2
MmIzYTJiZjc2MDg5NGNkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTM5LDYgKzEzOSw3IEBA
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEph
dmFzY3JpcHRSZXN1bHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1l
ZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwIEBuby11bmlmeQogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggOTVmZmUwNTg0Y2FhNzE5MTFkYWJjZTYxOWQ4NDI5ZGY1NWRhZWNlMC4uODM2
NGEwYzAyMTIxNzMzOWYxMTlmYWVkOWUzYTE2NjZmMWMzZmRkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAKQEAgLTc3LDYgKzc3LDkgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX3dlYlByb2Nlc3NQYXRo
ID0gdGhpcy0+bV93ZWJQcm9jZXNzUGF0aDsKICAgICBjb3B5LT5tX25ldHdvcmtQcm9jZXNzUGF0
aCA9IHRoaXMtPm1fbmV0d29ya1Byb2Nlc3NQYXRoOwogICAgIGNvcHktPm1fdXNlcklkID0gdGhp
cy0+bV91c2VySWQ7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkK
KyAgICBjb3B5LT5tX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSB0aGlzLT5t
X21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CiAjZW5kaWYKICAgICByZXR1cm4g
Y29weTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCBmYTY5YTRiNDU3ZWUzMWNlYzc4NzY1ZTI2
MmIwYWYxM2ZlNDBiODdkLi5iYzA1ZmUxNWY1ZWFjZGFjNmYyNWNkZTJhNmE0ODhmYjg0YzNlMDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xNTMsNiArMTU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJJZChj
b25zdCBpbnQzMl90IHVzZXJJZCkgeyBtX3VzZXJJZCA9IHVzZXJJZDsgfQogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNldE1lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSB7IG1fbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmln
dXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZp
Z3VyYXRpb247IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0
ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFzc2VzRm9y
UGFyYW1ldGVyQ29kZXI7CkBAIC0xODksNiArMTk1LDkgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0
cmluZyBtX25ldHdvcmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0
aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uPiBtX21lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJiMjllN2I3
ZTJmOWI5NjVmZDkwMjI3NjVlZGMyZjkzMDYxNGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5j
cHAKQEAgLTAsMCArMSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKworLyoq
CisgKiBTRUNUSU9OOiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAU2hvcnRfZGVz
Y3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgdGhlIHNldHRpbmdzIGZvciB0aGUg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyCisgKiBAVGl0bGU6IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNvbnRleHQuCisgKgorICogI1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgaXMgYSBib3hlZCB0eXBlIHRoYXQgY2FuIGJlIHVzZWQgdG8g
cHJvdmlkZSBzb21lIGN1c3RvbSBzZXR0aW5ncworICogdG8gY29udHJvbCBob3cgdGhlIG1lbW9y
eSBwcmVzc3VyZSBzaXR1YXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBkaWZmZXJlbnQgcHJvY2Vz
c2VzLgorICoKKyAqIFRoZSBtZW1vcnkgcHJlc3N1cmUgc3lzdGVtIGltcGxlbWVudGVkIGluc2lk
ZSB0aGUgZGlmZmVyZW50IHByb2Nlc3Mgd2lsbCB0cnkgdG8ga2VlcCB0aGUgbWVtb3J5IHVzYWdl
CisgKiB1bmRlciB0aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQuIEluIG9yZGVyIHRvIGRvIHRoYXQs
IGl0IHdpbGwgY2hlY2sgdGhlIHVzZWQgbWVtb3J5IHdpdGggYSB1c2VyIGRlZmluZWQKKyAqIGZy
ZXF1ZW5jeSBhbmQgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxkIHRyeSB0byByZWxlYXNlIG1lbW9y
eS4gVGhlIHRocmVzaG9sZHMgcGFzc2VkIHdpbGwgZGVmaW5lIGhvdyB1cmdlbnQKKyAqIGlzIHRv
IHJlbGVhc2UgdGhhdCBtZW1vcnkuCisgKgorICogVGFrZSBpbnRvIGFjY291bnQgdGhhdCBiYWRs
eSBkZWZpbmVkIHBhcmFtZXRlcnMgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBwZXJmb3JtYW5jZSBv
ZiB0aGUgZW5naW5lLiBGb3IKKyAqIGV4YW1wbGUsIHNldHRpbmcgbWVtb3J5IGxpbWl0IHRvbyBs
b3cgd2l0aCBhIGZhc3QgcG9sbCBpbnRlcnZhbCBjYW4gY2F1c2UgdGhlIHByb2Nlc3MgdG8gY29u
c3RhbnRseQorICogYmUgdHJ5aW5nIHRvIHJlbGVhc2UgbWVtb3J5LgorICoKKyAqIEEgI1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgY2FuIGJlIHBhc3NlZCB0byBhICNXZWJLaXRXZWJDb250
ZXh0IGNvbnN0cnVjdG9yLCBhbmQgdGhlIHNldHRpbmdzIHdpbGwKKyAqIGJlIGFwcGxpZWQgdG8g
YWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGNyZWF0ZWQgYnkgdGhhdCBjb250ZXh0LgorICoKKyAqIFNp
bmNlOiAyLjM0CisgKi8KK3N0cnVjdCBfV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB7Cisg
ICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Cit9
OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MsIHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfY29weSwgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKTsKKworLyoq
CisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGUg
YSBuZXcgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mgd2l0aCB0aGUgZGVmYXVsdCB2YWx1
ZXMuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ldyAjV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncyBpbnN0YW5jZSBmaWxsZWQgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMu
CisgKgorICogU2luY2U6IDIuMzQKKyAqLworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyog
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcoKQoreworICAgIFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncykpKTsKKyAgICBuZXcgKG1lbW9yeVByZXNzdXJlU2V0dGluZ3Mp
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICByZXR1cm4gbWVtb3J5UHJlc3N1
cmVTZXR0aW5nczsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2NvcHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAq
CisgKiBNYWtlIGEgY29weSBvZiBAc2V0dGluZ3MuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IGZ1bGwpOiBBIGNvcHkgb2Ygb2YgdGhlIHBhc3NlZCAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkoV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2V0
dGluZ3MsIG51bGxwdHIpOworCisgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogY29w
eSA9IHN0YXRpY19jYXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihmYXN0WmVyb2Vk
TWFsbG9jKHNpemVvZihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKSkpOworCisgICAgY29w
eS0+Y29uZmlndXJhdGlvbiA9IHNldHRpbmdzLT5jb25maWd1cmF0aW9uOworCisgICAgcmV0dXJu
IGNvcHk7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVl
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICog
RnJlZSB0aGUgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuCisgKgorICogU2luY2U6IDIu
MzQKKyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUoV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChzZXR0aW5ncyk7CisKKyAgICBmYXN0RnJlZShzZXR0aW5ncyk7Cit9CisKKy8qKgorICogd2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0OgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAbWVtb3J5X2xpbWl0OiBh
bW91bnQgb2YgbWVtb3J5IChpbiBNQikgdGhhdCB0aGUgcHJvY2VzcyBpcyBhbGxvd2VkIHRvIHVz
ZS4KKyAqCisgKiBTZXRzIEBtZW1vcnlfbGltaXQgdGhlIG1lbW9yeSBsaW1pdCB2YWx1ZSB0byBA
c2V0dGluZ3MuCisgKgorICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIHN5c3RlbSdzIFJBTSBz
aXplIHdpdGggYSBtYXhpbXVtIG9mIDNHQi4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lk
IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdChXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQgbWVtb3J5TGltaXQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZfZmFpbChtZW1v
cnlMaW1pdCk7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5iYXNlVGhyZXNob2xkID0g
bWVtb3J5TGltaXQgKiBNQjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF9tZW1vcnlfbGltaXQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBpbiBNQiBvZiB0aGUgbWVt
b3J5IGxpbWl0IGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ3Vp
bnQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0KFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlv
bi5iYXNlVGhyZXNob2xkIC8gTUI7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICogQHZhbHVlOiBmcmFjdGlvbiBvZiB0aGUg
bWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUgcG9saWN5IHN0YXJ0cyB3b3JraW5n
LgorICoKKyAqIFNldHMgQHZhbHVlIGFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgZGVmaW5lZCBtZW1v
cnkgbGltaXQgd2hlcmUgdGhlIGNvbnNlcnZhdGl2ZQorICogcG9saWN5IHN0YXJ0cyB3b3JraW5n
LiBUaGlzIHBvbGljeSB3aWxsIHRyeSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgYnkK
KyAqIHJlbGVhc2luZyBub24gY3JpdGljYWwgbWVtb3J5LgorICoKKyAqIFRoZSB0aHJlc2hvbGQg
bXVzdCBiZSBiaWdnZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4gMSwgYW5kIGl0IG11c3QgYmUg
c21hbGxlcgorICogdGhhbiB0aGUgc3RyaWN0IHRocmVzaG9sZCBkZWZpbmVkIGluIEBzZXR0aW5n
cy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC4zMy4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2
b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJl
c2hvbGQoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MsIGdkb3VibGUgdmFs
dWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVl
IDwgc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24pOworCisg
ICAgc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24g
PSB2YWx1ZTsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dl
dF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzCisgKgorICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHRoZSBjb25z
ZXJ2YXRpdmUgdGhyZXNob2xkIGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQK
KyAqLworZ2RvdWJsZSB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2
YXRpdmVfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBz
ZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKK30K
KworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhy
ZXNob2xkOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisg
KiBAdmFsdWU6IGZyYWN0aW9uIG9mIHRoZSBtZW1vcnkgbGltaXQgd2hlcmUgdGhlIHN0cmljdCBw
b2xpY3kgc3RhcnRzIHdvcmtpbmcuCisgKgorICogU2V0cyBAdmFsdWUgYXMgdGhlIGZyYWN0aW9u
IG9mIHRoZSBkZWZpbmVkIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgc3RyaWN0CisgKiBwb2xpY3kg
c3RhcnRzIHdvcmtpbmcuIFRoaXMgcG9saWN5IHdpbGwgdHJ5IHRvIHJlZHVjZSB0aGUgbWVtb3J5
IGZvb3RwcmludCBieQorICogcmVsZWFzaW5nIGNyaXRpY2FsIG1lbW9yeS4KKyAqCisgKiBUaGUg
dGhyZXNob2xkIG11c3QgYmUgYmlnZ2VyIHRoYW4gMCBhbmQgc21hbGxlciB0aGFuIDEuIEFsc28s
IGl0IG11c3QgYmUgYmlnZ2VyCisgKiB0aGFuIHRoZSBjb25zZXJ2YXRpdmUgdGhyZXNob2xkIGRl
ZmluZWQgaW4gQHNldHRpbmdzLCBhbmQgc21hbGxlciB0aGFuIHRoZSBraWxsCisgKiB0aHJlc2hv
bGQgaWYgdGhlIGxhdHRlciBpcyBub3QgMC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC41LgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19zZXRfc3RyaWN0X3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0
aW5ncywgZ2RvdWJsZSB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNldHRpbmdzKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUgPiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVU
aHJlc2hvbGRGcmFjdGlvbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCghc2V0dGluZ3MtPmNvbmZp
Z3VyYXRpb24ua2lsbFRocmVzaG9sZEZyYWN0aW9uIHx8IHZhbHVlIDwgc2V0dGluZ3MtPmNvbmZp
Z3VyYXRpb24ua2lsbFRocmVzaG9sZEZyYWN0aW9uKTsKKworICAgIHNldHRpbmdzLT5jb25maWd1
cmF0aW9uLnN0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gdmFsdWU7Cit9CisKKy8qKgorICogd2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZDoKKyAqIEBz
ZXR0aW5nczogYSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICoKKyAqIFJldHVybnMg
dGhlIHZhbHVlIG9mIHRoZSB0aGUgc3RyaWN0IHRocmVzaG9sZCBpbnNpZGUgQHNldHRpbmdzLgor
ICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dkb3VibGUgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZXR0aW5ncywgMCk7CisK
KyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rp
b247Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2ls
bF90aHJlc2hvbGQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MKKyAqIEB2YWx1ZTogZnJhY3Rpb24gb2YgdGhlIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgcHJv
Y2VzcyB3aWxsIGJlIGtpbGxlZCBiZWNhdXNlCisgKiAgIG9mIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNh
Z2UuCisgKgorICogU2V0cyBAdmFsdWUgYXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBkZWZpbmVkIG1l
bW9yeSBsaW1pdCB3aGVyZSB0aGUgcHJvY2VzcyB3aWxsIGJlCisgKiBraWxsZWQuCisgKgorICog
VGhlIHRocmVzaG9sZCBtdXN0IGJlIGEgdmFsdWUgYmlnZ2VyIG9yIGVxdWFsIHRvIDAuIEEgdmFs
dWUgb2YgMCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzCisgKiBpcyBuZXZlciBraWxsZWQuIElmIHRo
ZSB0aHJlc2hvbGQgaXMgbm90IDAsIHRoZW4gaXQgbXVzdCBiZSBiaWdnZXIgdGhhbiB0aGUgc3Ry
aWN0IHRocmVzaG9sZAorICogZGVmaW5lZCBpbiBAc2V0dGluZ3MuIFRoZSB0aHJlc2hvbGQgY2Fu
IGFsc28gaGF2ZSB2YWx1ZXMgYmlnZ2VyIHRoYW4gMS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC4K
KyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNl
dHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0dGluZ3Mp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPj0gMCk7CisgICAgZ19yZXR1cm5faWZfZmFp
bCghdmFsdWUgfHwgdmFsdWUgPiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5zdHJpY3RUaHJlc2hv
bGRGcmFjdGlvbik7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xk
RnJhY3Rpb24gPSB2YWx1ZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh2YWx1ZSkgOiBzdGQ6Om51bGxv
cHQ7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfa2ls
bF90aHJlc2hvbGQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MKKyAqCisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgdGhlIGtpbGwgdGhyZXNob2xkIGlu
c2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2RvdWJsZSB3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZChXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChz
ZXR0aW5ncywgMCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ua2lsbFRo
cmVzaG9sZEZyYWN0aW9uLnZhbHVlX29yKDApOworfQorCisKKy8qKgorICogd2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbDoKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICogQHZhbHVlOiBwZXJpb2QgKGluIHNlY29u
ZHMpIGJldHdlZW4gbWVtb3J5IHVzYWdlIG1lYXN1cmVtZW50cy4KKyAqCisgKiBTZXRzIEB2YWx1
ZSBhcyB0aGUgcG9sbCBpbnRlcnZhbCB1c2VkIGJ5IEBzZXR0aW5ncy4KKyAqCisgKiBUaGUgcG9s
bCBpbnRlcnZhbCB2YWx1ZSBtdXN0IGJlIGJpZ2dlciB0aGFuIDAuIFRoZSBkZWZhdWx0IHZhbHVl
IGlzIDMwIHNlY29uZHMuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MqIHNldHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc2V0dGluZ3MpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPiAwKTsKKworICAg
IHNldHRpbmdzLT5jb25maWd1cmF0aW9uLnBvbGxJbnRlcnZhbCA9IFNlY29uZHModmFsdWUpOwor
fQorCisvKioKKyAqIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50
ZXJ2YWw6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAq
CisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBpbiBzZWNvbmRzIG9mIHRoZSB0aGUgcG9sbCBpbnRlcnZh
bCBpbnNpZGUgQHNldHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dkb3VibGUgd2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzZXR0aW5ncywgMCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ucG9s
bEludGVydmFsLnNlY29uZHMoKTsKK30KKworY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpD
b25maWd1cmF0aW9uJiB3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1
cmVIYW5kbGVyQ29uZmlndXJhdGlvbihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0
aW5ncykKK3sKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb247Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTQ1MjI5ZTY5
OGJiYjhlZGNmMGVhYTNmZmM4ZWQ3YmY0NGRkZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1By
aXZhdGUuaApAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKworY29uc3Qg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uJiB3ZWJraXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbihXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDZkZDlmMjBlNGZmMmJkYTAxODRk
MDY0NTMwMWNlZjIyZTQ3ZGNmMTUuLmUxY2EyZjdiMDQ2ZGMwMzA5YmY2ZWY5ZDFmYzUxMTBiMTA2
ODk5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEluaXRpYWxpemUuaCIK
ICNpbmNsdWRlICJXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByb3RvY29s
SGFuZGxlci5oIgpAQCAtMTI0LDYgKzEyNiw3IEBAIGVudW0gewogICAgIFBST1BfVVNFX1NZU1RF
TV9BUFBFQVJBTkNFX0ZPUl9TQ1JPTExCQVJTLAogI2VuZGlmCiAjZW5kaWYKKyAgICBQUk9QX01F
TU9SWV9QUkVTU1VSRV9TRVRUSU5HUywKICAgICBOX1BST1BFUlRJRVMsCiB9OwogCkBAIC0yNDEs
NiArMjQ0LDggQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAKICAgICBIYXNo
U2V0PFN0cmluZz4gZG5zUHJlZmV0Y2hlZEhvc3RzOwogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2
aXR5IGRuc1ByZWZldGNoSHlzdGVyZXJpczsKKworICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFs
c1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC0zNzYsNiArMzgxLDExIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
RCwgY29uc3QgR1ZhCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBS
T1BfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTOiB7CisgICAgICAgIGdwb2ludGVyIHNldHRpbmdz
ID0gZ192YWx1ZV9nZXRfYm94ZWQodmFsdWUpOworICAgICAgICBjb250ZXh0LT5wcml2LT5tZW1v
cnlQcmVzc3VyZVNldHRpbmdzID0gc2V0dGluZ3MgPyB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2NvcHkoc3RhdGljX2Nhc3Q8V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyo+KHNl
dHRpbmdzKSkgOiBudWxscHRyOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElE
LCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTM5OSw2ICs0MDksMTEgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBjb25maWd1cmF0
aW9uLnNldFVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKHByaXYtPnVzZVN5c3RlbUFw
cGVhcmFuY2VGb3JTY3JvbGxiYXJzKTsKICNlbmRpZgogI2VuZGlmCisgICAgaWYgKHByaXYtPm1l
bW9yeVByZXNzdXJlU2V0dGluZ3MpIHsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NH
ZXRNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKHByaXYtPm1lbW9yeVByZXNzdXJl
U2V0dGluZ3MpKTsKKyAgICAgICAgLy8gT25jZSB0aGUgc2V0dGluZ3MgaGF2ZSBiZWVuIHBhc3Nl
ZCB0byB0aGUgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRoZW0gYW55
bW9yZSBzbyB3ZSBjYW4gZnJlZSB0aGVtLgorICAgICAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX2ZyZWUocHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk7CisgICAgfQogCiAg
ICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJs
b2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRh
KCksIG51bGxwdHIpKTsKQEAgLTU0Myw2ICs1NTgsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2NsYXNzX2luaXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xh
c3MKICNlbmRpZgogI2VuZGlmCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJDb250ZXh0Om1l
bW9yeS1wcmVzc3VyZS1zZXR0aW5nczoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LgorICAgICAqCisg
ICAgICogU2luY2U6IDIuMzQKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX01FTU9S
WV9QUkVTU1VSRV9TRVRUSU5HU10gPQorICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoCisgICAg
ICAgICAgICAibWVtb3J5LXByZXNzdXJlLXNldHRpbmdzIiwKKyAgICAgICAgICAgIF8oIk1lbW9y
eSBQcmVzc3VyZSBTZXR0aW5ncyIpLAorICAgICAgICAgICAgXygiVGhlIFdlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dCIpLAorICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhn
T2JqZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Njc4MzUxYjQ0NjJkODZlMDA2
YzZiM2EwYmIyOGViMWZiMDFhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApAQCAtMCwwICsx
LDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKyNk
ZWZpbmUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTICh3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3M7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Z2V0X3R5cGUgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19u
ZXcgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2Nv
cHkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpz
ZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19mcmVlICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdCAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
bWVtb3J5X2xpbWl0KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0ICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKaW5kZXggYjVmM2U3ZDYwZDIwMmUwYzY1Yjk3NzgzZWRlNzRlMDlmN2FlNzhiOS4uNTFk
NGNhYjI3ZWMyYjM0ZmZhZWJhOTY1NTNkOWI3MmJmODI3MDYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CkBAIC0xOTUzLDQgKzE5NTMsMjcgQEAgV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzUHJpdmF0ZQogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUKIDwvU0VDVElPTj4K
IAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzPC9GSUxFPgor
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncword2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19uZXcKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weQord2Via2l0X21l
bW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzX3NldF9tZW1vcnlfbGltaXQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X21lbW9yeV9saW1pdAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2Vy
dmF0aXZlX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfY29u
c2VydmF0aXZlX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRf
c3RyaWN0X3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfc3Ry
aWN0X3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90
aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNo
b2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsCit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsCisKKzxTVUJT
RUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBl
CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NF
VFRJTkdTCis8L1NFQ1RJT04+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKaW5kZXggZWNiZTQzM2VkODg4MzUzYjFlNjAxMzk0M2I0NDYzODM1YzM1ODJkMi4uYjdk
Mjc0MWM0YjJjMWFkNGUzNGExZmFiNDhmZWM2MWFmMWM2MTAyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdE1pbWVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0
aW9uQWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI0NzM1Y2Y2
NzllNTY4NzMxZjg1OTA0ZmFiMmZlNWQ5MTg4ZmYzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5o
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRp
cmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Nf
aAorI2RlZmluZSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5HUyAod2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF90eXBlICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzICoKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
bmV3ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19j
b3B5ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAq
c2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfZnJlZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX3NldF9tZW1vcnlfbGltaXQgICAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAg
IG1lbW9yeV9saW1pdCk7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkIChXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0X3RocmVzaG9sZCAgICAgICAoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZCAgICAgICAoV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkICAgICAgICAgKFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkICAgICAgICAgKFdlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsICAgICAgICAgIChXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3By
ZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsICAgICAgICAgIChXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA0
YjY2YmI5NWYxMzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li45ZTA0YTBhMDQ5Zjg3Y2Nh
YWI0OTQzZWJkOTQwYzViMzk2MzMzNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNjUxLDMg
KzE2NTEsMjcgQEAgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCiBXZWJLaXRXZWJz
aXRlUG9saWNpZXNQcml2YXRlCiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQogPC9T
RUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M8
L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCit3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19jb3B5Cit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19nZXRfbWVtb3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3Nl
dF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzX3NldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3Nl
dF9raWxsX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfa2ls
bF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50
ZXJ2YWwKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwK
KworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Z2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9NRU1PUllfUFJF
U1NVUkVfU0VUVElOR1MKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L3dlYmtpdC5oCmluZGV4IDg3OTI5MjU3YmY3M2FiYTY4NGEzODBhY2NkOGMxYmJiMzk0YmFkODcu
LjVjOTNkNzYwZjczNGExMmY2MTQ4OTk1NDUxMzVmZGY3NzAxNjQ1NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg
PHdwZS9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0TWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdwZS9X
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdE1pbWVJ
bmZvLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggODRhYTY1
MzI3OGY4MzE4YjFkY2Y3YzliYTE1ZTgwMjJmODIwNzYzYi4uMTYwM2M5YjJmMzQ5NmM1ZjNmZTFl
YmQ2OTYxYTZjMDlmNGNiNzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcGFy
YW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyA9IG1fY29uZmlndXJhdGlv
bi0+dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMoKTsKICNlbmRpZgorCisgICAgcGFy
YW1ldGVycy5tZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0
aW9uLT5tZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKCk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCmluZGV4IGJhZDAwMTQ2ZDg4
NjM1MjMwYjBhNTcxYTk5MzljMjFjZDhhNjQ4MjIuLmNkNzMyMTkzZTgzMTkwNjlkOWQzMGE3MjZh
MjYzZGM1MTYxMDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9X
ZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTEwNSw2ICsxMDUsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYQogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIHNldFVzZVN5c3RlbUFw
cGVhcmFuY2VGb3JTY3JvbGxiYXJzKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZUZvclNj
cm9sbGJhcnMpOwogI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy5tZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb25maWd1cmF0aW9uKQorICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmds
ZXRvbigpLnNldENvbmZpZ3VyYXRpb24oV1RGTW92ZSgqcGFyYW1ldGVycy5tZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb25maWd1cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1T
ZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyYmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDVjMWU1OTkyMDFiZjQ3ZjEzNmU4NTgxNDY1ZWY1YWVlMDRmZWZjOWIuLmZmZGY2YmJiYTVkMjM5
OWIzMjM3NTQ0MTllZWJhNGRlZTE0MzVhMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wNy0yMSAgTWlndWVs
IEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWxsb3cg
dGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5zaWRlIHRo
ZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgdGVzdCBmb3IgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBBUEkgYW5k
IHRvIHRlc3QgV2ViS2l0V2ViQ29udGV4dCB3aXRoCisgICAgICAgIG5vbiBkZWZhdWx0IFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgdmFsdWVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKE1l
bW9yeVByZXNzdXJlVGVzdDo6c2V0dXApOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVUZXN0Ojp0
ZWFyZG93bik6CisgICAgICAgIChNZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NUZXJtaW5h
dGVkQ2FsbGJhY2spOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVUZXN0Ojp3YWl0VW50aWxXZWJQ
cm9jZXNzVGVybWluYXRlZCk6CisgICAgICAgICh0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk6
CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9UZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6VGVzdCk6CisKIDIwMjEtMDctMjAgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVuIGZ0bC1l
YWdlci1uby1jaml0IG9uIGRlYnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5k
ZXggOWU5MjMzYWIwOTA3MDk5YTAyYjc4NGMyODRmZWQxOTczM2Y2NDI3Ni4uNTMyNTQ4YjFlNGUy
YTBhZjVjOWEyZWUxYzMyMDZiY2JmMjg4ZjQzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CkBAIC03NzAsNiArNzcwLDEwNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0
dGluZ3MoUHJveHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogI2VuZGlmCiB9CiAKK2NsYXNz
IE1lbW9yeVByZXNzdXJlVGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAg
TUFLRV9HTElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJET1dOKE1lbW9yeVByZXNzdXJl
VGVzdCwgc2V0dXAsIHRlYXJkb3duKTsKKworICAgIHN0YXRpYyB2b2lkIHNldHVwKCkKKyAgICB7
CisgICAgICAgIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3NfbmV3KCk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3Ms
IDIwKTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9p
bnRlcnZhbChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3MsIDAuNSk7CisgICAgICAgIHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkKFRlc3Q6OnNf
bWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgMSk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3Nfc2V0X3N0cmljdF90aHJlc2hvbGQoVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNl
dHRpbmdzLCAwLjc1KTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19z
ZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3Ms
IDAuNSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRvd24oKQorICAgIHsKKyAgICAg
ICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKFRlc3Q6OnNfbWVtb3J5UHJl
c3N1cmVTZXR0aW5ncyk7CisgICAgICAgIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9
IG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlcm1pbmF0ZWRD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uLCBNZW1vcnlQcmVzc3VyZVRlc3QqIHRlc3QpCisgICAgeworICAgICAg
ICB0ZXN0LT5tX3Rlcm1pbmF0aW9uUmVhc29uID0gcmVhc29uOworICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4od2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX21haW5f
bG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGls
V2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9h
ZnRlcihtX3dlYlZpZXcsICJ3ZWItcHJvY2Vzcy10ZXJtaW5hdGVkIiwgR19DQUxMQkFDSyhNZW1v
cnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NUZXJtaW5hdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFdlYktpdFdl
YlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiBtX3Rlcm1pbmF0aW9uUmVhc29uIHsgV0VCS0lUX1dF
Ql9QUk9DRVNTX0NSQVNIRUQgfTsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICAvLyBCZWZvcmUgdGVzdGluZyB0aGUgc2V0dGluZ3MgdGhhdCBoYXZlIGJlZW4gc2V0IHRvIHRo
ZSBjb250ZXh0LCB1c2UgYSBuZXcgaW5zdGFuY2UKKyAgICAvLyBvZiBXZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzIHRvIHRlc3QgdGhlIGRlZmF1bHQgdmFsdWVzLCBnZXR0ZXJzIGFuZCBzZXR0
ZXJzLgorICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFdlIGNhbid0IGV4YWN0
bHkga25vdyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIG1lbW9yeSBsaW1pdCwgYXMgaXQgZGVw
ZW5kcyBvbgorICAgIC8vIHRoZSBoYXJkd2FyZSBvZiB0aGUgbWFjaGluZSwgc28ganVzdCBlbnN1
cmUgdGhhdCBpdCdzIHNvbWV0aGluZyA+IDAgYW5kIDw9IDNHQi4KKyAgICBndWludCBsaW1pdCA9
IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdChzZXR0aW5n
cyk7CisgICAgZ19hc3NlcnRfY21wdWludChsaW1pdCwgPiwgMCk7CisgICAgZ19hc3NlcnRfY21w
dWludChsaW1pdCAqIE1CLCA8PSwgMyAqIEdCKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKHNl
dHRpbmdzKSwgPT0sIDAuMzMpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hvbGQoc2V0dGluZ3MpLCA9PSwgMC41
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X2dldF9raWxsX3RocmVzaG9sZChzZXR0aW5ncyksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBm
bG9hdCh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsKHNl
dHRpbmdzKSwgPT0sIDMwKTsKKworICAgIC8vIFRlc3Qgc2V0dGluZyBhbmQgZ2V0dGluZyB2YWx1
ZXMuCisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0
KHNldHRpbmdzLCAyMCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQoc2V0dGluZ3MpLCA9PSwgMjApOworCisgICAg
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVzaG9s
ZChzZXR0aW5ncywgMC40KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfbWVtb3J5X3By
ZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKHNldHRpbmdzKSwgPT0s
IDAuNCk7CisKKyAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3Rf
dGhyZXNob2xkKHNldHRpbmdzLCAwLjYpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hvbGQoc2V0dGluZ3MpLCA9
PSwgMC42KTsKKworICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxf
dGhyZXNob2xkKHNldHRpbmdzLCAxLjEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkKHNldHRpbmdzKSwgPT0s
IDEuMSk7CisKKyAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2lu
dGVydmFsKHNldHRpbmdzLCA1KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsKHNldHRpbmdzKSwgPT0sIDUpOwor
CisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKHNldHRpbmdzKTsKKwor
ICAgIC8vIEFuIGVtcHR5IHZpZXcgdXNlcyBhcm91bmQgN01CIG9mIG1lbW9yeS4gV2UncmUgc2V0
dGluZyBhIG1heGltdW0gb2YgMjBNQiBoZXJlLCBwb2xsaW5nIGV2ZXJ5IDAuNSBzZWNvbmRzLAor
ICAgIC8vIGFuZCB0aGUga2lsbCBmcmFjdGlvbiBpcyAxLCBzbyB0aGUgd2ViIHByb2Nlc3Mgd2ls
bCBiZSBraWxsZWQgd2hlbiBpdCBleGNlZWRzIDIwTUIuCisgICAgLy8gVGhlIHRlc3QgaHRtbCB3
aWxsIGFsbG9jYXRlIGEgY2FudmFzIG9mIDMwMDB4MzAwMCwgd2hpY2ggcmVxdWlyZXMgYXJvdW5k
IDM2TUIgb2YgbWVtb3J5LCBzbyBvbmNlIGl0IGdldHMKKyAgICAvLyBjcmVhdGVkLCB0aGUgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyIHdpbGwgZGV0ZWN0IHRoYXQgdGhlIG1lbW9yeSB1c2FnZSBpcyB0
b28gaGlnaCBhbmQga2lsbCB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gVGhpcyB0cmlnZ2VycyB0
aGUgd2ViLXByb2Nlc3MtdGVybWluYXRlZCBzaWduYWwgaW4gdGhlIHZpZXcgd2l0aCBXRUJLSVRf
V0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUCisgICAgLy8gYXMgdGhlIHRlcm1pbmF0
aW9uIHJlYXNvbi4KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sID0KKyAgICAgICAgIjxo
dG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxzY3JpcHQ+IgorICAgICAg
ICAiICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsiCisgICAgICAgICIgICAgICAgIHZhciBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7IgorICAgICAgICAiICAg
ICAgICBjYW52YXMud2lkdGggPSAzMDAwOyIKKyAgICAgICAgIiAgICAgICAgY2FudmFzLmhlaWdo
dCA9IDMwMDA7IgorICAgICAgICAiICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCcyZCcpOyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAnZ3JlZW4n
OyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCAzMDAwLCAzMDAwKTsi
CisgICAgICAgICIgICAgICB9LCAwKTsiCisgICAgICAgICIgICAgPC9zY3JpcHQ+IgorICAgICAg
ICAiICAgIDxjYW52YXMgaWQ9J2NhbnZhcyc+PC9jYW52YXM+IgorICAgICAgICAiICA8L2JvZHk+
IgorICAgICAgICAiPC9odG1sPiI7CisKKyAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJvY2Vzc0Ny
YXNoID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChodG1sLCBudWxscHRyKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxXZWJQcm9jZXNzVGVybWluYXRlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+bV90ZXJtaW5hdGlvblJlYXNvbiwgPT0sIFdFQktJVF9XRUJfUFJPQ0VTU19FWENFRURF
RF9NRU1PUllfTElNSVQpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9
IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CkBAIC03ODYsNiArODg2LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFNlY3VyaXR5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIi
LCAic2VjdXJpdHktcG9saWN5IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eVBvbGljeSk7CiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVz
dFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOwogICAgIFByb3h5VGVzdDo6YWRkKCJXZWJLaXRX
ZWJDb250ZXh0IiwgInByb3h5IiwgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKTsKKyAgICBN
ZW1vcnlQcmVzc3VyZVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJtZW1vcnktcHJlc3N1
cmUiLCB0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCmlu
ZGV4IGZhNWJlMTYyNzJkYzI2NWFhMzk1NjIwYjE2OTEyNjdlYmFjOWQ5MzUuLmU4OTZmN2FlMTVm
MDNmYTY4MDRjYzhiNGI4NTM1Nzk3Y2ZmNTFjZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIEdSZWZQ
dHI8R0RCdXNTZXJ2ZXI+IFRlc3Q6OnNfZGJ1c1NlcnZlcjsKIFZlY3RvcjxHUmVmUHRyPEdEQnVz
Q29ubmVjdGlvbj4+IFRlc3Q6OnNfZGJ1c0Nvbm5lY3Rpb25zOwogSGFzaE1hcDx1aW50NjRfdCwg
R0RCdXNDb25uZWN0aW9uKj4gVGVzdDo6c19kYnVzQ29ubmVjdGlvblBhZ2VNYXA7CitXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBu
dWxscHRyOwogCiB2b2lkIGJlZm9yZUFsbCgpOwogdm9pZCBhZnRlckFsbCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggMTQ0NTMxMWY2
Zjg2ZWQzZjU0Njg5OTNkODBmMDg4MzZiZDQ5ZDcyNi4uOGM3OTAwMDQ5YTNiYTI0NDRjYzQ2NzMy
ZjQ1YTEzNzZiNzlmN2I0YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvVGVzdE1haW4uaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9UZXN0TWFpbi5oCkBAIC0xNDIsNiArMTQyLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
InVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsIEZBTFNFLAogI2VuZGlmCiAj
ZW5kaWYKKyAgICAgICAgICAgICJtZW1vcnktcHJlc3N1cmUtc2V0dGluZ3MiLCBzX21lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MsCiAgICAgICAgICAgICBudWxscHRyKSkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fd2ViQ29udGV4dC5nZXQo
KSkpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgImluaXRp
YWxpemUtd2ViLWV4dGVuc2lvbnMiLCBHX0NBTExCQUNLKGluaXRpYWxpemVXZWJFeHRlbnNpb25z
Q2FsbGJhY2spLCB0aGlzKTsKQEAgLTI5Miw0ICsyOTMsNSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEdSZWZQdHI8R0RCdXNTZXJ2ZXI+IHNfZGJ1c1NlcnZlcjsKICAgICBzdGF0aWMgVmVjdG9yPEdS
ZWZQdHI8R0RCdXNDb25uZWN0aW9uPj4gc19kYnVzQ29ubmVjdGlvbnM7CiAgICAgc3RhdGljIEhh
c2hNYXA8dWludDY0X3QsIEdEQnVzQ29ubmVjdGlvbio+IHNfZGJ1c0Nvbm5lY3Rpb25QYWdlTWFw
OworICAgIHN0YXRpYyBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzX21lbW9yeVByZXNz
dXJlU2V0dGluZ3M7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433927</attachid>
            <date>2021-07-21 06:16:39 -0700</date>
            <delta_ts>2021-07-21 06:51:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210721151638.patch</filename>
            <type>text/plain</type>
            <size>61412</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyZDUzZWNjMTg4ZjZlMWZlMTc3OTk4
ODc0OTE5ZGIzMTg4NjZhZWYuLjZjNWU3OGUxNzRlNzI3YjBlOTc3OTc5NTI5NzI5ZDVmZTM3NjFh
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDctMjEgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNv
bmZpZ3VyYXRpb24gc3RydWN0dXJlIHRvIE1lbW9yeVByZXNzdXJlSGFuZGxlciwgd2l0aCB0aGUg
bWV0aG9kcyB0byBlbmNvZGUvZGVjb2RlIGl0LiBBbHNvCisgICAgICAgIGFkZCBhIG1ldGhvZCB0
byBzZXQgYSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byBhIE1lbW9yeVByZXNzdXJlSGFuZGxl
ciBpbnN0YW5jZSwgYW5kIG1vZGlmeSB0aGUKKyAgICAgICAgYmVoYXZpb3Igc28gdGhlIHRoZSBj
b25maWd1cmF0aW9uIGlzIHVzZWQgd2hlbiBjaGVja2luZyB0aGUgbWVtb3J5IHVzZWQgYnkgdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01l
bW9yeU1vbml0b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVz
aG9sZEZvck1lbW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnRocmVzaG9sZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiB3dGYvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldENvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTA3LTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4MDEwMyBpcyBu
b3QgbmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1OTZl
ZmViMTViNGVhOTc1MzdlZDk4Zjk2MjgwNDM0NzJkZTYyZTQuLjJjNzNjYjU4YTMyNzk3NzNjOGY3
MzM2MzhlNTQyNDc3NmIwN2ZmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0w
Ny0yMSAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
W1dQRV0gQWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIgaW5zaWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJyZW50TWVtb3J5VXNh
Z2VQb2xpY3koKSBpcyBub3cgYW4gaW5zdGFuY2UgbWV0aG9kIGFuZCBub3QgYSBjbGFzcyBvbmUs
CisgICAgICAgIHNvIHVwZGF0ZSB0aGUgY2FsbCBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3IgdG8g
dXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgorCiAyMDIxLTA3LTIwICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4MDEwMyBpcyBub3Qg
bmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZGY4ZTQwYmY2
ZDI4YmY1YWE4OTRlYjk3NTEyYWY5MmE4NzNkYzllLi41MWI1Nzg3Mjg5NjUzN2Q4MTViYmMyMWYx
MzAwN2U4MWRjY2E2M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA3LTIxICBN
aWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBB
bGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNp
ZGUgdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjI3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBuZXcgQVBJIHR5cGUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3IKKyAgICAgICAgb2Yg
dGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlci4gQWRkIGEgcHJvcGVydHkgdG8gV2ViS2l0V2ViQ29u
dGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MKKyAgICAgICAgbmV3IHNldHRpbmdzIHRvIGl0
LCBhbmQgc3RvcmUgdGhlbSBpbnNpZGUgaXRzIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LiBUaG9zZSBzZXR0aW5ncworICAgICAgICB3aWxsIGJlIHNldCB0byBuZXcgd2ViIHByb2Nlc3Nl
cyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxpemF0aW9uIHN0YWdlLgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAg
ICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291
cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KToKKyAgICAgICAgKHdlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2ZyZWUpOgorICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19zZXRfbWVtb3J5X2xpbWl0KToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQpOgor
ICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0X3RocmVz
aG9sZCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9zdHJp
Y3RfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
c2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwpOgorICAgICAgICAod2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICh3ZWJraXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3NQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dl
Yl9jb250ZXh0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEF1dG9jbGVhbnVwcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1dG9j
bGVhbnVwcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMjEtMDctMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gQWRkIFNQSSBmb3IgaW50ZXJuYWwgY2xpZW50cyB0byBjb25zdWx0IHdoZXRo
ZXIgb3Igbm90IHZpZXdwb3J0IHF1aXJrcyBzaG91bGQgYmUgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNWIwN2RmODA5NGRlMjliZmM3MzAwMDc3
MzRhOTdjNTRhN2JhM2ZmOS4uNzVhMDg1NDYwOGVmNWE5MjFlMjUyOTJkYTFmYjY4ZjRlZDE1NzVm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0zOCw2ICsz
OCwxNiBAQCBERUZJTkVfTE9HX0NIQU5ORUwoTWVtb3J5UHJlc3N1cmUsIExPR19DSEFOTkVMX1dF
QktJVF9TVUJTWVNURU0pOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9IGZhbHNlOwogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBjb25zdCBkb3VibGUgc19jb25zZXJ2YXRpdmVU
aHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19zdHJpY3RUaHJl
c2hvbGRGcmFjdGlvbiA9IDAuNjU7CisjZWxzZQorc3RhdGljIGNvbnN0IGRvdWJsZSBzX2NvbnNl
cnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19z
dHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKKyNlbmRpZgorc3RhdGljIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBzX2tpbGxUaHJlc2hvbGRGcmFjdGlvbjsKK3N0YXRpYyBjb25zdCBT
ZWNvbmRzIHNfcG9sbEludGVydmFsID0gMzBfczsKKwogTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNzdXJlSGFuZGxlcjsK
QEAgLTczLDcgKzgzLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVz
ZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKIAogICAgIGlmICh1c2UpIHsKICAgICAg
ICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1l
ci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lci0+c3Rh
cnRSZXBlYXRpbmcobV9jb25maWd1cmF0aW9uLnBvbGxJbnRlcnZhbCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CiB9CkBAIC0xMTAsNiArMTIwLDkg
QEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFBhZ2VDb3VudCh1bnNpZ25lZCBwYWdl
Q291bnQpCiAKIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRo
cmVzaG9sZEZvck1lbW9yeUtpbGwoKQogeworICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ua2lsbFRo
cmVzaG9sZEZyYWN0aW9uKQorICAgICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmJhc2VUaHJl
c2hvbGQgKiAoKm1fY29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24pOworCiAgICAg
c3dpdGNoIChtX3Byb2Nlc3NTdGF0ZSkgewogICAgIGNhc2UgV2Vic2FtUHJvY2Vzc1N0YXRlOjpJ
bmFjdGl2ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZEZvck1lbW9yeUtpbGxPZkluYWN0aXZl
UHJvY2VzcyhtX3BhZ2VDb3VudCk7CkBAIC0xMTksMzIgKzEzMiwyMiBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCkK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgc2l6ZV90IHRocmVzaG9sZEZv
clBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCitzaXplX3QgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjp0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQogewot
ICAgIGNvbnN0IHNpemVfdCBiYXNlVGhyZXNob2xkRm9yUG9saWN5ID0gc3RkOjptaW4oMyAqIEdC
LCByYW1TaXplKCkpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBjb25zdCBkb3Vi
bGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7Ci0gICAgY29uc3QgZG91Ymxl
IHN0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gMC42NTsKLSNlbHNlCi0gICAgY29uc3QgZG91Ymxl
IGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKLSAgICBjb25zdCBkb3VibGUg
c3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7Ci0jZW5kaWYKLQogICAgIHN3aXRjaCAocG9s
aWN5KSB7CiAgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOgogICAgICAg
ICByZXR1cm4gMDsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6Ci0g
ICAgICAgIHJldHVybiBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICogY29uc2VydmF0aXZlVGhyZXNo
b2xkRnJhY3Rpb247CisgICAgICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYmFzZVRocmVzaG9s
ZCAqIG1fY29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKICAgICBj
YXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6Ci0gICAgICAgIHJldHVybiBiYXNlVGhyZXNo
b2xkRm9yUG9saWN5ICogc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIHJldHVybiBt
X2NvbmZpZ3VyYXRpb24uYmFzZVRocmVzaG9sZCAqIG1fY29uZmlndXJhdGlvbi5zdHJpY3RUaHJl
c2hvbGRGcmFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgTWVtb3J5VXNhZ2VQb2xp
Y3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCitNZW1vcnlVc2FnZVBvbGlj
eSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBvbGljeUZvckZvb3RwcmludChzaXplX3QgZm9vdHBy
aW50KQogewogICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVz
YWdlUG9saWN5OjpTdHJpY3QpKQogICAgICAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0
cmljdDsKQEAgLTMxNiw0ICszMTksMjIgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNl
dERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJiBxdWUKIH0KICNl
bmRpZgogCitNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb246OkNvbmZpZ3VyYXRp
b24oKQorICAgIDogYmFzZVRocmVzaG9sZChzdGQ6Om1pbigzICogR0IsIHJhbVNpemUoKSkpCisg
ICAgLCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbihzX2NvbnNlcnZhdGl2ZVRocmVzaG9s
ZEZyYWN0aW9uKQorICAgICwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24oc19zdHJpY3RUaHJlc2hv
bGRGcmFjdGlvbikKKyAgICAsIGtpbGxUaHJlc2hvbGRGcmFjdGlvbihzX2tpbGxUaHJlc2hvbGRG
cmFjdGlvbikKKyAgICAsIHBvbGxJbnRlcnZhbChzX3BvbGxJbnRlcnZhbCkKK3sKK30KKworTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKHNpemVfdCBi
YXNlLCBkb3VibGUgY29uc2VydmF0aXZlLCBkb3VibGUgc3RyaWN0LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4ga2lsbCwgU2Vjb25kcyBpbnRlcnZhbCkKKyAgICA6IGJhc2VUaHJlc2hvbGQoYmFzZSkK
KyAgICAsIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKGNvbnNlcnZhdGl2ZSkKKyAgICAs
IHN0cmljdFRocmVzaG9sZEZyYWN0aW9uKHN0cmljdCkKKyAgICAsIGtpbGxUaHJlc2hvbGRGcmFj
dGlvbihraWxsKQorICAgICwgcG9sbEludGVydmFsKGludGVydmFsKQoreworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4
IDBiNWQ3N2JlM2M3MGIzYzE1NGI0MWJiZDI1MmI0MDViN2UzYWQxMDYuLjA5MzA2ZTMzNGEzYmMz
OWU5ZTczYmI0MDhlNDAwMTI2MmYxYmVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2ltdWxhdGlu
Z01lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVz
c3VyZTsgfQogICAgIHZvaWQgc2V0VW5kZXJNZW1vcnlQcmVzc3VyZShib29sKTsKIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgY3VycmVudE1lbW9yeVVz
YWdlUG9saWN5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lbW9yeVVzYWdlUG9saWN5IGN1
cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRj
aF9xdWV1ZV90PiYmKTsKQEAgLTE0Nyw2ICsxNDcsNTkgQEAgcHVibGljOgogICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19sb2dnaW5nRW5hYmxlZDsKICAgICB9OwogCisg
ICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWd1cmF0aW9uKCk7Cisg
ICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWd1cmF0aW9uKHNpemVfdCwgZG91YmxlLCBk
b3VibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgU2Vjb25kcyk7CisKKyAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBiYXNlVGhyZXNob2xkOworICAgICAgICAg
ICAgZW5jb2RlciA8PCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBlbmNvZGVy
IDw8IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcG9sbElu
dGVydmFsOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KKyAg
ICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBi
YXNlVGhyZXNob2xkOworICAgICAgICAgICAgZGVjb2RlciA+PiBiYXNlVGhyZXNob2xkOworICAg
ICAgICAgICAgaWYgKCFiYXNlVGhyZXNob2xkKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zZXJ2YXRp
dmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gY29uc2VydmF0aXZl
VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBpZiAoIWNvbnNlcnZhdGl2ZVRocmVzaG9s
ZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdHJpY3RUaHJlc2hvbGRGcmFjdGlvbjsKKyAg
ICAgICAgICAgIGRlY29kZXIgPj4gc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAg
ICBpZiAoIXN0cmljdFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxk
b3VibGU+PiBraWxsVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBkZWNvZGVyID4+IGtp
bGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGlmICgha2lsbFRocmVzaG9sZEZyYWN0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gcG9sbEludGVydmFsOworICAgICAgICAgICAgZGVjb2Rl
ciA+PiBwb2xsSW50ZXJ2YWw7CisgICAgICAgICAgICBpZiAoIXBvbGxJbnRlcnZhbCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICByZXR1cm4ge3sg
KmJhc2VUaHJlc2hvbGQsICpjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiwgKnN0cmljdFRo
cmVzaG9sZEZyYWN0aW9uLCAqa2lsbFRocmVzaG9sZEZyYWN0aW9uLCAqcG9sbEludGVydmFsIH19
OworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGJhc2VUaHJlc2hvbGQ7CisgICAgICAgIGRv
dWJsZSBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgZG91YmxlIHN0cmlj
dFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4ga2lsbFRo
cmVzaG9sZEZyYWN0aW9uOworICAgICAgICBTZWNvbmRzIHBvbGxJbnRlcnZhbDsKKyAgICB9Owor
ICAgIHZvaWQgc2V0Q29uZmlndXJhdGlvbihDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikg
eyBtX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOyB9CisKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsLCBTeW5jaHJvbm91cyA9
IFN5bmNocm9ub3VzOjpObyk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBiZWdpblNp
bXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CkBAIC0xNjEsNiArMjE0LDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxs
KCk7CisgICAgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSk7Cisg
ICAgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCk7CisKICAgICB2
b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAgdm9pZCB1bmluc3RhbGwo
KTsKQEAgLTE5OCw2ICsyNTQsOCBAQCBwcml2YXRlOgogICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX2RpZEV4Y2VlZEluYWN0aXZlTGltaXRXaGlsZUFjdGl2ZUNhbGxiYWNrOwogICAgIExvd01l
bW9yeUhhbmRsZXIgbV9sb3dNZW1vcnlIYW5kbGVyOwogCisgICAgQ29uZmlndXJhdGlvbiBtX2Nv
bmZpZ3VyYXRpb247CisKICNpZiBPUyhXSU5ET1dTKQogICAgIHZvaWQgd2luZG93c01lYXN1cmVt
ZW50VGltZXJGaXJlZCgpOwogICAgIFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxl
cj4gbV93aW5kb3dzTWVhc3VyZW1lbnRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNTk3MTljYWI3MjY1Njc5ZTQ5
ZThiMThhZmExZjI1MjcyNWNkMDM5YS4uNWE1ZWY2YjcxNzkzNGJlNDdmM2UyN2M1ZTQ1ZTU4ZmRi
MmRkMDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3koKQogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRpb24gPSAyX3M7CiAgICAgYXV0byBub3cgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKICAgICBpZiAobm93IC0gY2FjaGVkTWVtb3J5UG9saWN5VGltZSA+
IG1lbW9yeVBvbGljeUNhY2hpbmdEdXJhdGlvbikgewotICAgICAgICBjYWNoZWRNZW1vcnlQb2xp
Y3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwor
ICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmds
ZXRvbigpLmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogICAgICAgICBjYWNoZWRNZW1vcnlQ
b2xpY3lUaW1lID0gbm93OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggODk4
NjA4MmFmNzg1NDdmY2NlNDQ3NWQwNTMxNWQzODE5ZjkxNDA5NC4uODhmMGE2MDYxNTJmZjI5MzA0
YzYyMWZmZTRlNTNmNjY3OTdhOGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMTIs
NiArMTEyLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWltZUluZm8uaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5o
CiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZTM5N2MwN2I3Y2Y3MTcw
ZjRkODMzOTk3ZDQ5OWI0YWM3ZmZjZDg5OC4uODY3MjRjNjdlODg3MWE5NDBhNGY5M2Y2NWNmZjI1
NDhhNGMxZjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNDQsNiArMTQ0LDcgQEAg
c2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRNZWRp
YUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWltZUluZm8uaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCAyNzgxNGY3YjE1ODA0NWI5MDg2YzQ2YzI5NDkwODU2NjE0OWI2MjVmLi43
NzZmYjBiZTY5OWNmNzRjYWVhNmE2ODI0ZjM5NGU4NGJhOGU4NjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MjA4LDYgKzIwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIAogICAgIGVuY29kZXIgPDwg
YWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCisgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9u
OworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKQEAgLTU2OSw2ICs1NzMsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuYWNjZXNzaWJpbGl0eVByZWZlcmVu
Y2VzID0gV1RGTW92ZSgqYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKTsKIAorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+PiBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXJDb25maWd1cmF0aW9uOworICAgIGRlY29kZXIgPj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29u
ZmlndXJhdGlvbjsKKyAgICBpZiAoIW1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKCptZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1
cmF0aW9uKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjYzgz
NTI4ZGMxZGE0MzIxZmU0NmY3NjdmMmVjNDdlNzhiMjhiZjYwLi4wNjBkNGYxOTMzMWE1NzljNGE2
ZDZhMjZmNDc1MjhiZWY2M2YwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Miw2ICs1MiwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwogfQpAQCAtMjQ5LDYgKzI1Mywx
MCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICAK
ICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzOwor
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RkOjpvcHRpb25hbDxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+IG1lbW9yeVByZXNzdXJlSGFuZGxl
ckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0dUSy50eHQKaW5kZXggOTViNGZmYjc2OWQ3MTFiNmE0ODVhMDA1ZjdhM2Y1ODE3MmZjZjFh
ZC4uZWI1OWRlN2JhNWJjNjlmNDE0ZDJhNzIwMzhiNjI5ZDdhN2IyYWQ0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CkBAIC0xNDksNiArMTQ5LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNaW1lSW5mby5jcHAgQG5vLXVuaWZ5
CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGY4ZmIxNTExZjJhMDE5YTA4YTg5
NmY3Y2JmNDVjYTQ3MGRhMjgxODUuLjJhNGY0MDZhYmI4YWZiMzA0ZWUzOGQ2MmIzYTJiZjc2MDg5
NGNkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTM5LDYgKzEzOSw3IEBAIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1
bHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lZGlhS2V5U3lzdGVt
UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
YXZpZ2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
YXZpZ2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
OTVmZmUwNTg0Y2FhNzE5MTFkYWJjZTYxOWQ4NDI5ZGY1NWRhZWNlMC4uODM2NGEwYzAyMTIxNzMz
OWYxMTlmYWVkOWUzYTE2NjZmMWMzZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTc3
LDYgKzc3LDkgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX3dlYlByb2Nlc3NQYXRoID0gdGhpcy0+bV93
ZWJQcm9jZXNzUGF0aDsKICAgICBjb3B5LT5tX25ldHdvcmtQcm9jZXNzUGF0aCA9IHRoaXMtPm1f
bmV0d29ya1Byb2Nlc3NQYXRoOwogICAgIGNvcHktPm1fdXNlcklkID0gdGhpcy0+bV91c2VySWQ7
CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBjb3B5LT5t
X21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSB0aGlzLT5tX21lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CiAjZW5kaWYKICAgICByZXR1cm4gY29weTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAppbmRleCBmYTY5YTRiNDU3ZWUzMWNlYzc4NzY1ZTI2MmIwYWYxM2ZlNDBi
ODdkLi5iYzA1ZmUxNWY1ZWFjZGFjNmYyNWNkZTJhNmE0ODhmYjg0YzNlMDNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNs
dWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJ
RC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0x
NTMsNiArMTU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJJZChjb25zdCBpbnQzMl90
IHVzZXJJZCkgeyBtX3VzZXJJZCA9IHVzZXJJZDsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNldE1lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb24oY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKSB7IG1fbWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbiA9IGNv
bmZpZ3VyYXRpb247IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247IH0K
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRo
OwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29k
ZXI7CkBAIC0xODksNiArMTk1LDkgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX25ldHdv
cmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0aW9uYWw8TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uPiBtX21lbW9yeVByZXNzdXJlSGFuZGxlckNv
bmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJiMjllN2I3ZTJmOWI5NjVmZDkw
MjI3NjVlZGMyZjkzMDYxNGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAKQEAgLTAsMCAr
MSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKworLyoqCisgKiBTRUNUSU9O
OiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEg
Ym94ZWQgdHlwZSByZXByZXNlbnRpbmcgdGhlIHNldHRpbmdzIGZvciB0aGUgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyCisgKiBAVGl0bGU6IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEBT
ZWVfYWxzbzogI1dlYktpdFdlYkNvbnRleHQuCisgKgorICogI1dlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MgaXMgYSBib3hlZCB0eXBlIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBzb21l
IGN1c3RvbSBzZXR0aW5ncworICogdG8gY29udHJvbCBob3cgdGhlIG1lbW9yeSBwcmVzc3VyZSBz
aXR1YXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorICoKKyAq
IFRoZSBtZW1vcnkgcHJlc3N1cmUgc3lzdGVtIGltcGxlbWVudGVkIGluc2lkZSB0aGUgZGlmZmVy
ZW50IHByb2Nlc3Mgd2lsbCB0cnkgdG8ga2VlcCB0aGUgbWVtb3J5IHVzYWdlCisgKiB1bmRlciB0
aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQuIEluIG9yZGVyIHRvIGRvIHRoYXQsIGl0IHdpbGwgY2hl
Y2sgdGhlIHVzZWQgbWVtb3J5IHdpdGggYSB1c2VyIGRlZmluZWQKKyAqIGZyZXF1ZW5jeSBhbmQg
ZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxkIHRyeSB0byByZWxlYXNlIG1lbW9yeS4gVGhlIHRocmVz
aG9sZHMgcGFzc2VkIHdpbGwgZGVmaW5lIGhvdyB1cmdlbnQKKyAqIGlzIHRvIHJlbGVhc2UgdGhh
dCBtZW1vcnkuCisgKgorICogVGFrZSBpbnRvIGFjY291bnQgdGhhdCBiYWRseSBkZWZpbmVkIHBh
cmFtZXRlcnMgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgZW5naW5l
LiBGb3IKKyAqIGV4YW1wbGUsIHNldHRpbmcgbWVtb3J5IGxpbWl0IHRvbyBsb3cgd2l0aCBhIGZh
c3QgcG9sbCBpbnRlcnZhbCBjYW4gY2F1c2UgdGhlIHByb2Nlc3MgdG8gY29uc3RhbnRseQorICog
YmUgdHJ5aW5nIHRvIHJlbGVhc2UgbWVtb3J5LgorICoKKyAqIEEgI1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgY2FuIGJlIHBhc3NlZCB0byBhICNXZWJLaXRXZWJDb250ZXh0IGNvbnN0cnVj
dG9yLCBhbmQgdGhlIHNldHRpbmdzIHdpbGwKKyAqIGJlIGFwcGxpZWQgdG8gYWxsIHRoZSB3ZWIg
cHJvY2Vzc2VzIGNyZWF0ZWQgYnkgdGhhdCBjb250ZXh0LgorICoKKyAqIFNpbmNlOiAyLjM0Cisg
Ki8KK3N0cnVjdCBfV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyB7CisgICAgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Cit9OworCitHX0RFRklO
RV9CT1hFRF9UWVBFKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSwg
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKTsKKworLyoqCisgKiB3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldzoKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ldyAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyBpbnN0YW5jZSBmaWxsZWQgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgKgorICogU2lu
Y2U6IDIuMzQKKyAqLworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogd2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19uZXcoKQoreworICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzdGF0aWNfY2FzdDxXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncykpKTsKKyAgICBuZXcgKG1lbW9yeVByZXNzdXJlU2V0dGluZ3MpIFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICByZXR1cm4gbWVtb3J5UHJlc3N1cmVTZXR0aW5nczsK
K30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHk6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBNYWtlIGEg
Y29weSBvZiBAc2V0dGluZ3MuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNv
cHkgb2Ygb2YgdGhlIHBhc3NlZCAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy4KKyAqCisg
KiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiB3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2V0dGluZ3MsIG51bGxw
dHIpOworCisgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogY29weSA9IHN0YXRpY19j
YXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVv
ZihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKSkpOworCisgICAgY29weS0+Y29uZmlndXJh
dGlvbiA9IHNldHRpbmdzLT5jb25maWd1cmF0aW9uOworCisgICAgcmV0dXJuIGNvcHk7Cit9CisK
Ky8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICogRnJlZSB0aGUgI1dl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9p
ZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUoV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7
CisKKyAgICBmYXN0RnJlZShzZXR0aW5ncyk7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0OgorICogQHNldHRpbmdzOiBhICNXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAbWVtb3J5X2xpbWl0OiBhbW91bnQgb2YgbWVt
b3J5IChpbiBNQikgdGhhdCB0aGUgcHJvY2VzcyBpcyBhbGxvd2VkIHRvIHVzZS4KKyAqCisgKiBT
ZXRzIEBtZW1vcnlfbGltaXQgdGhlIG1lbW9yeSBsaW1pdCB2YWx1ZSB0byBAc2V0dGluZ3MuCisg
KgorICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIHN5c3RlbSdzIFJBTSBzaXplIHdpdGggYSBt
YXhpbXVtIG9mIDNHQi4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdChXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQgbWVtb3J5TGltaXQpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZfZmFpbChtZW1vcnlMaW1pdCk7CisK
KyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5iYXNlVGhyZXNob2xkID0gbWVtb3J5TGltaXQg
KiBNQjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9t
ZW1vcnlfbGltaXQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MKKyAqCisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBpbiBNQiBvZiB0aGUgbWVtb3J5IGxpbWl0IGlu
c2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ3VpbnQgd2Via2l0X21l
bW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0KFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNldHRp
bmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5iYXNlVGhyZXNo
b2xkIC8gTUI7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19z
ZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncworICogQHZhbHVlOiBmcmFjdGlvbiBvZiB0aGUgbWVtb3J5IGxpbWl0
IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUgcG9saWN5IHN0YXJ0cyB3b3JraW5nLgorICoKKyAqIFNl
dHMgQHZhbHVlIGFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQgd2hl
cmUgdGhlIGNvbnNlcnZhdGl2ZQorICogcG9saWN5IHN0YXJ0cyB3b3JraW5nLiBUaGlzIHBvbGlj
eSB3aWxsIHRyeSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgYnkKKyAqIHJlbGVhc2lu
ZyBub24gY3JpdGljYWwgbWVtb3J5LgorICoKKyAqIFRoZSB0aHJlc2hvbGQgbXVzdCBiZSBiaWdn
ZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4gMSwgYW5kIGl0IG11c3QgYmUgc21hbGxlcgorICog
dGhhbiB0aGUgc3RyaWN0IHRocmVzaG9sZCBkZWZpbmVkIGluIEBzZXR0aW5ncy4gVGhlIGRlZmF1
bHQgdmFsdWUgaXMgMC4zMy4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQoV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MsIGdkb3VibGUgdmFsdWUpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSA+
IDAgJiYgdmFsdWUgPCAxKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlIDwgc2V0dGluZ3Mt
PmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24pOworCisgICAgc2V0dGluZ3Mt
PmNvbmZpZ3VyYXRpb24uY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSB2YWx1ZTsKK30K
KworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRp
dmVfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzCisgKgorICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHRoZSBjb25zZXJ2YXRpdmUgdGhy
ZXNob2xkIGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2RvdWJs
ZSB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNo
b2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29u
ZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKK30KKworLyoqCisgKiB3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAdmFsdWU6IGZy
YWN0aW9uIG9mIHRoZSBtZW1vcnkgbGltaXQgd2hlcmUgdGhlIHN0cmljdCBwb2xpY3kgc3RhcnRz
IHdvcmtpbmcuCisgKgorICogU2V0cyBAdmFsdWUgYXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBkZWZp
bmVkIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgc3RyaWN0CisgKiBwb2xpY3kgc3RhcnRzIHdvcmtp
bmcuIFRoaXMgcG9saWN5IHdpbGwgdHJ5IHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludCBi
eQorICogcmVsZWFzaW5nIGNyaXRpY2FsIG1lbW9yeS4KKyAqCisgKiBUaGUgdGhyZXNob2xkIG11
c3QgYmUgYmlnZ2VyIHRoYW4gMCBhbmQgc21hbGxlciB0aGFuIDEuIEFsc28sIGl0IG11c3QgYmUg
YmlnZ2VyCisgKiB0aGFuIHRoZSBjb25zZXJ2YXRpdmUgdGhyZXNob2xkIGRlZmluZWQgaW4gQHNl
dHRpbmdzLCBhbmQgc21hbGxlciB0aGFuIHRoZSBraWxsCisgKiB0aHJlc2hvbGQgaWYgdGhlIGxh
dHRlciBpcyBub3QgMC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC41LgorICoKKyAqIFNpbmNlOiAy
LjM0CisgKi8KK3ZvaWQgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0
X3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ2RvdWJs
ZSB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNldHRpbmdzKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
dmFsdWUgPiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCghc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ua2ls
bFRocmVzaG9sZEZyYWN0aW9uIHx8IHZhbHVlIDwgc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ua2ls
bFRocmVzaG9sZEZyYWN0aW9uKTsKKworICAgIHNldHRpbmdzLT5jb25maWd1cmF0aW9uLnN0cmlj
dFRocmVzaG9sZEZyYWN0aW9uID0gdmFsdWU7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAj
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICoKKyAqIFJldHVybnMgdGhlIHZhbHVlIG9m
IHRoZSB0aGUgc3RyaWN0IHRocmVzaG9sZCBpbnNpZGUgQHNldHRpbmdzLgorICoKKyAqIFNpbmNl
OiAyLjM0CisgKi8KK2dkb3VibGUgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRf
c3RyaWN0X3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZXR0aW5ncywgMCk7CisKKyAgICByZXR1cm4g
c2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247Cit9CisKKy8q
KgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQ6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEB2YWx1
ZTogZnJhY3Rpb24gb2YgdGhlIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgcHJvY2VzcyB3aWxsIGJl
IGtpbGxlZCBiZWNhdXNlCisgKiAgIG9mIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UuCisgKgorICog
U2V0cyBAdmFsdWUgYXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBkZWZpbmVkIG1lbW9yeSBsaW1pdCB3
aGVyZSB0aGUgcHJvY2VzcyB3aWxsIGJlCisgKiBraWxsZWQuCisgKgorICogVGhlIHRocmVzaG9s
ZCBtdXN0IGJlIGEgdmFsdWUgYmlnZ2VyIG9yIGVxdWFsIHRvIDAuIEEgdmFsdWUgb2YgMCBtZWFu
cyB0aGF0IHRoZSBwcm9jZXNzCisgKiBpcyBuZXZlciBraWxsZWQuIElmIHRoZSB0aHJlc2hvbGQg
aXMgbm90IDAsIHRoZW4gaXQgbXVzdCBiZSBiaWdnZXIgdGhhbiB0aGUgc3RyaWN0IHRocmVzaG9s
ZAorICogZGVmaW5lZCBpbiBAc2V0dGluZ3MuIFRoZSB0aHJlc2hvbGQgY2FuIGFsc28gaGF2ZSB2
YWx1ZXMgYmlnZ2VyIHRoYW4gMS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC4KKyAqCisgKiBTaW5j
ZTogMi4zNAorICovCit2b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tp
bGxfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzLCBnZG91
YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0dGluZ3MpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUgPj0gMCk7CisgICAgZ19yZXR1cm5faWZfZmFpbCghdmFsdWUgfHwg
dmFsdWUgPiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbik7
CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24gPSB2
YWx1ZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh2YWx1ZSkgOiBzdGQ6Om51bGxvcHQ7Cit9CisKKy8q
KgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQ6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBS
ZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgdGhlIGtpbGwgdGhyZXNob2xkIGluc2lkZSBAc2V0dGlu
Z3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworZ2RvdWJsZSB3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRp
bmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZXR0aW5ncywgMCk7
CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ua2lsbFRocmVzaG9sZEZyYWN0
aW9uLnZhbHVlX29yKDApOworfQorCisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncworICogQHZhbHVlOiBwZXJpb2QgKGluIHNlY29uZHMpIGJldHdlZW4g
bWVtb3J5IHVzYWdlIG1lYXN1cmVtZW50cy4KKyAqCisgKiBTZXRzIEB2YWx1ZSBhcyB0aGUgcG9s
bCBpbnRlcnZhbCB1c2VkIGJ5IEBzZXR0aW5ncy4KKyAqCisgKiBUaGUgcG9sbCBpbnRlcnZhbCB2
YWx1ZSBtdXN0IGJlIGJpZ2dlciB0aGFuIDAuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDMwIHNlY29u
ZHMuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mq
IHNldHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0dGlu
Z3MpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPiAwKTsKKworICAgIHNldHRpbmdzLT5j
b25maWd1cmF0aW9uLnBvbGxJbnRlcnZhbCA9IFNlY29uZHModmFsdWUpOworfQorCisvKioKKyAq
IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWw6CisgKiBA
c2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5z
IHRoZSB2YWx1ZSBpbiBzZWNvbmRzIG9mIHRoZSB0aGUgcG9sbCBpbnRlcnZhbCBpbnNpZGUgQHNl
dHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dkb3VibGUgd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbChXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZXR0aW5ncywg
MCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24ucG9sbEludGVydmFsLnNl
Y29uZHMoKTsKK30KKworY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9u
JiB3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29u
ZmlndXJhdGlvbihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb247Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5nc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTQ1MjI5ZTY5OGJiYjhlZGNmMGVh
YTNmZmM4ZWQ3YmY0NGRkZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc1ByaXZhdGUuaApAQCAt
MCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKworY29uc3QgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uJiB3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzR2V0
TWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbihXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDZkZDlmMjBlNGZmMmJkYTAxODRkMDY0NTMwMWNlZjIy
ZTQ3ZGNmMTUuLmUxY2EyZjdiMDQ2ZGMwMzA5YmY2ZWY5ZDFmYzUxMTBiMTA2ODk5ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEluaXRpYWxpemUuaCIKICNpbmNsdWRlICJX
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByb3RvY29sSGFuZGxlci5oIgpA
QCAtMTI0LDYgKzEyNiw3IEBAIGVudW0gewogICAgIFBST1BfVVNFX1NZU1RFTV9BUFBFQVJBTkNF
X0ZPUl9TQ1JPTExCQVJTLAogI2VuZGlmCiAjZW5kaWYKKyAgICBQUk9QX01FTU9SWV9QUkVTU1VS
RV9TRVRUSU5HUywKICAgICBOX1BST1BFUlRJRVMsCiB9OwogCkBAIC0yNDEsNiArMjQ0LDggQEAg
c3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAKICAgICBIYXNoU2V0PFN0cmluZz4g
ZG5zUHJlZmV0Y2hlZEhvc3RzOwogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IGRuc1ByZWZl
dGNoSHlzdGVyZXJpczsKKworICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIG1lbW9y
eVByZXNzdXJlU2V0dGluZ3M7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05B
TF0gPSB7IDAsIH07CkBAIC0zNzYsNiArMzgxLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNv
bnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1Zh
CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjZW5kaWYKKyAgICBjYXNlIFBST1BfTUVNT1JZX1BS
RVNTVVJFX1NFVFRJTkdTOiB7CisgICAgICAgIGdwb2ludGVyIHNldHRpbmdzID0gZ192YWx1ZV9n
ZXRfYm94ZWQodmFsdWUpOworICAgICAgICBjb250ZXh0LT5wcml2LT5tZW1vcnlQcmVzc3VyZVNl
dHRpbmdzID0gc2V0dGluZ3MgPyB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHko
c3RhdGljX2Nhc3Q8V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyo+KHNldHRpbmdzKSkgOiBu
dWxscHRyOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMp
OwogICAgIH0KQEAgLTM5OSw2ICs0MDksMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4
dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBjb25maWd1cmF0aW9uLnNldFVzZVN5
c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKHByaXYtPnVzZVN5c3RlbUFwcGVhcmFuY2VGb3JT
Y3JvbGxiYXJzKTsKICNlbmRpZgogI2VuZGlmCisgICAgaWYgKHByaXYtPm1lbW9yeVByZXNzdXJl
U2V0dGluZ3MpIHsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJDb25maWd1cmF0aW9uKHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NHZXRNZW1vcnlQcmVz
c3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKHByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MpKTsK
KyAgICAgICAgLy8gT25jZSB0aGUgc2V0dGluZ3MgaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZSBzbyB3ZSBj
YW4gZnJlZSB0aGVtLgorICAgICAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2Zy
ZWUocHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk7CisgICAgfQogCiAgICAgaWYgKCFwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9
IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2NhbC1zdG9yYWdl
LWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCksIG51bGxwdHIp
KTsKQEAgLTU0Myw2ICs1NTgsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2Ns
YXNzX2luaXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKICNlbmRpZgog
I2VuZGlmCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJDb250ZXh0Om1lbW9yeS1wcmVzc3Vy
ZS1zZXR0aW5nczoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LgorICAgICAqCisgICAgICogU2luY2U6
IDIuMzQKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX01FTU9SWV9QUkVTU1VSRV9T
RVRUSU5HU10gPQorICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoCisgICAgICAgICAgICAibWVt
b3J5LXByZXNzdXJlLXNldHRpbmdzIiwKKyAgICAgICAgICAgIF8oIk1lbW9yeSBQcmVzc3VyZSBT
ZXR0aW5ncyIpLAorICAgICAgICAgICAgXygiVGhlIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dCIpLAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1Bh
cmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp
KTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhnT2JqZWN0Q2xhc3Ms
IE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaAppbmRleCA3
ZTUyYmZhOGI3YzRmODdhODBkZmYxYjIzNzEzYmJmNTFiZmI4MDRkLi5hNGFhZmQ3M2ZiMmFhN2Q4
M2I1YTNmMzY5YTAyZTYxZTg2MGRkMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmgKQEAgLTc5LDYgKzc5LDcgQEAgR19E
RUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdENyZWRlbnRpYWwsIHdlYmtpdF9jcmVk
ZW50aWFsX2ZyZWUpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0SVRQRmly
c3RQYXJ0eSwgd2Via2l0X2l0cF9maXJzdF9wYXJ0eV91bnJlZikKIEdfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRJVFBUaGlyZFBhcnR5LCB3ZWJraXRfaXRwX3RoaXJkX3BhcnR5
X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQsIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZikKK0dfREVGSU5FX0FVVE9QVFJf
Q0xFQU5VUF9GVU5DIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLCB3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAo
V2ViS2l0TWltZUluZm8sIHdlYmtpdF9taW1lX2luZm9fdW5yZWYpCiBHX0RFRklORV9BVVRPUFRS
X0NMRUFOVVBfRlVOQyAoV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiwgd2Via2l0X25hdmlnYXRpb25f
YWN0aW9uX2ZyZWUpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0TmV0d29y
a1Byb3h5U2V0dGluZ3MsIHdlYmtpdF9uZXR3b3JrX3Byb3h5X3NldHRpbmdzX2ZyZWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Njc4MzUxYjQ0NjJkODZlMDA2YzZi
M2EwYmIyOGViMWZiMDFhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChf
X1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNl
cnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4i
CisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKyNkZWZp
bmUgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTICh3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X3R5cGUgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncyAqCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0
aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19mcmVlICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdCAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbWVt
b3J5X2xpbWl0KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0ICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVT
ZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5X3By
ZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKaW5kZXggYjVmM2U3ZDYwZDIwMmUwYzY1Yjk3NzgzZWRlNzRlMDlmN2FlNzhiOS4uNTFkNGNh
YjI3ZWMyYjM0ZmZhZWJhOTY1NTNkOWI3MmJmODI3MDYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CkBAIC0xOTUzLDQgKzE5NTMsMjcgQEAgV2ViS2l0V2Vic2l0ZVBvbGljaWVz
UHJpdmF0ZQogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAor
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzPC9GSUxFPgorV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncword2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19uZXcKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weQord2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X3NldF9tZW1vcnlfbGltaXQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21l
bW9yeV9saW1pdAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0
aXZlX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfY29uc2Vy
dmF0aXZlX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3Ry
aWN0X3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0
X3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJl
c2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xk
Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsCisKKzxTVUJTRUNU
SU9OIFByaXZhdGU+Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF90eXBlCisK
KzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJ
TkdTCis8L1NFQ1RJT04+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
LmgKaW5kZXggZWNiZTQzM2VkODg4MzUzYjFlNjAxMzk0M2I0NDYzODM1YzM1ODJkMi4uYjdkMjc0
MWM0YjJjMWFkNGUzNGExZmFiNDhmZWM2MWFmMWM2MTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdE1pbWVJbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0aW9u
QWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
QXV0b2NsZWFudXBzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1
dG9jbGVhbnVwcy5oCmluZGV4IDBmMDA5NDlhMTAxZTU5ZTczOTEwMDNjODExMmY0Y2Y5MmEzMWZj
ODQuLjc3YWI3N2JjOTg0ZTcwZDNmYWNlMDAzM2YxMjQyZDI2YzQwMmQwYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b2NsZWFudXBzLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvY2xlYW51cHMuaApA
QCAtNzIsNiArNzIsNyBAQCBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyAoV2ViS2l0Q3Jl
ZGVudGlhbCwgd2Via2l0X2NyZWRlbnRpYWxfZnJlZSkKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXRJVFBGaXJzdFBhcnR5LCB3ZWJraXRfaXRwX2ZpcnN0X3BhcnR5X3VucmVm
KQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdElUUFRoaXJkUGFydHksIHdl
YmtpdF9pdHBfdGhpcmRfcGFydHlfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVO
QyAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVm
KQorR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSkKIEdfREVGSU5FX0FV
VE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRNaW1lSW5mbywgd2Via2l0X21pbWVfaW5mb191bnJl
ZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXROYXZpZ2F0aW9uQWN0aW9u
LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZnJlZSkKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5V
UF9GVU5DIChXZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncywgd2Via2l0X25ldHdvcmtfcHJveHlf
c2V0dGluZ3NfZnJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI0
NzM1Y2Y2NzllNTY4NzMxZjg1OTA0ZmFiMmZlNWQ5MTg4ZmYzYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJ
VDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3NfaAorI2RlZmluZSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2gKKworI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5H
UyAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSgpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF90eXBlICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICoKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19jb3B5ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfZnJlZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9tZW1vcnlfbGltaXQgICAgICAgICAgIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lbW9yeV9saW1pdCk7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCAgICAgICAgICAgKFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkIChXZWJL
aXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkIChXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfc3RyaWN0X3RocmVzaG9sZCAgICAgICAoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZCAgICAgICAoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkICAgICAgICAgKFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkICAgICAgICAgKFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsICAgICAgICAgIChX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsICAgICAgICAgIChXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZiAvKiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApp
bmRleCA0YjY2YmI5NWYxMzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li45ZTA0YTBhMDQ5
Zjg3Y2NhYWI0OTQzZWJkOTQwYzViMzk2MzMzNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0x
NjUxLDMgKzE2NTEsMjcgQEAgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCiBXZWJL
aXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlw
ZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19j
b3B5Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUKK3dlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdAord2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRp
bmdzX3NldF9raWxsX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19n
ZXRfa2lsbF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3Bv
bGxfaW50ZXJ2YWwKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50
ZXJ2YWwKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfZ2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9NRU1P
UllfUFJFU1NVUkVfU0VUVElOR1MKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL3dlYmtpdC5oCmluZGV4IDg3OTI5MjU3YmY3M2FiYTY4NGEzODBhY2NkOGMxYmJiMzk0
YmFkODcuLjVjOTNkNzYwZjczNGExMmY2MTQ4OTk1NDUxMzVmZGY3NzAxNjQ1NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaApAQCAtNTQsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0TWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUg
PHdwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dE1pbWVJbmZvLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXgg
ODRhYTY1MzI3OGY4MzE4YjFkY2Y3YzliYTE1ZTgwMjJmODIwNzYzYi4uMTYwM2M5YjJmMzQ5NmM1
ZjNmZTFlYmQ2OTYxYTZjMDlmNGNiNzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAg
ICAgcGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyA9IG1fY29uZmln
dXJhdGlvbi0+dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMoKTsKICNlbmRpZgorCisg
ICAgcGFyYW1ldGVycy5tZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uID0gbV9jb25m
aWd1cmF0aW9uLT5tZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKCk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3BwCmluZGV4IGJhZDAw
MTQ2ZDg4NjM1MjMwYjBhNTcxYTk5MzljMjFjZDhhNjQ4MjIuLmNkNzMyMTkzZTgzMTkwNjlkOWQz
MGE3MjZhMjYzZGM1MTYxMDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTEwNSw2ICsxMDUsOSBAQCB2b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYQogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIHNldFVzZVN5
c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5j
ZUZvclNjcm9sbGJhcnMpOwogI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy5tZW1vcnlQcmVz
c3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKQorICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNpbmdsZXRvbigpLnNldENvbmZpZ3VyYXRpb24oV1RGTW92ZSgqcGFyYW1ldGVycy5tZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxh
dGZvcm1TZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycyYmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDVjMWU1OTkyMDFiZjQ3ZjEzNmU4NTgxNDY1ZWY1YWVlMDRmZWZjOWIuLmZmZGY2YmJi
YTVkMjM5OWIzMjM3NTQ0MTllZWJhNGRlZTE0MzVhMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wNy0yMSAg
TWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0g
QWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW5z
aWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBB
UEkgYW5kIHRvIHRlc3QgV2ViS2l0V2ViQ29udGV4dCB3aXRoCisgICAgICAgIG5vbiBkZWZhdWx0
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgdmFsdWVzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKE1lbW9yeVByZXNzdXJlVGVzdDo6c2V0dXApOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVU
ZXN0Ojp0ZWFyZG93bik6CisgICAgICAgIChNZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NU
ZXJtaW5hdGVkQ2FsbGJhY2spOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVUZXN0Ojp3YWl0VW50
aWxXZWJQcm9jZXNzVGVybWluYXRlZCk6CisgICAgICAgICh0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6VGVzdCk6CisKIDIwMjEtMDct
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVu
IGZ0bC1lYWdlci1uby1jaml0IG9uIGRlYnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggOWU5MjMzYWIwOTA3MDk5YTAyYjc4NGMyODRmZWQxOTczM2Y2NDI3Ni4uNTMyNTQ4
YjFlNGUyYTBhZjVjOWEyZWUxYzMyMDZiY2JmMjg4ZjQzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRl
eHQuY3BwCkBAIC03NzAsNiArNzcwLDEwNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFBy
b3h5U2V0dGluZ3MoUHJveHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogI2VuZGlmCiB9CiAK
K2NsYXNzIE1lbW9yeVByZXNzdXJlVGVzdCA6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6
CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRV9XSVRIX1NFVFVQX1RFQVJET1dOKE1lbW9yeVBy
ZXNzdXJlVGVzdCwgc2V0dXAsIHRlYXJkb3duKTsKKworICAgIHN0YXRpYyB2b2lkIHNldHVwKCkK
KyAgICB7CisgICAgICAgIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KCk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0
dGluZ3MsIDIwKTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRf
cG9sbF9pbnRlcnZhbChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3MsIDAuNSk7CisgICAg
ICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkKFRl
c3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgMSk7CisgICAgICAgIHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0cmljdF90aHJlc2hvbGQoVGVzdDo6c19tZW1vcnlQcmVz
c3VyZVNldHRpbmdzLCAwLjc1KTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19zZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0
dGluZ3MsIDAuNSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVhcmRvd24oKQorICAgIHsK
KyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKFRlc3Q6OnNfbWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyk7CisgICAgICAgIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyA9IG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlcm1p
bmF0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24gcmVhc29uLCBNZW1vcnlQcmVzc3VyZVRlc3QqIHRlc3QpCisgICAgewor
ICAgICAgICB0ZXN0LT5tX3Rlcm1pbmF0aW9uUmVhc29uID0gcmVhc29uOworICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4od2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayksIHRlc3QpOworICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2Fp
dFVudGlsV2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29u
bmVjdF9hZnRlcihtX3dlYlZpZXcsICJ3ZWItcHJvY2Vzcy10ZXJtaW5hdGVkIiwgR19DQUxMQkFD
SyhNZW1vcnlQcmVzc3VyZVRlc3Q6OndlYlByb2Nlc3NUZXJtaW5hdGVkQ2FsbGJhY2spLCB0aGlz
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFdl
YktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiBtX3Rlcm1pbmF0aW9uUmVhc29uIHsgV0VC
S0lUX1dFQl9QUk9DRVNTX0NSQVNIRUQgfTsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzKE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICAvLyBCZWZvcmUgdGVzdGluZyB0aGUgc2V0dGluZ3MgdGhhdCBoYXZlIGJlZW4gc2V0
IHRvIHRoZSBjb250ZXh0LCB1c2UgYSBuZXcgaW5zdGFuY2UKKyAgICAvLyBvZiBXZWJLaXRNZW1v
cnlQcmVzc3VyZVNldHRpbmdzIHRvIHRlc3QgdGhlIGRlZmF1bHQgdmFsdWVzLCBnZXR0ZXJzIGFu
ZCBzZXR0ZXJzLgorICAgIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcoKTsKKworICAgIC8vIFdlIGNhbid0
IGV4YWN0bHkga25vdyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIG1lbW9yeSBsaW1pdCwgYXMg
aXQgZGVwZW5kcyBvbgorICAgIC8vIHRoZSBoYXJkd2FyZSBvZiB0aGUgbWFjaGluZSwgc28ganVz
dCBlbnN1cmUgdGhhdCBpdCdzIHNvbWV0aGluZyA+IDAgYW5kIDw9IDNHQi4KKyAgICBndWludCBs
aW1pdCA9IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdChz
ZXR0aW5ncyk7CisgICAgZ19hc3NlcnRfY21wdWludChsaW1pdCwgPiwgMCk7CisgICAgZ19hc3Nl
cnRfY21wdWludChsaW1pdCAqIE1CLCA8PSwgMyAqIEdCKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9h
dCh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNo
b2xkKHNldHRpbmdzKSwgPT0sIDAuMzMpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hvbGQoc2V0dGluZ3MpLCA9
PSwgMC41KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2dldF9raWxsX3RocmVzaG9sZChzZXR0aW5ncyksID09LCAwKTsKKyAgICBnX2Fzc2Vy
dF9jbXBmbG9hdCh3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVy
dmFsKHNldHRpbmdzKSwgPT0sIDMwKTsKKworICAgIC8vIFRlc3Qgc2V0dGluZyBhbmQgZ2V0dGlu
ZyB2YWx1ZXMuCisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5
X2xpbWl0KHNldHRpbmdzLCAyMCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQoc2V0dGluZ3MpLCA9PSwgMjApOwor
CisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2VydmF0aXZlX3Ro
cmVzaG9sZChzZXR0aW5ncywgMC40KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKHNldHRpbmdz
KSwgPT0sIDAuNCk7CisKKyAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9z
dHJpY3RfdGhyZXNob2xkKHNldHRpbmdzLCAwLjYpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hvbGQoc2V0dGlu
Z3MpLCA9PSwgMC42KTsKKworICAgIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0
X2tpbGxfdGhyZXNob2xkKHNldHRpbmdzLCAxLjEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkKHNldHRpbmdz
KSwgPT0sIDEuMSk7CisKKyAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9w
b2xsX2ludGVydmFsKHNldHRpbmdzLCA1KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFsKHNldHRpbmdzKSwgPT0s
IDUpOworCisgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKHNldHRpbmdz
KTsKKworICAgIC8vIEFuIGVtcHR5IHZpZXcgdXNlcyBhcm91bmQgN01CIG9mIG1lbW9yeS4gV2Un
cmUgc2V0dGluZyBhIG1heGltdW0gb2YgMjBNQiBoZXJlLCBwb2xsaW5nIGV2ZXJ5IDAuNSBzZWNv
bmRzLAorICAgIC8vIGFuZCB0aGUga2lsbCBmcmFjdGlvbiBpcyAxLCBzbyB0aGUgd2ViIHByb2Nl
c3Mgd2lsbCBiZSBraWxsZWQgd2hlbiBpdCBleGNlZWRzIDIwTUIuCisgICAgLy8gVGhlIHRlc3Qg
aHRtbCB3aWxsIGFsbG9jYXRlIGEgY2FudmFzIG9mIDMwMDB4MzAwMCwgd2hpY2ggcmVxdWlyZXMg
YXJvdW5kIDM2TUIgb2YgbWVtb3J5LCBzbyBvbmNlIGl0IGdldHMKKyAgICAvLyBjcmVhdGVkLCB0
aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHdpbGwgZGV0ZWN0IHRoYXQgdGhlIG1lbW9yeSB1c2Fn
ZSBpcyB0b28gaGlnaCBhbmQga2lsbCB0aGUgd2ViIHByb2Nlc3MuCisgICAgLy8gVGhpcyB0cmln
Z2VycyB0aGUgd2ViLXByb2Nlc3MtdGVybWluYXRlZCBzaWduYWwgaW4gdGhlIHZpZXcgd2l0aCBX
RUJLSVRfV0VCX1BST0NFU1NfRVhDRUVERURfTUVNT1JZX0xJTUlUCisgICAgLy8gYXMgdGhlIHRl
cm1pbmF0aW9uIHJlYXNvbi4KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sID0KKyAgICAg
ICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxzY3JpcHQ+Igor
ICAgICAgICAiICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsiCisgICAgICAgICIgICAgICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7IgorICAgICAg
ICAiICAgICAgICBjYW52YXMud2lkdGggPSAzMDAwOyIKKyAgICAgICAgIiAgICAgICAgY2FudmFz
LmhlaWdodCA9IDMwMDA7IgorICAgICAgICAiICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpOyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAn
Z3JlZW4nOyIKKyAgICAgICAgIiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCAzMDAwLCAz
MDAwKTsiCisgICAgICAgICIgICAgICB9LCAwKTsiCisgICAgICAgICIgICAgPC9zY3JpcHQ+Igor
ICAgICAgICAiICAgIDxjYW52YXMgaWQ9J2NhbnZhcyc+PC9jYW52YXM+IgorICAgICAgICAiICA8
L2JvZHk+IgorICAgICAgICAiPC9odG1sPiI7CisKKyAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJv
Y2Vzc0NyYXNoID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChodG1sLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxXZWJQcm9jZXNzVGVybWluYXRlZCgpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+bV90ZXJtaW5hdGlvblJlYXNvbiwgPT0sIFdFQktJVF9XRUJfUFJPQ0VTU19F
WENFRURFRF9NRU1PUllfTElNSVQpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1Nl
cnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CkBAIC03ODYsNiArODg2LDcgQEAgdm9pZCBi
ZWZvcmVBbGwoKQogICAgIFNlY3VyaXR5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1h
bmFnZXIiLCAic2VjdXJpdHktcG9saWN5IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eVBvbGljeSk7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhy
IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOwogICAgIFByb3h5VGVzdDo6YWRkKCJX
ZWJLaXRXZWJDb250ZXh0IiwgInByb3h5IiwgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKTsK
KyAgICBNZW1vcnlQcmVzc3VyZVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJtZW1vcnkt
cHJlc3N1cmUiLCB0ZXN0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyk7CiB9CiAKIHZvaWQgYWZ0ZXJB
bGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVz
dE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4u
Y3BwCmluZGV4IGZhNWJlMTYyNzJkYzI2NWFhMzk1NjIwYjE2OTEyNjdlYmFjOWQ5MzUuLmU4OTZm
N2FlMTVmMDNmYTY4MDRjYzhiNGI4NTM1Nzk3Y2ZmNTFjZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
IEdSZWZQdHI8R0RCdXNTZXJ2ZXI+IFRlc3Q6OnNfZGJ1c1NlcnZlcjsKIFZlY3RvcjxHUmVmUHRy
PEdEQnVzQ29ubmVjdGlvbj4+IFRlc3Q6OnNfZGJ1c0Nvbm5lY3Rpb25zOwogSGFzaE1hcDx1aW50
NjRfdCwgR0RCdXNDb25uZWN0aW9uKj4gVGVzdDo6c19kYnVzQ29ubmVjdGlvblBhZ2VNYXA7CitX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgPSBudWxscHRyOwogCiB2b2lkIGJlZm9yZUFsbCgpOwogdm9pZCBhZnRlckFsbCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggMTQ0
NTMxMWY2Zjg2ZWQzZjU0Njg5OTNkODBmMDg4MzZiZDQ5ZDcyNi4uOGM3OTAwMDQ5YTNiYTI0NDRj
YzQ2NzMyZjQ1YTEzNzZiNzlmN2I0YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvVGVzdE1haW4uaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0TWFpbi5oCkBAIC0xNDIsNiArMTQyLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgInVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xsYmFycyIsIEZBTFNFLAogI2Vu
ZGlmCiAjZW5kaWYKKyAgICAgICAgICAgICJtZW1vcnktcHJlc3N1cmUtc2V0dGluZ3MiLCBzX21l
bW9yeVByZXNzdXJlU2V0dGluZ3MsCiAgICAgICAgICAgICBudWxscHRyKSkpOwogICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fd2ViQ29udGV4
dC5nZXQoKSkpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwg
ImluaXRpYWxpemUtd2ViLWV4dGVuc2lvbnMiLCBHX0NBTExCQUNLKGluaXRpYWxpemVXZWJFeHRl
bnNpb25zQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTI5Miw0ICsyOTMsNSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEdSZWZQdHI8R0RCdXNTZXJ2ZXI+IHNfZGJ1c1NlcnZlcjsKICAgICBzdGF0aWMgVmVj
dG9yPEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPj4gc19kYnVzQ29ubmVjdGlvbnM7CiAgICAgc3Rh
dGljIEhhc2hNYXA8dWludDY0X3QsIEdEQnVzQ29ubmVjdGlvbio+IHNfZGJ1c0Nvbm5lY3Rpb25Q
YWdlTWFwOworICAgIHN0YXRpYyBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzX21lbW9y
eVByZXNzdXJlU2V0dGluZ3M7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433929</attachid>
            <date>2021-07-21 06:51:30 -0700</date>
            <delta_ts>2021-07-21 13:11:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222738-20210721155128.patch</filename>
            <type>text/plain</type>
            <size>61507</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyZDUzZWNjMTg4ZjZlMWZlMTc3OTk4
ODc0OTE5ZGIzMTg4NjZhZWYuLjkwMWMwZDVkMjY1NzU5MGY0MGQ4NDRjYjNmZDg2Mjk4MGNhOTFm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDctMjEgIE1pZ3VlbCBHb21leiAgPG1hZ29t
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFsbG93IHRoZSB1c2VyIHRvIGNv
bmZpZ3VyZSB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluc2lkZSB0aGUgd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjczOAor
CisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIEFk
ZCBhIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIHRvIE1lbW9yeVByZXNzdXJlSGFuZGxlciwgd2l0
aCB0aGUgbWV0aG9kcyB0byBlbmNvZGUvZGVjb2RlIGl0LiBBbHNvCisgICAgICAgIGFkZCBhIG1l
dGhvZCB0byBzZXQgYSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byBhIE1lbW9yeVByZXNzdXJl
SGFuZGxlciBpbnN0YW5jZSwgYW5kIG1vZGlmeSB0aGUKKyAgICAgICAgYmVoYXZpb3Igc28gdGhl
IHRoZSBjb25maWd1cmF0aW9uIGlzIHVzZWQgd2hlbiBjaGVja2luZyB0aGUgbWVtb3J5IHVzZWQg
YnkgdGhlIHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJp
b2RpY01lbW9yeU1vbml0b3IpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnRocmVzaG9sZEZvck1lbW9yeUtpbGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnRocmVzaG9sZEZvclBvbGljeSk6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiB3dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdURjo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldENvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTA3LTIwICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4MDEw
MyBpcyBub3QgbmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDU1OTZlZmViMTViNGVhOTc1MzdlZDk4Zjk2MjgwNDM0NzJkZTYyZTQuLjVmNjM1Mzg5NGE2Yjc5
Mzg4NTg2MjU4OWIxZmNmYTcxY2JmZTMyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wNy0yMSAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdW1dQRV0gQWxsb3cgdGhlIHVzZXIgdG8gY29uZmlndXJlIHRoZSBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgaW5zaWRlIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjdXJy
ZW50TWVtb3J5VXNhZ2VQb2xpY3koKSBpcyBub3cgYW4gaW5zdGFuY2UgbWV0aG9kIGFuZCBub3Qg
YSBjbGFzcyBvbmUsCisgICAgICAgIHNvIHVwZGF0ZSB0aGUgY2FsbCBpbiBSZW5kZXJMYXllckNv
bXBvc2l0b3IgdG8gdXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3kpOgorCiAyMDIxLTA3LTIw
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgcjI4
MDEwMyBpcyBub3QgbmVjZXNzYXJ5IG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA2ZGY4ZTQwYmY2ZDI4YmY1YWE4OTRlYjk3NTEyYWY5MmE4NzNkYzllLi5hZTZkNjMzYzk5OTRj
YmM0ZmI5OWEwNzE1YmQwYzQ1OTBiNDNmYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisy
MDIxLTA3LTIxICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJl
SGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJs
b3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHR5cGUgV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYmVo
YXZpb3IKKyAgICAgICAgb2YgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlci4gQWRkIGEgcHJvcGVy
dHkgdG8gV2ViS2l0V2ViQ29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MKKyAgICAgICAg
bmV3IHNldHRpbmdzIHRvIGl0LCBhbmQgc3RvcmUgdGhlbSBpbnNpZGUgaXRzIEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLiBUaG9zZSBzZXR0aW5ncworICAgICAgICB3aWxsIGJlIHNldCB0
byBuZXcgd2ViIHByb2Nlc3NlcyBkdXJpbmcgdGhlIHBsYXRmb3JtIGluaXRpYWxpemF0aW9uIHN0
YWdlLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1X
UEUuY21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3KToKKyAg
ICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUpOgorICAgICAgICAod2Via2l0X21l
bW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0KToKKyAgICAgICAgKHdlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1pdCk6CisgICAgICAgICh3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xk
KToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZh
dGl2ZV90aHJlc2hvbGQpOgorICAgICAgICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19zZXRfc3RyaWN0X3RocmVzaG9sZCk6CisgICAgICAgICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhyZXNob2xkKToKKyAgICAgICAgKHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwpOgorICAgICAg
ICAod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbCk6Cisg
ICAgICAgICh3ZWJraXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzR2V0TWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3NQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdEF1dG9jbGVhbnVwcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS93ZWJraXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UG9vbEdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisKIDIwMjEtMDctMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIFNQSSBmb3IgaW50ZXJuYWwgY2xpZW50
cyB0byBjb25zdWx0IHdoZXRoZXIgb3Igbm90IHZpZXdwb3J0IHF1aXJrcyBzaG91bGQgYmUgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNWIwN2Rm
ODA5NGRlMjliZmM3MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOS4uNzVhMDg1NDYwOGVmNWE5MjFlMjUy
OTJkYTFmYjY4ZjRlZDE1NzVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwCkBAIC0zOCw2ICszOCwxNiBAQCBERUZJTkVfTE9HX0NIQU5ORUwoTWVtb3J5UHJlc3N1
cmUsIExPR19DSEFOTkVMX1dFQktJVF9TVUJTWVNURU0pOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxl
ZCA9IGZhbHNlOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc19jb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBk
b3VibGUgc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNjU7CisjZWxzZQorc3RhdGljIGNv
bnN0IGRvdWJsZSBzX2NvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsKK3N0YXRp
YyBjb25zdCBkb3VibGUgc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbiA9IDAuNTsKKyNlbmRpZgor
c3RhdGljIGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzX2tpbGxUaHJlc2hvbGRGcmFjdGlv
bjsKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHNfcG9sbEludGVydmFsID0gMzBfczsKKwogTWVtb3J5
UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpCiB7CiAg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9y
eVByZXNzdXJlSGFuZGxlcjsKQEAgLTczLDcgKzgzLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKIAogICAg
IGlmICh1c2UpIHsKICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5M
b29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7Ci0gICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CisgICAgICAgIG1fbWVh
c3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcobV9jb25maWd1cmF0aW9uLnBvbGxJbnRlcnZh
bCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CiB9
CkBAIC0xMTAsNiArMTIwLDkgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFBhZ2VD
b3VudCh1bnNpZ25lZCBwYWdlQ291bnQpCiAKIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogeworICAgIGlmIChtX2Nv
bmZpZ3VyYXRpb24ua2lsbFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmJhc2VUaHJlc2hvbGQgKiAoKm1fY29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xk
RnJhY3Rpb24pOworCiAgICAgc3dpdGNoIChtX3Byb2Nlc3NTdGF0ZSkgewogICAgIGNhc2UgV2Vi
c2FtUHJvY2Vzc1N0YXRlOjpJbmFjdGl2ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZEZvck1l
bW9yeUtpbGxPZkluYWN0aXZlUHJvY2VzcyhtX3BhZ2VDb3VudCk7CkBAIC0xMTksMzIgKzEzMiwy
MiBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hv
bGRGb3JNZW1vcnlLaWxsKCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMg
c2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCitzaXpl
X3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQ
b2xpY3kgcG9saWN5KQogewotICAgIGNvbnN0IHNpemVfdCBiYXNlVGhyZXNob2xkRm9yUG9saWN5
ID0gc3RkOjptaW4oMyAqIEdCLCByYW1TaXplKCkpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBjb25zdCBkb3VibGUgY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7
Ci0gICAgY29uc3QgZG91YmxlIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uID0gMC42NTsKLSNlbHNl
Ci0gICAgY29uc3QgZG91YmxlIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uID0gMC4zMzsK
LSAgICBjb25zdCBkb3VibGUgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSAwLjU7Ci0jZW5kaWYK
LQogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5y
ZXN0cmljdGVkOgogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5
OjpDb25zZXJ2YXRpdmU6Ci0gICAgICAgIHJldHVybiBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICog
Y29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgIHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uYmFzZVRocmVzaG9sZCAqIG1fY29uZmlndXJhdGlvbi5jb25zZXJ2YXRpdmVUaHJlc2hv
bGRGcmFjdGlvbjsKICAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6Ci0gICAgICAg
IHJldHVybiBiYXNlVGhyZXNob2xkRm9yUG9saWN5ICogc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247
CisgICAgICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYmFzZVRocmVzaG9sZCAqIG1fY29uZmln
dXJhdGlvbi5zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0
aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQp
CitNZW1vcnlVc2FnZVBvbGljeSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBvbGljeUZvckZvb3Rw
cmludChzaXplX3QgZm9vdHByaW50KQogewogICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xk
Rm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3QpKQogICAgICAgICByZXR1cm4gTWVt
b3J5VXNhZ2VQb2xpY3k6OlN0cmljdDsKQEAgLTMxNiw0ICszMTksMjIgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldERpc3BhdGNoUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVl
dWVfdD4mJiBxdWUKIH0KICNlbmRpZgogCitNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3Vy
YXRpb246OkNvbmZpZ3VyYXRpb24oKQorICAgIDogYmFzZVRocmVzaG9sZChzdGQ6Om1pbigzICog
R0IsIHJhbVNpemUoKSkpCisgICAgLCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbihzX2Nv
bnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKQorICAgICwgc3RyaWN0VGhyZXNob2xkRnJhY3Rp
b24oc19zdHJpY3RUaHJlc2hvbGRGcmFjdGlvbikKKyAgICAsIGtpbGxUaHJlc2hvbGRGcmFjdGlv
bihzX2tpbGxUaHJlc2hvbGRGcmFjdGlvbikKKyAgICAsIHBvbGxJbnRlcnZhbChzX3BvbGxJbnRl
cnZhbCkKK3sKK30KKworTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uOjpDb25m
aWd1cmF0aW9uKHNpemVfdCBiYXNlLCBkb3VibGUgY29uc2VydmF0aXZlLCBkb3VibGUgc3RyaWN0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4ga2lsbCwgU2Vjb25kcyBpbnRlcnZhbCkKKyAgICA6IGJh
c2VUaHJlc2hvbGQoYmFzZSkKKyAgICAsIGNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKGNv
bnNlcnZhdGl2ZSkKKyAgICAsIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uKHN0cmljdCkKKyAgICAs
IGtpbGxUaHJlc2hvbGRGcmFjdGlvbihraWxsKQorICAgICwgcG9sbEludGVydmFsKGludGVydmFs
KQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oCmluZGV4IDBiNWQ3N2JlM2M3MGIzYzE1NGI0MWJiZDI1MmI0MDViN2UzYWQx
MDYuLjA5MzA2ZTMzNGEzYmMzOWU5ZTczYmI0MDhlNDAwMTI2MmYxYmVkOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Np
bXVsYXRpbmdNZW1vcnlQcmVzc3VyZTsgfQogICAgIHZvaWQgc2V0VW5kZXJNZW1vcnlQcmVzc3Vy
ZShib29sKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVtb3J5VXNhZ2VQb2xp
Y3kgY3VycmVudE1lbW9yeVVzYWdlUG9saWN5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1l
bW9yeVVzYWdlUG9saWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGlzcGF0Y2hRdWV1ZShP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKQEAgLTE0Nyw2ICsxNDcsNTkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19sb2dnaW5nRW5h
YmxlZDsKICAgICB9OwogCisgICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
b25maWd1cmF0aW9uKCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWd1cmF0aW9u
KHNpemVfdCwgZG91YmxlLCBkb3VibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgU2Vjb25kcyk7
CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBiYXNlVGhy
ZXNob2xkOworICAgICAgICAgICAgZW5jb2RlciA8PCBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFj
dGlvbjsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc3RyaWN0VGhyZXNob2xkRnJhY3Rpb247Cisg
ICAgICAgICAgICBlbmNvZGVyIDw8IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgcG9sbEludGVydmFsOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBiYXNlVGhyZXNob2xkOworICAgICAgICAgICAgZGVjb2RlciA+PiBi
YXNlVGhyZXNob2xkOworICAgICAgICAgICAgaWYgKCFiYXNlVGhyZXNob2xkKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGRlY29k
ZXIgPj4gY29uc2VydmF0aXZlVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAgICAgICBpZiAoIWNv
bnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdHJpY3RUaHJl
c2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gc3RyaWN0VGhyZXNob2xkRnJh
Y3Rpb247CisgICAgICAgICAgICBpZiAoIXN0cmljdFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxkb3VibGU+PiBraWxsVGhyZXNob2xkRnJhY3Rpb247CisgICAgICAg
ICAgICBkZWNvZGVyID4+IGtpbGxUaHJlc2hvbGRGcmFjdGlvbjsKKyAgICAgICAgICAgIGlmICgh
a2lsbFRocmVzaG9sZEZyYWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gcG9sbEludGVydmFsOwor
ICAgICAgICAgICAgZGVjb2RlciA+PiBwb2xsSW50ZXJ2YWw7CisgICAgICAgICAgICBpZiAoIXBv
bGxJbnRlcnZhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgICAgICByZXR1cm4ge3sgKmJhc2VUaHJlc2hvbGQsICpjb25zZXJ2YXRpdmVUaHJlc2hvbGRG
cmFjdGlvbiwgKnN0cmljdFRocmVzaG9sZEZyYWN0aW9uLCAqa2lsbFRocmVzaG9sZEZyYWN0aW9u
LCAqcG9sbEludGVydmFsIH19OworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGJhc2VUaHJl
c2hvbGQ7CisgICAgICAgIGRvdWJsZSBjb25zZXJ2YXRpdmVUaHJlc2hvbGRGcmFjdGlvbjsKKyAg
ICAgICAgZG91YmxlIHN0cmljdFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4ga2lsbFRocmVzaG9sZEZyYWN0aW9uOworICAgICAgICBTZWNvbmRzIHBvbGxJ
bnRlcnZhbDsKKyAgICB9OworICAgIHZvaWQgc2V0Q29uZmlndXJhdGlvbihDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikgeyBtX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pOyB9CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRp
Y2FsLCBTeW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBiZWdpblNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CkBAIC0xNjEsNiArMjE0
LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB0aHJl
c2hvbGRGb3JNZW1vcnlLaWxsKCk7CisgICAgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1v
cnlVc2FnZVBvbGljeSk7CisgICAgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50
KHNpemVfdCk7CisKICAgICB2b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZCgpOwogCiAg
ICAgdm9pZCB1bmluc3RhbGwoKTsKQEAgLTE5OCw2ICsyNTQsOCBAQCBwcml2YXRlOgogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiBtX2RpZEV4Y2VlZEluYWN0aXZlTGltaXRXaGlsZUFjdGl2ZUNh
bGxiYWNrOwogICAgIExvd01lbW9yeUhhbmRsZXIgbV9sb3dNZW1vcnlIYW5kbGVyOwogCisgICAg
Q29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CisKICNpZiBPUyhXSU5ET1dTKQogICAgIHZv
aWQgd2luZG93c01lYXN1cmVtZW50VGltZXJGaXJlZCgpOwogICAgIFJ1bkxvb3A6OlRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4gbV93aW5kb3dzTWVhc3VyZW1lbnRUaW1lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXgg
NTk3MTljYWI3MjY1Njc5ZTQ5ZThiMThhZmExZjI1MjcyNWNkMDM5YS4uNWE1ZWY2YjcxNzkzNGJl
NDdmM2UyN2M1ZTQ1ZTU4ZmRiMmRkMDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdQb2xpY3koKQogICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBtZW1vcnlQb2xpY3lDYWNoaW5nRHVyYXRpb24gPSAyX3M7CiAg
ICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBpZiAobm93IC0gY2FjaGVk
TWVtb3J5UG9saWN5VGltZSA+IG1lbW9yeVBvbGljeUNhY2hpbmdEdXJhdGlvbikgewotICAgICAg
ICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmN1cnJlbnRNZW1v
cnlVc2FnZVBvbGljeSgpOworICAgICAgICBjYWNoZWRNZW1vcnlQb2xpY3kgPSBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmN1cnJlbnRNZW1vcnlVc2FnZVBvbGljeSgpOwogICAg
ICAgICBjYWNoZWRNZW1vcnlQb2xpY3lUaW1lID0gbm93OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggODk4NjA4MmFmNzg1NDdmY2NlNDQ3NWQwNTMxNWQzODE5ZjkxNDA5NC4u
ODhmMGE2MDYxNTJmZjI5MzA0YzYyMWZmZTRlNTNmNjY3OTdhOGNiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xMTIsNiArMTEyLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hF
QURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1
ZXN0LmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0TWltZUluZm8uaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
TmF2aWdhdGlvbkFjdGlvbi5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5k
ZXggZTM5N2MwN2I3Y2Y3MTcwZjRkODMzOTk3ZDQ5OWI0YWM3ZmZjZDg5OC4uODY3MjRjNjdlODg3
MWE5NDBhNGY5M2Y2NWNmZjI1NDhhNGMxZjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC0xNDQsNiArMTQ0LDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mu
aAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TWltZUluZm8uaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlv
bi5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAyNzgxNGY3YjE1ODA0NWI5MDg2YzQ2YzI5
NDkwODU2NjE0OWI2MjVmLi43NzZmYjBiZTY5OWNmNzRjYWVhNmE2ODI0ZjM5NGU4NGJhOGU4NjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcApAQCAtMjA4LDYgKzIwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYK
IAogICAgIGVuY29kZXIgPDwgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzOworCisjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb25maWd1cmF0aW9uOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTU2OSw2ICs1NzMsMTQgQEAgYm9vbCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBX
ZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuYWNj
ZXNzaWJpbGl0eVByZWZlcmVuY2VzID0gV1RGTW92ZSgqYWNjZXNzaWJpbGl0eVByZWZlcmVuY2Vz
KTsKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+PiBt
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uOworICAgIGRlY29kZXIgPj4gbWVtb3J5
UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbjsKKyAgICBpZiAoIW1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJz
Lm1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKCptZW1vcnlQcmVz
c3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBjYzgzNTI4ZGMxZGE0MzIxZmU0NmY3NjdmMmVjNDdlNzhiMjhiZjYwLi4w
NjBkNGYxOTMzMWE1NzljNGE2ZDZhMjZmNDc1MjhiZWY2M2YwYjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Miw2
ICs1MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwog
fQpAQCAtMjQ5LDYgKzI1MywxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAjZW5kaWYKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMgYWNjZXNzaWJp
bGl0eVByZWZlcmVuY2VzOworCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisg
ICAgc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24+IG1l
bW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggOTViNGZmYjc2OWQ3MTFiNmE0ODVh
MDA1ZjdhM2Y1ODE3MmZjZjFhZC4uZWI1OWRlN2JhNWJjNjlmNDE0ZDJhNzIwMzhiNjI5ZDdhN2Iy
YWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xNDksNiArMTQ5LDcgQEAgVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qu
Y3BwIEBuby11bmkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZWRpYUtleVN5c3RlbVBlcm1p
c3Npb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNaW1l
SW5mby5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdh
dGlvbkFjdGlvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdh
dGlvbkNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGY4
ZmIxNTExZjJhMDE5YTA4YTg5NmY3Y2JmNDVjYTQ3MGRhMjgxODUuLjJhNGY0MDZhYmI4YWZiMzA0
ZWUzOGQ2MmIzYTJiZjc2MDg5NGNkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTM5LDYgKzEz
OSw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQorVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuY3BwIEBuby11bmlmeQog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1pbWVJbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQWN0aW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAKaW5kZXggOTVmZmUwNTg0Y2FhNzE5MTFkYWJjZTYxOWQ4NDI5ZGY1NWRhZWNl
MC4uODM2NGEwYzAyMTIxNzMzOWYxMTlmYWVkOWUzYTE2NjZmMWMzZmRkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5jcHAKQEAgLTc3LDYgKzc3LDkgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX3dlYlByb2Nl
c3NQYXRoID0gdGhpcy0+bV93ZWJQcm9jZXNzUGF0aDsKICAgICBjb3B5LT5tX25ldHdvcmtQcm9j
ZXNzUGF0aCA9IHRoaXMtPm1fbmV0d29ya1Byb2Nlc3NQYXRoOwogICAgIGNvcHktPm1fdXNlcklk
ID0gdGhpcy0+bV91c2VySWQ7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKKyAgICBjb3B5LT5tX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSB0
aGlzLT5tX21lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CiAjZW5kaWYKICAgICBy
ZXR1cm4gY29weTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCBmYTY5YTRiNDU3ZWUzMWNlYzc4
NzY1ZTI2MmIwYWYxM2ZlNDBiODdkLi5iYzA1ZmUxNWY1ZWFjZGFjNmYyNWNkZTJhNmE0ODhmYjg0
YzNlMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0xNTMsNiArMTU0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVz
ZXJJZChjb25zdCBpbnQzMl90IHVzZXJJZCkgeyBtX3VzZXJJZCA9IHVzZXJJZDsgfQogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNldE1lbW9y
eVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oY29uc3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSB7IG1fbWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Q29uZmlndXJhdGlvbj4mIG1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVByZXNzdXJlSGFuZGxl
ckNvbmZpZ3VyYXRpb247IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xODksNiArMTk1LDkgQEAgcHJpdmF0ZToKICAgICBX
VEY6OlN0cmluZyBtX25ldHdvcmtQcm9jZXNzUGF0aDsKICAgICBpbnQzMl90IG1fdXNlcklkIHsg
LTEgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHN0
ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uPiBtX21lbW9y
eVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjQ4
MjVjYjdhMmE4ZjhkYTkyN2I4NWFiZWJmZDM3NDg0N2I4MWY1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncy5jcHAKQEAgLTAsMCArMSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4K
KworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAU2hv
cnRfZGVzY3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgdGhlIHNldHRpbmdzIGZv
ciB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyCisgKiBAVGl0bGU6IFdlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYkNvbnRleHQuCisgKgorICogI1dl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgaXMgYSBib3hlZCB0eXBlIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gcHJvdmlkZSBzb21lIGN1c3RvbSBzZXR0aW5ncworICogdG8gY29udHJvbCBob3cgdGhl
IG1lbW9yeSBwcmVzc3VyZSBzaXR1YXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBkaWZmZXJlbnQg
cHJvY2Vzc2VzLgorICoKKyAqIFRoZSBtZW1vcnkgcHJlc3N1cmUgc3lzdGVtIGltcGxlbWVudGVk
IGluc2lkZSB0aGUgZGlmZmVyZW50IHByb2Nlc3Mgd2lsbCB0cnkgdG8ga2VlcCB0aGUgbWVtb3J5
IHVzYWdlCisgKiB1bmRlciB0aGUgZGVmaW5lZCBtZW1vcnkgbGltaXQuIEluIG9yZGVyIHRvIGRv
IHRoYXQsIGl0IHdpbGwgY2hlY2sgdGhlIHVzZWQgbWVtb3J5IHdpdGggYSB1c2VyIGRlZmluZWQK
KyAqIGZyZXF1ZW5jeSBhbmQgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxkIHRyeSB0byByZWxlYXNl
IG1lbW9yeS4gVGhlIHRocmVzaG9sZHMgcGFzc2VkIHdpbGwgZGVmaW5lIGhvdyB1cmdlbnQKKyAq
IGlzIHRvIHJlbGVhc2UgdGhhdCBtZW1vcnkuCisgKgorICogVGFrZSBpbnRvIGFjY291bnQgdGhh
dCBiYWRseSBkZWZpbmVkIHBhcmFtZXRlcnMgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBwZXJmb3Jt
YW5jZSBvZiB0aGUgZW5naW5lLiBGb3IKKyAqIGV4YW1wbGUsIHNldHRpbmcgbWVtb3J5IGxpbWl0
IHRvbyBsb3cgd2l0aCBhIGZhc3QgcG9sbCBpbnRlcnZhbCBjYW4gY2F1c2UgdGhlIHByb2Nlc3Mg
dG8gY29uc3RhbnRseQorICogYmUgdHJ5aW5nIHRvIHJlbGVhc2UgbWVtb3J5LgorICoKKyAqIEEg
I1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgY2FuIGJlIHBhc3NlZCB0byBhICNXZWJLaXRX
ZWJDb250ZXh0IGNvbnN0cnVjdG9yLCBhbmQgdGhlIHNldHRpbmdzIHdpbGwKKyAqIGJlIGFwcGxp
ZWQgdG8gYWxsIHRoZSB3ZWIgcHJvY2Vzc2VzIGNyZWF0ZWQgYnkgdGhhdCBjb250ZXh0LgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK3N0cnVjdCBfV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyB7CisgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b247Cit9OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfY29weSwgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlKTsK
KworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldzoKKyAqCisgKiBD
cmVhdGUgYSBuZXcgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mgd2l0aCB0aGUgZGVmYXVs
dCB2YWx1ZXMuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ldyAjV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyBpbnN0YW5jZSBmaWxsZWQgd2l0aCB0aGUgZGVmYXVsdCB2
YWx1ZXMuCisgKgorICogU2luY2U6IDIuMzQKKyAqLworV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0
aW5ncyogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcoKQoreworICAgIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIG1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzdGF0aWNf
Y2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKj4oZmFzdE1hbGxvYyhzaXplb2YoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncykpKTsKKyAgICBuZXcgKG1lbW9yeVByZXNzdXJlU2V0
dGluZ3MpIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKKyAgICByZXR1cm4gbWVtb3J5
UHJlc3N1cmVTZXR0aW5nczsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3Nl
dHRpbmdzX2NvcHk6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MKKyAqCisgKiBNYWtlIGEgY29weSBvZiBAc2V0dGluZ3MuCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2Ygb2YgdGhlIHBhc3NlZCAjV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncy4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkoV2ViS2l0TWVt
b3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoc2V0dGluZ3MsIG51bGxwdHIpOworCisgICAgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyogY29weSA9IHN0YXRpY19jYXN0PFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqPihmYXN0
WmVyb2VkTWFsbG9jKHNpemVvZihXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKSkpOworCisg
ICAgY29weS0+Y29uZmlndXJhdGlvbiA9IHNldHRpbmdzLT5jb25maWd1cmF0aW9uOworCisgICAg
cmV0dXJuIGNvcHk7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19mcmVlOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisg
KgorICogRnJlZSB0aGUgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MuCisgKgorICogU2lu
Y2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUo
V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChzZXR0aW5ncyk7CisKKyAgICBmYXN0RnJlZShzZXR0aW5ncyk7Cit9CisKKy8qKgor
ICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0OgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKiBAbWVtb3J5X2xp
bWl0OiBhbW91bnQgb2YgbWVtb3J5IChpbiBNQikgdGhhdCB0aGUgcHJvY2VzcyBpcyBhbGxvd2Vk
IHRvIHVzZS4KKyAqCisgKiBTZXRzIEBtZW1vcnlfbGltaXQgdGhlIG1lbW9yeSBsaW1pdCB2YWx1
ZSB0byBAc2V0dGluZ3MuCisgKgorICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIHN5c3RlbSdz
IFJBTSBzaXplIHdpdGggYSBtYXhpbXVtIG9mIDNHQi4KKyAqCisgKiBTaW5jZTogMi4zNAorICov
Cit2b2lkIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdChX
ZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ3VpbnQgbWVtb3J5TGltaXQp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZXR0aW5ncyk7CisgICAgZ19yZXR1cm5faWZfZmFp
bChtZW1vcnlMaW1pdCk7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5iYXNlVGhyZXNo
b2xkID0gbWVtb3J5TGltaXQgKiBNQjsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiB0aGUgdmFsdWUgaW4gTUIgb2Yg
dGhlIG1lbW9yeSBsaW1pdCBpbnNpZGUgQHNldHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0Cisg
Ki8KK2d1aW50IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X21lbW9yeV9saW1p
dChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChzZXR0aW5ncywgMCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZp
Z3VyYXRpb24uYmFzZVRocmVzaG9sZCAvIE1COworfQorCisvKioKKyAqIHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQ6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEB2YWx1ZTogZnJhY3Rpb24g
b2YgdGhlIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgY29uc2VydmF0aXZlIHBvbGljeSBzdGFydHMg
d29ya2luZy4KKyAqCisgKiBTZXRzIEB2YWx1ZSBhcyB0aGUgZnJhY3Rpb24gb2YgdGhlIGRlZmlu
ZWQgbWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBjb25zZXJ2YXRpdmUKKyAqIHBvbGljeSBzdGFydHMg
d29ya2luZy4gVGhpcyBwb2xpY3kgd2lsbCB0cnkgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHBy
aW50IGJ5CisgKiByZWxlYXNpbmcgbm9uIGNyaXRpY2FsIG1lbW9yeS4KKyAqCisgKiBUaGUgdGhy
ZXNob2xkIG11c3QgYmUgYmlnZ2VyIHRoYW4gMCBhbmQgc21hbGxlciB0aGFuIDEsIGFuZCBpdCBt
dXN0IGJlIHNtYWxsZXIKKyAqIHRoYW4gdGhlIHN0cmljdCB0aHJlc2hvbGQgZGVmaW5lZCBpbiBA
c2V0dGluZ3MuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuMzMuCisgKgorICogU2luY2U6IDIuMzQK
KyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRp
dmVfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzLCBnZG91
YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0dGluZ3MpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUgPiAwICYmIHZhbHVlIDwgMSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bCh2YWx1ZSA8IHNldHRpbmdzLT5jb25maWd1cmF0aW9uLnN0cmljdFRocmVzaG9sZEZyYWN0aW9u
KTsKKworICAgIHNldHRpbmdzLT5jb25maWd1cmF0aW9uLmNvbnNlcnZhdGl2ZVRocmVzaG9sZEZy
YWN0aW9uID0gdmFsdWU7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19nZXRfY29uc2VydmF0aXZlX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0
TWVtb3J5UHJlc3N1cmVTZXR0aW5ncworICoKKyAqIFJldHVybnM6IHRoZSB2YWx1ZSBvZiB0aGUg
dGhlIGNvbnNlcnZhdGl2ZSB0aHJlc2hvbGQgaW5zaWRlIEBzZXR0aW5ncy4KKyAqCisgKiBTaW5j
ZTogMi4zNAorICovCitnZG91YmxlIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2V0dGluZ3MsIDApOworCisgICAg
cmV0dXJuIHNldHRpbmdzLT5jb25maWd1cmF0aW9uLmNvbnNlcnZhdGl2ZVRocmVzaG9sZEZyYWN0
aW9uOworfQorCisvKioKKyAqIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0
cmljdF90aHJlc2hvbGQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MKKyAqIEB2YWx1ZTogZnJhY3Rpb24gb2YgdGhlIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUg
c3RyaWN0IHBvbGljeSBzdGFydHMgd29ya2luZy4KKyAqCisgKiBTZXRzIEB2YWx1ZSBhcyB0aGUg
ZnJhY3Rpb24gb2YgdGhlIGRlZmluZWQgbWVtb3J5IGxpbWl0IHdoZXJlIHRoZSBzdHJpY3QKKyAq
IHBvbGljeSBzdGFydHMgd29ya2luZy4gVGhpcyBwb2xpY3kgd2lsbCB0cnkgdG8gcmVkdWNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IGJ5CisgKiByZWxlYXNpbmcgY3JpdGljYWwgbWVtb3J5LgorICoK
KyAqIFRoZSB0aHJlc2hvbGQgbXVzdCBiZSBiaWdnZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4g
MS4gQWxzbywgaXQgbXVzdCBiZSBiaWdnZXIKKyAqIHRoYW4gdGhlIGNvbnNlcnZhdGl2ZSB0aHJl
c2hvbGQgZGVmaW5lZCBpbiBAc2V0dGluZ3MsIGFuZCBzbWFsbGVyIHRoYW4gdGhlIGtpbGwKKyAq
IHRocmVzaG9sZCBpZiB0aGUgbGF0dGVyIGlzIG5vdCAwLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAw
LjUuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MqIHNldHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2V0
dGluZ3MpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPiAwICYmIHZhbHVlIDwgMSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSA+IHNldHRpbmdzLT5jb25maWd1cmF0aW9uLmNvbnNl
cnZhdGl2ZVRocmVzaG9sZEZyYWN0aW9uKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCFzZXR0aW5n
cy0+Y29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24gfHwgdmFsdWUgPCBzZXR0aW5n
cy0+Y29uZmlndXJhdGlvbi5raWxsVGhyZXNob2xkRnJhY3Rpb24pOworCisgICAgc2V0dGluZ3Mt
PmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNob2xkRnJhY3Rpb24gPSB2YWx1ZTsKK30KKworLyoq
CisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xk
OgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzCisgKgorICog
UmV0dXJuczogdGhlIHZhbHVlIG9mIHRoZSB0aGUgc3RyaWN0IHRocmVzaG9sZCBpbnNpZGUgQHNl
dHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dkb3VibGUgd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZChXZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZXR0aW5n
cywgMCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPmNvbmZpZ3VyYXRpb24uc3RyaWN0VGhyZXNo
b2xkRnJhY3Rpb247Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19zZXRfa2lsbF90aHJlc2hvbGQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MKKyAqIEB2YWx1ZTogZnJhY3Rpb24gb2YgdGhlIG1lbW9yeSBsaW1pdCB3aGVy
ZSB0aGUgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBiZWNhdXNlCisgKiAgIG9mIGV4Y2Vzc2l2ZSBt
ZW1vcnkgdXNhZ2UuCisgKgorICogU2V0cyBAdmFsdWUgYXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBk
ZWZpbmVkIG1lbW9yeSBsaW1pdCB3aGVyZSB0aGUgcHJvY2VzcyB3aWxsIGJlCisgKiBraWxsZWQu
CisgKgorICogVGhlIHRocmVzaG9sZCBtdXN0IGJlIGEgdmFsdWUgYmlnZ2VyIG9yIGVxdWFsIHRv
IDAuIEEgdmFsdWUgb2YgMCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzCisgKiBpcyBuZXZlciBraWxs
ZWQuIElmIHRoZSB0aHJlc2hvbGQgaXMgbm90IDAsIHRoZW4gaXQgbXVzdCBiZSBiaWdnZXIgdGhh
biB0aGUgc3RyaWN0IHRocmVzaG9sZAorICogZGVmaW5lZCBpbiBAc2V0dGluZ3MuIFRoZSB0aHJl
c2hvbGQgY2FuIGFsc28gaGF2ZSB2YWx1ZXMgYmlnZ2VyIHRoYW4gMS4gVGhlIGRlZmF1bHQgdmFs
dWUgaXMgMC4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MqIHNldHRpbmdzLCBnZG91YmxlIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
c2V0dGluZ3MpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUgPj0gMCk7CisgICAgZ19yZXR1
cm5faWZfZmFpbCghdmFsdWUgfHwgdmFsdWUgPiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5zdHJp
Y3RUaHJlc2hvbGRGcmFjdGlvbik7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5raWxs
VGhyZXNob2xkRnJhY3Rpb24gPSB2YWx1ZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh2YWx1ZSkgOiBz
dGQ6Om51bGxvcHQ7Cit9CisKKy8qKgorICogd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19nZXRfa2lsbF90aHJlc2hvbGQ6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNz
dXJlU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zOiB0aGUgdmFsdWUgb2YgdGhlIHRoZSBraWxsIHRo
cmVzaG9sZCBpbnNpZGUgQHNldHRpbmdzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dkb3Vi
bGUgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQoV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoc2V0dGluZ3MsIDApOworCisgICAgcmV0dXJuIHNldHRpbmdzLT5jb25maWd1cmF0
aW9uLmtpbGxUaHJlc2hvbGRGcmFjdGlvbi52YWx1ZV9vcigwKTsKK30KKworCisvKioKKyAqIHdl
YmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWw6CisgKiBAc2V0
dGluZ3M6IGEgI1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MKKyAqIEB2YWx1ZTogcGVyaW9k
IChpbiBzZWNvbmRzKSBiZXR3ZWVuIG1lbW9yeSB1c2FnZSBtZWFzdXJlbWVudHMuCisgKgorICog
U2V0cyBAdmFsdWUgYXMgdGhlIHBvbGwgaW50ZXJ2YWwgdXNlZCBieSBAc2V0dGluZ3MuCisgKgor
ICogVGhlIHBvbGwgaW50ZXJ2YWwgdmFsdWUgbXVzdCBiZSBiaWdnZXIgdGhhbiAwLiBUaGUgZGVm
YXVsdCB2YWx1ZSBpcyAzMCBzZWNvbmRzLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQg
d2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbChXZWJLaXRN
ZW1vcnlQcmVzc3VyZVNldHRpbmdzKiBzZXR0aW5ncywgZ2RvdWJsZSB2YWx1ZSkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKHNldHRpbmdzKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlID4g
MCk7CisKKyAgICBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbi5wb2xsSW50ZXJ2YWwgPSBTZWNvbmRz
KHZhbHVlKTsKK30KKworLyoqCisgKiB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dl
dF9wb2xsX2ludGVydmFsOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzCisgKgorICogUmV0dXJuczogdGhlIHZhbHVlIGluIHNlY29uZHMgb2YgdGhlIHRoZSBw
b2xsIGludGVydmFsIGluc2lkZSBAc2V0dGluZ3MuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwor
Z2RvdWJsZSB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9wb2xsX2ludGVydmFs
KFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNldHRpbmdzLCAwKTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmln
dXJhdGlvbi5wb2xsSW50ZXJ2YWwuc2Vjb25kcygpOworfQorCitjb25zdCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24mIHdlYmtpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3NHZXRN
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9uKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIHJldHVybiBzZXR0aW5ncy0+Y29uZmlndXJhdGlvbjsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3NQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzUHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxNDUyMjllNjk4YmJiOGVkY2YwZWFhM2ZmYzhlZDdiZjQ0ZGRmY2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRNZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRNZW1vcnlQ
cmVzc3VyZVNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
PgorCitjb25zdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkNvbmZpZ3VyYXRpb24mIHdlYmtpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3NHZXRNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb25maWd1cmF0aW9u
KFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNmRkOWYyMGU0
ZmYyYmRhMDE4NGQwNjQ1MzAxY2VmMjJlNDdkY2YxNS4uYmQyZDRkMjAyMDZmOGI4NmZlNGNkMWFj
OTBkOTBiNzljMzQ4ZWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRl
ICJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0SW5p
dGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0UHJvdG9jb2xIYW5kbGVyLmgiCkBAIC0xMjQsNiArMTI2LDcgQEAgZW51bSB7CiAgICAgUFJP
UF9VU0VfU1lTVEVNX0FQUEVBUkFOQ0VfRk9SX1NDUk9MTEJBUlMsCiAjZW5kaWYKICNlbmRpZgor
ICAgIFBST1BfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTLAogICAgIE5fUFJPUEVSVElFUywKIH07
CiAKQEAgLTI0MSw2ICsyNDQsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBkbnNQcmVmZXRjaGVkSG9zdHM7CiAgICAgUEFMOjpIeXN0
ZXJlc2lzQWN0aXZpdHkgZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzOworCisgICAgV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncyogbWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKIH07CiAKIHN0YXRpYyBn
dWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM3Niw2ICszODEsMTEgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElELCBjb25zdCBHVmEKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNlbmRpZgor
ICAgIGNhc2UgUFJPUF9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1M6IHsKKyAgICAgICAgZ3BvaW50
ZXIgc2V0dGluZ3MgPSBnX3ZhbHVlX2dldF9ib3hlZCh2YWx1ZSk7CisgICAgICAgIGNvbnRleHQt
PnByaXYtPm1lbW9yeVByZXNzdXJlU2V0dGluZ3MgPSBzZXR0aW5ncyA/IHdlYmtpdF9tZW1vcnlf
cHJlc3N1cmVfc2V0dGluZ3NfY29weShzdGF0aWNfY2FzdDxXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzKj4oc2V0dGluZ3MpKSA6IG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMzk5LDYgKzQwOSwxMSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAg
IGNvbmZpZ3VyYXRpb24uc2V0VXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMocHJpdi0+
dXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMpOwogI2VuZGlmCiAjZW5kaWYKKyAgICBp
ZiAocHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncykgeworICAgICAgICBjb25maWd1cmF0aW9u
LnNldE1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24od2Via2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5nc0dldE1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24ocHJpdi0+bWVt
b3J5UHJlc3N1cmVTZXR0aW5ncykpOworICAgICAgICAvLyBPbmNlIHRoZSBzZXR0aW5ncyBoYXZl
IGJlZW4gcGFzc2VkIHRvIHRoZSBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24sIHdlIGRvbid0IG5l
ZWQgdGhlbSBhbnltb3JlIHNvIHdlIGNhbiBmcmVlIHRoZW0uCisgICAgICAgIGdfY2xlYXJfcG9p
bnRlcigmcHJpdi0+bWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgd2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19mcmVlKTsKKyAgICB9CiAKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFu
YWdlcikKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgcHJp
di0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSwgbnVsbHB0cikpOwpAQCAtNTQzLDYgKzU1
OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRX
ZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwogI2VuZGlmCiAjZW5kaWYKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYkNvbnRleHQ6bWVtb3J5LXByZXNzdXJlLXNldHRpbmdzOgorICAg
ICAqCisgICAgICogVGhlICNXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIGFwcGxpZWQgdG8g
dGhlIHdlYiBwcm9jZXNzZXMgY3JlYXRlZCBieSB0aGlzIGNvbnRleHQuCisgICAgICoKKyAgICAg
KiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUVNT1JZX1BS
RVNTVVJFX1NFVFRJTkdTXSA9CisgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgKKyAgICAgICAg
ICAgICJtZW1vcnktcHJlc3N1cmUtc2V0dGluZ3MiLAorICAgICAgICAgICAgXygiTWVtb3J5IFBy
ZXNzdXJlIFNldHRpbmdzIiksCisgICAgICAgICAgICBfKCJUaGUgV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyBhcHBsaWVkIHRvIHRoZSB3ZWIgcHJvY2Vzc2VzIGNyZWF0ZWQgYnkgdGhpcyBj
b250ZXh0IiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9NRU1PUllfUFJFU1NVUkVfU0VUVElO
R1MsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1dS
SVRBQkxFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworCiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJUSUVTLCBzT2JqUHJvcGVy
dGllcyk7CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QXV0b2NsZWFudXBzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCmluZGV4IDdlNTJiZmE4YjdjNGY4N2E4MGRmZjFiMjM3
MTNiYmY1MWJmYjgwNGQuLmE0YWFmZDczZmIyYWE3ZDgzYjVhM2YzNjlhMDJlNjFlODYwZGQyNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b2Ns
ZWFudXBzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRv
Y2xlYW51cHMuaApAQCAtNzksNiArNzksNyBAQCBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVO
QyAoV2ViS2l0Q3JlZGVudGlhbCwgd2Via2l0X2NyZWRlbnRpYWxfZnJlZSkKIEdfREVGSU5FX0FV
VE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRJVFBGaXJzdFBhcnR5LCB3ZWJraXRfaXRwX2ZpcnN0
X3BhcnR5X3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdElUUFRo
aXJkUGFydHksIHdlYmtpdF9pdHBfdGhpcmRfcGFydHlfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRS
X0NMRUFOVVBfRlVOQyAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X3VucmVmKQorR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MsIHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZnJlZSkK
IEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRNaW1lSW5mbywgd2Via2l0X21p
bWVfaW5mb191bnJlZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uLCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZnJlZSkKIEdfREVGSU5FX0FV
VE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncywgd2Via2l0X25l
dHdvcmtfcHJveHlfc2V0dGluZ3NfZnJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjY2NzgzNTFiNDQ2MmQ4NmUwMDZjNmIzYTBiYjI4ZWIxZmIwMWFkNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TWVtb3J5
UHJlc3N1cmVTZXR0aW5ncy5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAh
ZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtp
dDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktp
dE1lbW9yeVByZXNzdXJlU2V0dGluZ3NfaAorI2RlZmluZSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9N
RU1PUllfUFJFU1NVUkVfU0VUVElOR1MgKHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Z2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nczsKKworV0VCS0lUX0FQSSBHVHlwZQord2Vi
a2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqCit3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldyAgICAgICAgICAgICAgICAgICAgICAgICh2
b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICoKK3dlYmtp
dF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfY29weSAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVtb3J5X2xpbWl0
ICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludCAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfbGltaXQpOworCitXRUJLSVRfQVBJ
IGd1aW50Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGltaXQg
ICAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfY29uc2Vy
dmF0aXZlX3RocmVzaG9sZCAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZG91YmxlICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9BUEkg
Z2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfY29uc2VydmF0aXZl
X3RocmVzaG9sZCAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0cmlj
dF90aHJlc2hvbGQgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworCitXRUJLSVRfQVBJ
IGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJl
c2hvbGQgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRpbmdzKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9raWxs
X3RocmVzaG9sZCAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKworV0VCS0lUX0FQ
SSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVz
aG9sZCAgICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9s
bF9pbnRlcnZhbCAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZG91YmxlICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisKK1dFQktJVF9B
UEkgZ2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRl
cnZhbCAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBiNWYzZTdkNjBkMjAyZTBj
NjViOTc3ODNlZGU3NGUwOWY3YWU3OGI5Li41MWQ0Y2FiMjdlYzJiMzRmZmFlYmE5NjU1M2Q5Yjcy
YmY4MjcwNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5NTMsNCAr
MTk1MywyNyBAQCBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCiB3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19nZXRfdHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3M8L0ZJTEU+CitXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX25ldword2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19jb3B5Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUK
K3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21lbW9yeV9saW1pdAord2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkCit3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9zdHJpY3RfdGhyZXNob2xkCit3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9raWxsX3RocmVzaG9sZAord2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVf
c2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3NfZ2V0X3BvbGxfaW50ZXJ2YWwKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9tZW1v
cnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
RUJLSVRfVFlQRV9NRU1PUllfUFJFU1NVUkVfU0VUVElOR1MKKzwvU0VDVElPTj4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBlY2JlNDMzZWQ4ODgzNTNi
MWU2MDEzOTQzYjQ0NjM4MzVjMzU4MmQyLi5iN2QyNzQxYzRiMmMxYWQ0ZTM0YTFmYWI0OGZlYzYx
YWYxYzYxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApA
QCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWVkaWFLZXlTeXN0
ZW1QZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWVtb3J5UHJl
c3N1cmVTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TWltZUluZm8uaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvY2xlYW51cHMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b2NsZWFudXBzLmgKaW5kZXggMGYwMDk0
OWExMDFlNTllNzM5MTAwM2M4MTEyZjRjZjkyYTMxZmM4NC4uNzdhYjc3YmM5ODRlNzBkM2ZhY2Uw
MDMzZjEyNDJkMjZjNDAyZDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRBdXRvY2xlYW51cHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEF1dG9jbGVhbnVwcy5oCkBAIC03Miw2ICs3Miw3IEBAIEdfREVGSU5F
X0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRDcmVkZW50aWFsLCB3ZWJraXRfY3JlZGVudGlh
bF9mcmVlKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdElUUEZpcnN0UGFy
dHksIHdlYmtpdF9pdHBfZmlyc3RfcGFydHlfdW5yZWYpCiBHX0RFRklORV9BVVRPUFRSX0NMRUFO
VVBfRlVOQyAoV2ViS2l0SVRQVGhpcmRQYXJ0eSwgd2Via2l0X2l0cF90aGlyZF9wYXJ0eV91bnJl
ZikKIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCitHX0RFRklORV9BVVRPUFRSX0NMRUFO
VVBfRlVOQyAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgd2Via2l0X21lbW9yeV9wcmVz
c3VyZV9zZXR0aW5nc19mcmVlKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktp
dE1pbWVJbmZvLCB3ZWJraXRfbWltZV9pbmZvX3VucmVmKQogR19ERUZJTkVfQVVUT1BUUl9DTEVB
TlVQX0ZVTkMgKFdlYktpdE5hdmlnYXRpb25BY3Rpb24sIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlv
bl9mcmVlKQogR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdE5ldHdvcmtQcm94
eVNldHRpbmdzLCB3ZWJraXRfbmV0d29ya19wcm94eV9zZXR0aW5nc19mcmVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdE1lbW9yeVBy
ZXNzdXJlU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjQ3MzVjZjY3OWU1Njg3MzFmODU5MDRmYWIy
ZmU1ZDkxODhmZjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzLmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAi
T25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nc19oCisjZGVmaW5lIFdlYktpdE1l
bW9yeVByZXNzdXJlU2V0dGluZ3NfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfTUVNT1JZX1BSRVNTVVJFX1NFVFRJTkdTICh3ZWJraXRfbWVtb3J5X3ByZXNzdXJl
X3NldHRpbmdzX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRNZW1vcnlQcmVz
c3VyZVNldHRpbmdzIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3M7CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICAgICAg
ICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgKgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19uZXcgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyAqCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19mcmVlICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGluZ3MpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X21l
bW9yeV9saW1pdCAgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2xpbWl0KTsKKwor
V0VCS0lUX0FQSSBndWludAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVt
b3J5X2xpbWl0ICAgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
c2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mg
KnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworCitX
RUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2Nv
bnNlcnZhdGl2ZV90aHJlc2hvbGQgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNldHRp
bmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdz
X3NldF9zdHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdz
ICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKwor
V0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9z
dHJpY3RfdGhyZXNob2xkICAgICAgIChXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzICpzZXR0
aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5n
c19zZXRfa2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5n
cyAqc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisK
K1dFQktJVF9BUEkgZ2RvdWJsZQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRf
a2lsbF90aHJlc2hvbGQgICAgICAgICAoV2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyAqc2V0
dGluZ3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3Nfc2V0X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGlu
Z3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwor
CitXRUJLSVRfQVBJIGdkb3VibGUKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0
X3BvbGxfaW50ZXJ2YWwgICAgICAgICAgKFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MgKnNl
dHRpbmdzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3NfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDRiNjZiYjk1ZjEzMjZiZDgzODMy
YjY4ZjQyOWMyMWVmNjg4MDhmMzguLjllMDRhMGEwNDlmODdjY2FhYjQ5NDNlYmQ5NDBjNWIzOTYz
MzM3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE2NTEsMyArMTY1MSwyNyBAQCBXRUJLSVRf
V0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKIFdlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUK
IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9O
PgorPEZJTEU+V2ViS2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5nczwvRklMRT4KK1dlYktpdE1lbW9y
eVByZXNzdXJlU2V0dGluZ3MKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfbmV3Cit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2NvcHkKK3dlYmtpdF9tZW1vcnlfcHJlc3N1
cmVfc2V0dGluZ3NfZnJlZQord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfbWVt
b3J5X2xpbWl0Cit3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9tZW1vcnlfbGlt
aXQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2NvbnNlcnZhdGl2ZV90aHJl
c2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90
aHJlc2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0cmljdF90aHJl
c2hvbGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3N0cmljdF90aHJlc2hv
bGQKK3dlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X2tpbGxfdGhyZXNob2xkCit3
ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2dldF9raWxsX3RocmVzaG9sZAord2Via2l0
X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfcG9sbF9pbnRlcnZhbAord2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfcG9sbF9pbnRlcnZhbAorCis8U1VCU0VDVElPTiBQcml2
YXRlPgord2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfdHlwZQorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX01FTU9SWV9QUkVTU1VSRV9TRVRUSU5HUworPC9T
RUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJr
aXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKaW5kZXggODc5
MjkyNTdiZjczYWJhNjg0YTM4MGFjY2Q4YzFiYmIzOTRiYWQ4Ny4uNWM5M2Q3NjBmNzM0YTEyZjYx
NDg5OTU0NTEzNWZkZjc3MDE2NDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L3dlYmtpdC5oCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRNZWRpYUtleVN5c3Rl
bVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0TWltZUluZm8uaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0TmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCA4NGFhNjUzMjc4ZjgzMThiMWRjZjdjOWJh
MTVlODAyMmY4MjA3NjNiLi4xNjAzYzliMmYzNDk2YzVmM2ZlMWViZDY5NjFhNmMwOWY0Y2I3NmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9v
bEdMaWIuY3BwCkBAIC0xMDcsNiArMTA3LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICNp
ZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAgICBwYXJhbWV0ZXJzLnVzZVN5c3RlbUFw
cGVhcmFuY2VGb3JTY3JvbGxiYXJzID0gbV9jb25maWd1cmF0aW9uLT51c2VTeXN0ZW1BcHBlYXJh
bmNlRm9yU2Nyb2xsYmFycygpOwogI2VuZGlmCisKKyAgICBwYXJhbWV0ZXJzLm1lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPm1lbW9yeVByZXNzdXJl
SGFuZGxlckNvbmZpZ3VyYXRpb24oKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1JbnZhbGlkYXRlQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5kZXggYmFkMDAxNDZkODg2MzUyMzBiMGE1NzFhOTkzOWMy
MWNkOGE2NDgyMi4uY2Q3MzIxOTNlODMxOTA2OWQ5ZDMwYTcyNmEyNjNkYzUxNjEwNjhiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc0dMaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcApA
QCAtMTA1LDYgKzEwNSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAjaWYgUExBVEZPUk0o
R1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgc2V0VXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJh
cnMocGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyk7CiAjZW5kaWYK
KworICAgIGlmIChwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24p
CisgICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuc2V0Q29uZmlndXJh
dGlvbihXVEZNb3ZlKCpwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWMxZTU5OTIwMWJmNDdmMTM2
ZTg1ODE0NjVlZjVhZWUwNGZlZmM5Yi4uMTU4ZDQyNjRhYzZhNWZiZWRlNDgzYTk1ZmM4MTRhNDMw
N2VhYzM1NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA3LTIxICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0byBjb25maWd1
cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBBZGQgYSB0
ZXN0IGZvciBXZWJLaXRNZW1vcnlQcmVzc3VyZVNldHRpbmdzIEFQSSBhbmQgdG8gdGVzdCBXZWJL
aXRXZWJDb250ZXh0IHdpdGgKKyAgICAgICAgbm9uIGRlZmF1bHQgV2ViS2l0TWVtb3J5UHJlc3N1
cmVTZXR0aW5ncyB2YWx1ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoTWVtb3J5UHJlc3N1cmVU
ZXN0OjpzZXR1cCk6CisgICAgICAgIChNZW1vcnlQcmVzc3VyZVRlc3Q6OnRlYXJkb3duKToKKyAg
ICAgICAgKE1lbW9yeVByZXNzdXJlVGVzdDo6d2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayk6
CisgICAgICAgIChNZW1vcnlQcmVzc3VyZVRlc3Q6OndhaXRVbnRpbFdlYlByb2Nlc3NUZXJtaW5h
dGVkKToKKyAgICAgICAgKHRlc3RNZW1vcnlQcmVzc3VyZVNldHRpbmdzKToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1h
aW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWlu
Lmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKwogMjAyMS0wNy0yMCAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBydW4gZnRsLWVhZ2VyLW5vLWNqaXQg
b24gZGVidWcgYnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA5ZTkyMzNhYjA5
MDcwOTlhMDJiNzg0YzI4NGZlZDE5NzMzZjY0Mjc2Li41MzI1NDhiMWU0ZTJhMGFmNWM5YTJlZTFj
MzIwNmJjYmYyODhmNDNhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTc3MCw2ICs3
NzAsMTA2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAjZW5kaWYKIH0KIAorY2xhc3MgTWVtb3J5UHJlc3N1
cmVUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVT
VF9GSVhUVVJFX1dJVEhfU0VUVVBfVEVBUkRPV04oTWVtb3J5UHJlc3N1cmVUZXN0LCBzZXR1cCwg
dGVhcmRvd24pOworCisgICAgc3RhdGljIHZvaWQgc2V0dXAoKQorICAgIHsKKyAgICAgICAgVGVz
dDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdzID0gd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19uZXcoKTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRf
bWVtb3J5X2xpbWl0KFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgMjApOworICAgICAg
ICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9wb2xsX2ludGVydmFsKFRlc3Q6
OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgMC41KTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9w
cmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQoVGVzdDo6c19tZW1vcnlQcmVzc3Vy
ZVNldHRpbmdzLCAxKTsKKyAgICAgICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19z
ZXRfc3RyaWN0X3RocmVzaG9sZChUZXN0OjpzX21lbW9yeVByZXNzdXJlU2V0dGluZ3MsIDAuNzUp
OworICAgICAgICB3ZWJraXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRp
dmVfdGhyZXNob2xkKFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncywgMC41KTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCB0ZWFyZG93bigpCisgICAgeworICAgICAgICB3ZWJraXRfbWVt
b3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUoVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdz
KTsKKyAgICAgICAgVGVzdDo6c19tZW1vcnlQcmVzc3VyZVNldHRpbmdzID0gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzVGVybWluYXRlZENhbGxiYWNrKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFz
b24sIE1lbW9yeVByZXNzdXJlVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fdGVy
bWluYXRpb25SZWFzb24gPSByZWFzb247CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nv
bm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZvaWQqPih3ZWJQcm9jZXNz
VGVybWluYXRlZENhbGxiYWNrKSwgdGVzdCk7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVz
dC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxXZWJQcm9jZXNzVGVy
bWluYXRlZCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0X2FmdGVyKG1fd2ViVmll
dywgIndlYi1wcm9jZXNzLXRlcm1pbmF0ZWQiLCBHX0NBTExCQUNLKE1lbW9yeVByZXNzdXJlVGVz
dDo6d2ViUHJvY2Vzc1Rlcm1pbmF0ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgV2ViS2l0V2ViUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uIG1fdGVybWluYXRpb25SZWFzb24geyBXRUJLSVRfV0VCX1BST0NFU1NfQ1JB
U0hFRCB9OworfTsKKworc3RhdGljIHZvaWQgdGVzdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MoTWVt
b3J5UHJlc3N1cmVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8vIEJlZm9yZSB0
ZXN0aW5nIHRoZSBzZXR0aW5ncyB0aGF0IGhhdmUgYmVlbiBzZXQgdG8gdGhlIGNvbnRleHQsIHVz
ZSBhIG5ldyBpbnN0YW5jZQorICAgIC8vIG9mIFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3Mg
dG8gdGVzdCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGdldHRlcnMgYW5kIHNldHRlcnMuCisgICAgV2Vi
S2l0TWVtb3J5UHJlc3N1cmVTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfbWVtb3J5X3ByZXNz
dXJlX3NldHRpbmdzX25ldygpOworCisgICAgLy8gV2UgY2FuJ3QgZXhhY3RseSBrbm93IHRoZSBk
ZWZhdWx0IHZhbHVlIGZvciB0aGUgbWVtb3J5IGxpbWl0LCBhcyBpdCBkZXBlbmRzIG9uCisgICAg
Ly8gdGhlIGhhcmR3YXJlIG9mIHRoZSBtYWNoaW5lLCBzbyBqdXN0IGVuc3VyZSB0aGF0IGl0J3Mg
c29tZXRoaW5nID4gMCBhbmQgPD0gM0dCLgorICAgIGd1aW50IGxpbWl0ID0gd2Via2l0X21lbW9y
eV9wcmVzc3VyZV9zZXR0aW5nc19nZXRfbWVtb3J5X2xpbWl0KHNldHRpbmdzKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KGxpbWl0LCA+LCAwKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGxpbWl0ICog
TUIsIDw9LCAzICogR0IpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9tZW1vcnlfcHJl
c3N1cmVfc2V0dGluZ3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQoc2V0dGluZ3MpLCA9PSwg
MC4zMyk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0
aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZChzZXR0aW5ncyksID09LCAwLjUpOworICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X2tpbGxfdGhy
ZXNob2xkKHNldHRpbmdzKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9t
ZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwoc2V0dGluZ3MpLCA9PSwg
MzApOworCisgICAgLy8gVGVzdCBzZXR0aW5nIGFuZCBnZXR0aW5nIHZhbHVlcy4KKyAgICB3ZWJr
aXRfbWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX3NldF9tZW1vcnlfbGltaXQoc2V0dGluZ3MsIDIw
KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nf
Z2V0X21lbW9yeV9saW1pdChzZXR0aW5ncyksID09LCAyMCk7CisKKyAgICB3ZWJraXRfbWVtb3J5
X3ByZXNzdXJlX3NldHRpbmdzX3NldF9jb25zZXJ2YXRpdmVfdGhyZXNob2xkKHNldHRpbmdzLCAw
LjQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGlu
Z3NfZ2V0X2NvbnNlcnZhdGl2ZV90aHJlc2hvbGQoc2V0dGluZ3MpLCA9PSwgMC40KTsKKworICAg
IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3N0cmljdF90aHJlc2hvbGQoc2V0
dGluZ3MsIDAuNik7CisgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfc3RyaWN0X3RocmVzaG9sZChzZXR0aW5ncyksID09LCAwLjYpOworCisg
ICAgd2Via2l0X21lbW9yeV9wcmVzc3VyZV9zZXR0aW5nc19zZXRfa2lsbF90aHJlc2hvbGQoc2V0
dGluZ3MsIDEuMSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X21lbW9yeV9wcmVzc3Vy
ZV9zZXR0aW5nc19nZXRfa2lsbF90aHJlc2hvbGQoc2V0dGluZ3MpLCA9PSwgMS4xKTsKKworICAg
IHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3Nfc2V0X3BvbGxfaW50ZXJ2YWwoc2V0dGlu
Z3MsIDUpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3NfZ2V0X3BvbGxfaW50ZXJ2YWwoc2V0dGluZ3MpLCA9PSwgNSk7CisKKyAgICB3ZWJraXRf
bWVtb3J5X3ByZXNzdXJlX3NldHRpbmdzX2ZyZWUoc2V0dGluZ3MpOworCisgICAgLy8gQW4gZW1w
dHkgdmlldyB1c2VzIGFyb3VuZCA3TUIgb2YgbWVtb3J5LiBXZSdyZSBzZXR0aW5nIGEgbWF4aW11
bSBvZiAyME1CIGhlcmUsIHBvbGxpbmcgZXZlcnkgMC41IHNlY29uZHMsCisgICAgLy8gYW5kIHRo
ZSBraWxsIGZyYWN0aW9uIGlzIDEsIHNvIHRoZSB3ZWIgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCB3
aGVuIGl0IGV4Y2VlZHMgMjBNQi4KKyAgICAvLyBUaGUgdGVzdCBodG1sIHdpbGwgYWxsb2NhdGUg
YSBjYW52YXMgb2YgMzAwMHgzMDAwLCB3aGljaCByZXF1aXJlcyBhcm91bmQgMzZNQiBvZiBtZW1v
cnksIHNvIG9uY2UgaXQgZ2V0cworICAgIC8vIGNyZWF0ZWQsIHRoZSBNZW1vcnlQcmVzc3VyZUhh
bmRsZXIgd2lsbCBkZXRlY3QgdGhhdCB0aGUgbWVtb3J5IHVzYWdlIGlzIHRvbyBoaWdoIGFuZCBr
aWxsIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAvLyBUaGlzIHRyaWdnZXJzIHRoZSB3ZWItcHJvY2Vz
cy10ZXJtaW5hdGVkIHNpZ25hbCBpbiB0aGUgdmlldyB3aXRoIFdFQktJVF9XRUJfUFJPQ0VTU19F
WENFRURFRF9NRU1PUllfTElNSVQKKyAgICAvLyBhcyB0aGUgdGVybWluYXRpb24gcmVhc29uLgor
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGh0bWwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAg
ICAiICA8Ym9keT4iCisgICAgICAgICIgICAgPHNjcmlwdD4iCisgICAgICAgICIgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyIKKyAgICAgICAgIiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsiCisgICAgICAgICIgICAgICAgIGNhbnZhcy53
aWR0aCA9IDMwMDA7IgorICAgICAgICAiICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMzAwMDsiCisg
ICAgICAgICIgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Igor
ICAgICAgICAiICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdncmVlbic7IgorICAgICAgICAi
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIDMwMDAsIDMwMDApOyIKKyAgICAgICAgIiAg
ICAgIH0sIDApOyIKKyAgICAgICAgIiAgICA8L3NjcmlwdD4iCisgICAgICAgICIgICAgPGNhbnZh
cyBpZD0nY2FudmFzJz48L2NhbnZhcz4iCisgICAgICAgICIgIDwvYm9keT4iCisgICAgICAgICI8
L2h0bWw+IjsKKworICAgIHRlc3QtPm1fZXhwZWN0ZWRXZWJQcm9jZXNzQ3Jhc2ggPSB0cnVlOwor
ICAgIHRlc3QtPmxvYWRIdG1sKGh0bWwsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbFdl
YlByb2Nlc3NUZXJtaW5hdGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rlcm1p
bmF0aW9uUmVhc29uLCA9PSwgV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1J
VCk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRl
c3RTZXJ2ZXIoKTsKQEAgLTc4Niw2ICs4ODYsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgU2Vj
dXJpdHlQb2xpY3lUZXN0OjphZGQoIldlYktpdFNlY3VyaXR5TWFuYWdlciIsICJzZWN1cml0eS1w
b2xpY3kiLCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5UG9saWN5KTsKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIiLCAiZmlsZS14aHIiLCB0ZXN0V2ViQ29udGV4dFNl
Y3VyaXR5RmlsZVhIUik7CiAgICAgUHJveHlUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAi
cHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOworICAgIE1lbW9yeVByZXNzdXJl
VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgIm1lbW9yeS1wcmVzc3VyZSIsIHRlc3RNZW1v
cnlQcmVzc3VyZVNldHRpbmdzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKaW5kZXggZmE1YmUxNjI3
MmRjMjY1YWEzOTU2MjBiMTY5MTI2N2ViYWM5ZDkzNS4uZTg5NmY3YWUxNWYwM2ZhNjgwNGNjOGI0
Yjg1MzU3OTdjZmY1MWNlMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMjksNiArMjksNyBAQAogR1JlZlB0cjxHREJ1c1NlcnZl
cj4gVGVzdDo6c19kYnVzU2VydmVyOwogVmVjdG9yPEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPj4g
VGVzdDo6c19kYnVzQ29ubmVjdGlvbnM7CiBIYXNoTWFwPHVpbnQ2NF90LCBHREJ1c0Nvbm5lY3Rp
b24qPiBUZXN0OjpzX2RidXNDb25uZWN0aW9uUGFnZU1hcDsKK1dlYktpdE1lbW9yeVByZXNzdXJl
U2V0dGluZ3MqIFRlc3Q6OnNfbWVtb3J5UHJlc3N1cmVTZXR0aW5ncyA9IG51bGxwdHI7CiAKIHZv
aWQgYmVmb3JlQWxsKCk7CiB2b2lkIGFmdGVyQWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaAppbmRleCAxNDQ1MzExZjZmODZlZDNmNTQ2ODk5
M2Q4MGYwODgzNmJkNDlkNzI2Li44Yzc5MDAwNDlhM2JhMjQ0NGNjNDY3MzJmNDVhMTM3NmI3OWY3
YjRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0
TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWlu
LmgKQEAgLTE0Miw2ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAidXNlLXN5c3RlbS1h
cHBlYXJhbmNlLWZvci1zY3JvbGxiYXJzIiwgRkFMU0UsCiAjZW5kaWYKICNlbmRpZgorICAgICAg
ICAgICAgIm1lbW9yeS1wcmVzc3VyZS1zZXR0aW5ncyIsIHNfbWVtb3J5UHJlc3N1cmVTZXR0aW5n
cywKICAgICAgICAgICAgIG51bGxwdHIpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93ZWJDb250ZXh0LmdldCgpKSk7CiAgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAiaW5pdGlhbGl6ZS13ZWItZXh0
ZW5zaW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayksIHRo
aXMpOwpAQCAtMjkyLDQgKzI5Myw1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1JlZlB0cjxHREJ1
c1NlcnZlcj4gc19kYnVzU2VydmVyOwogICAgIHN0YXRpYyBWZWN0b3I8R1JlZlB0cjxHREJ1c0Nv
bm5lY3Rpb24+PiBzX2RidXNDb25uZWN0aW9uczsKICAgICBzdGF0aWMgSGFzaE1hcDx1aW50NjRf
dCwgR0RCdXNDb25uZWN0aW9uKj4gc19kYnVzQ29ubmVjdGlvblBhZ2VNYXA7CisgICAgc3RhdGlj
IFdlYktpdE1lbW9yeVByZXNzdXJlU2V0dGluZ3MqIHNfbWVtb3J5UHJlc3N1cmVTZXR0aW5nczsK
IH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>