<?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>133854</bug_id>
          
          <creation_ts>2014-06-13 06:57:21 -0700</creation_ts>
          <short_desc>[GTK] Implement connected and disconnected events of GAMEPAD API with libmanette</short_desc>
          <delta_ts>2020-05-20 15:34:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>133850</dependson>
          <blocked>133847</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michal Debski">m.debski</reporter>
          <assigned_to name="ChangSeok Oh">changseok</assigned_to>
          <cc>agomez</cc>
    
    <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ltilve</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015410</commentid>
    <comment_count>0</comment_count>
    <who name="Michal Debski">m.debski</who>
    <bug_when>2014-06-13 06:57:21 -0700</bug_when>
    <thetext>This adds gamepad provider implementation for GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017520</commentid>
    <comment_count>1</comment_count>
      <attachid>233594</attachid>
    <who name="Michal Debski">m.debski</who>
    <bug_when>2014-06-23 03:22:25 -0700</bug_when>
    <thetext>Created attachment 233594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636376</commentid>
    <comment_count>2</comment_count>
      <attachid>395125</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-03-31 21:33:43 -0700</bug_when>
    <thetext>Created attachment 395125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636393</commentid>
    <comment_count>3</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-03-31 22:31:34 -0700</bug_when>
    <thetext>&gt; src/meson.build:116:6: 
&gt; : Program(s) [&apos;vapigen&apos;] not found or not executable

The build bot seems to not have vala package..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636396</commentid>
    <comment_count>4</comment_count>
      <attachid>395133</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-03-31 22:48:50 -0700</bug_when>
    <thetext>Created attachment 395133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636415</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-01 01:08:24 -0700</bug_when>
    <thetext>(In reply to ChangSeok Oh from comment #3)
&gt; &gt; src/meson.build:116:6: 
&gt; &gt; : Program(s) [&apos;vapigen&apos;] not found or not executable
&gt; 
&gt; The build bot seems to not have vala package..

Please disable that and the &quot;introspection&quot; options in the meson build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636426</commentid>
    <comment_count>6</comment_count>
      <attachid>395149</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-01 01:50:37 -0700</bug_when>
    <thetext>Created attachment 395149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636428</commentid>
    <comment_count>7</comment_count>
      <attachid>395149</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-01 01:56:29 -0700</bug_when>
    <thetext>Comment on attachment 395149
Patch

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

&gt; Tools/gtk/jhbuild.modules:449
&gt; +  &lt;meson id=&quot;manette&quot; mesonargs=&quot;-Dintrospection=false&quot;&gt;

-Dvapi=false too please :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636430</commentid>
    <comment_count>8</comment_count>
      <attachid>395150</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-01 02:06:27 -0700</bug_when>
    <thetext>Created attachment 395150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636431</commentid>
    <comment_count>9</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-01 02:07:08 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #7)
&gt; Comment on attachment 395149 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395149&amp;action=review
&gt; 
&gt; &gt; Tools/gtk/jhbuild.modules:449
&gt; &gt; +  &lt;meson id=&quot;manette&quot; mesonargs=&quot;-Dintrospection=false&quot;&gt;
&gt; 
&gt; -Dvapi=false too please :)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636794</commentid>
    <comment_count>10</comment_count>
      <attachid>395240</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-01 20:55:38 -0700</bug_when>
    <thetext>Created attachment 395240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640339</commentid>
    <comment_count>11</comment_count>
      <attachid>395240</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-04-10 13:31:28 -0700</bug_when>
    <thetext>Comment on attachment 395240
Patch

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

Any new Find modules should expose a target see https://github.com/WebKit/webkit/blob/master/Source/cmake/FindOpenJPEG.cmake for something you should be able to copy pasta for the most part.

&gt; Source/cmake/FindManette.cmake:49
&gt; +find_package(PkgConfig)
&gt; +pkg_check_modules(PC_MANETTE manette-0.2)
&gt; +
&gt; +find_path(MANETTE_INCLUDE_DIRS
&gt; +    NAMES libmanette.h
&gt; +    HINTS ${PC_MANETTE_INCLUDEDIR}
&gt; +          ${PC_MANETTE_INCLUDE_DIRS}
&gt; +)
&gt; +
&gt; +find_library(MANETTE_LIBRARIES
&gt; +    NAMES manette-0.2
&gt; +    HINTS ${PC_MANETTE_LIBDIR}
&gt; +          ${PC_MANETTE_LIBRARY_DIRS}
&gt; +)
&gt; +
&gt; +include(FindPackageHandleStandardArgs)
&gt; +find_package_handle_standard_args(Manette
&gt; +    FOUND_VAR MANETTE_FOUND
&gt; +    REQUIRED_VARS MANETTE_INCLUDE_DIRS MANETTE_LIBRARIES
&gt; +)

Please add a proper target in CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640557</commentid>
    <comment_count>12</comment_count>
      <attachid>396169</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-11 10:12:50 -0700</bug_when>
    <thetext>Created attachment 396169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640558</commentid>
    <comment_count>13</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-11 10:15:03 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #11)
&gt; Comment on attachment 395240 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395240&amp;action=review
&gt; 
&gt; Any new Find modules should expose a target see
&gt; https://github.com/WebKit/webkit/blob/master/Source/cmake/FindOpenJPEG.cmake
&gt; for something you should be able to copy pasta for the most part.
&gt; 
&gt; &gt; Source/cmake/FindManette.cmake:49
&gt; &gt; +find_package(PkgConfig)
&gt; &gt; +pkg_check_modules(PC_MANETTE manette-0.2)
&gt; &gt; +
&gt; &gt; +find_path(MANETTE_INCLUDE_DIRS
&gt; &gt; +    NAMES libmanette.h
&gt; &gt; +    HINTS ${PC_MANETTE_INCLUDEDIR}
&gt; &gt; +          ${PC_MANETTE_INCLUDE_DIRS}
&gt; &gt; +)
&gt; &gt; +
&gt; &gt; +find_library(MANETTE_LIBRARIES
&gt; &gt; +    NAMES manette-0.2
&gt; &gt; +    HINTS ${PC_MANETTE_LIBDIR}
&gt; &gt; +          ${PC_MANETTE_LIBRARY_DIRS}
&gt; &gt; +)
&gt; &gt; +
&gt; &gt; +include(FindPackageHandleStandardArgs)
&gt; &gt; +find_package_handle_standard_args(Manette
&gt; &gt; +    FOUND_VAR MANETTE_FOUND
&gt; &gt; +    REQUIRED_VARS MANETTE_INCLUDE_DIRS MANETTE_LIBRARIES
&gt; &gt; +)
&gt; 
&gt; Please add a proper target in CMake.

O.K.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641828</commentid>
    <comment_count>14</comment_count>
      <attachid>396169</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-15 09:28:02 -0700</bug_when>
    <thetext>Comment on attachment 396169
Patch

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

This looks all good to me, module a few nits. It would not hurt to have
someone else take a quick look and rubber-stamp it, though.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepad.cpp:35
&gt; +    , m_device(adoptGRef(static_cast&lt;ManetteDevice*&gt;(g_object_ref(device))))

You don&apos;t need to use adopGRef() + g_object_ref() by here, you can pass the
pointer to the GRefPtr constructor and it will increase the reference count
automatically. The following should be enough:

    ManetteGamePad(ManetteDevice* device, unsigned index):
        : PlatformGamepad(index)
        , m_device(device)
    {
    }

=)

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:104
&gt; +    std::unique_ptr&lt;ManetteGamepad&gt; gamepad = makeUnique&lt;ManetteGamepad&gt;(device, index);

You could use “auto” for the variable type here, because it is clear
from the right side of the assignment which type it will have.

&gt; Source/cmake/FindManette.cmake:56
&gt; +pkg_check_modules(PC_MANETTE manette-0.2)

I would add the IMPORTED_TARGET flag here, and all lines from
from 58 to 71 will not be needed.

&gt; Source/cmake/FindManette.cmake:87
&gt; +endif ()

…and here use the PkgConfig::PC_MANETTE target:

    if (TARGET PkgConfig::PC_MANETTE AND NOT TARGET Manette::Manette)
        add_library(Manette::Manette INTERFACE IMPORTED GLOBAL)
        set_property(TARGET Manette::Manette INTERFACE_LINK_LIBRARIES PkgConfig::PC_MANETTE)
    endif ()

This is what we currently do in Source/cmake/FindGTK.cmake :)

&gt; Source/cmake/FindManette.cmake:91
&gt; +if (Manette_FOUND)

If the PkgConfig target is used, this if-block is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642646</commentid>
    <comment_count>15</comment_count>
      <attachid>396169</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-17 05:52:03 -0700</bug_when>
    <thetext>Comment on attachment 396169
Patch

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

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepad.h:38
&gt; +class ManetteGamepad : public PlatformGamepad {

We can mark the class final too.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:50
&gt; +    if (provider)

Can this really be nullptr? The provider is a singleton.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:56
&gt; +    if (provider)

Ditto.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:61
&gt; +    : m_shouldDispatchCallbacks(false)

This could be initialized in the header.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:66
&gt; +    g_signal_connect(G_OBJECT(m_monitor.get()), &quot;device-connected&quot;, G_CALLBACK(onDeviceConnected), this);
&gt; +    g_signal_connect(G_OBJECT(m_monitor.get()), &quot;device-disconnected&quot;, G_CALLBACK(onDeviceDisconnected), this);

No need to cast GObject for g_signal_connect

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:76
&gt; +    if (shouldOpenAndScheduleManager) {

We could early return instead.

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:166
&gt; +    auto i = m_gamepadVector.find(result.get());

i -&gt; index

&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.h:48
&gt; +    WEBCORE_EXPORT static ManetteGamepadProvider&amp; singleton();
&gt; +
&gt; +    WEBCORE_EXPORT void startMonitoringGamepads(GamepadProviderClient&amp;) final;
&gt; +    WEBCORE_EXPORT void stopMonitoringGamepads(GamepadProviderClient&amp;) final;

WEBCORE_EXPORT macros aren&apos;t needed for GTK port.

&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:46
&gt; +    if (WEBKIT_IS_WEB_VIEW(widget) &amp;&amp; gtk_widget_is_visible(widget))
&gt; +        return &amp;webkitWebViewGetPage(WEBKIT_WEB_VIEW(widget));

In case of being a WebView and not visible, I guess we want to return nullptr, not iterate the web view children, no?

&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:58
&gt; +    ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer));

What is this?

&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:62
&gt; +        if (!GTK_IS_WINDOW(iter-&gt;data))

WebCore::widgetIsOnscreenToplevelWindow()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643178</commentid>
    <comment_count>16</comment_count>
      <attachid>396169</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-19 03:29:46 -0700</bug_when>
    <thetext>Comment on attachment 396169
Patch

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

Thanks for your review! A new patch is coming.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepad.cpp:35
&gt;&gt; +    , m_device(adoptGRef(static_cast&lt;ManetteDevice*&gt;(g_object_ref(device))))
&gt; 
&gt; You don&apos;t need to use adopGRef() + g_object_ref() by here, you can pass the
&gt; pointer to the GRefPtr constructor and it will increase the reference count
&gt; automatically. The following should be enough:
&gt; 
&gt;     ManetteGamePad(ManetteDevice* device, unsigned index):
&gt;         : PlatformGamepad(index)
&gt;         , m_device(device)
&gt;     {
&gt;     }
&gt; 
&gt; =)

Good to know. Thanks.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepad.h:38
&gt;&gt; +class ManetteGamepad : public PlatformGamepad {
&gt; 
&gt; We can mark the class final too.

O.K.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:50
&gt;&gt; +    if (provider)
&gt; 
&gt; Can this really be nullptr? The provider is a singleton.

No. the if condition is removed.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:56
&gt;&gt; +    if (provider)
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:61
&gt;&gt; +    : m_shouldDispatchCallbacks(false)
&gt; 
&gt; This could be initialized in the header.

Moved to the header.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:66
&gt;&gt; +    g_signal_connect(G_OBJECT(m_monitor.get()), &quot;device-disconnected&quot;, G_CALLBACK(onDeviceDisconnected), this);
&gt; 
&gt; No need to cast GObject for g_signal_connect

G_OBJECT removed.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:76
&gt;&gt; +    if (shouldOpenAndScheduleManager) {
&gt; 
&gt; We could early return instead.

Done.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:104
&gt;&gt; +    std::unique_ptr&lt;ManetteGamepad&gt; gamepad = makeUnique&lt;ManetteGamepad&gt;(device, index);
&gt; 
&gt; You could use “auto” for the variable type here, because it is clear
&gt; from the right side of the assignment which type it will have.

O.K.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:166
&gt;&gt; +    auto i = m_gamepadVector.find(result.get());
&gt; 
&gt; i -&gt; index

Fixed.

&gt;&gt; Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.h:48
&gt;&gt; +    WEBCORE_EXPORT void stopMonitoringGamepads(GamepadProviderClient&amp;) final;
&gt; 
&gt; WEBCORE_EXPORT macros aren&apos;t needed for GTK port.

Removed.

&gt;&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:46
&gt;&gt; +        return &amp;webkitWebViewGetPage(WEBKIT_WEB_VIEW(widget));
&gt; 
&gt; In case of being a WebView and not visible, I guess we want to return nullptr, not iterate the web view children, no?

You are right. Let me change the return statement to &apos;return gtk_widget_is_visible(widget) ? &amp;webkitWebViewGetPage(WEBKIT_WEB_VIEW(widget)) : nullptr;&apos;

&gt;&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:58
&gt;&gt; +    ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer));
&gt; 
&gt; What is this?

That is a security check in process level for mac port but I blindly copied it here. Let&apos;s remove it.

&gt;&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:62
&gt;&gt; +        if (!GTK_IS_WINDOW(iter-&gt;data))
&gt; 
&gt; WebCore::widgetIsOnscreenToplevelWindow()

Great! Thanks.

&gt;&gt; Source/cmake/FindManette.cmake:56
&gt;&gt; +pkg_check_modules(PC_MANETTE manette-0.2)
&gt; 
&gt; I would add the IMPORTED_TARGET flag here, and all lines from
&gt; from 58 to 71 will not be needed.

Wow! I didn&apos;t know this macro. It folds many lines up. Thanks.

&gt;&gt; Source/cmake/FindManette.cmake:87
&gt;&gt; +endif ()
&gt; 
&gt; …and here use the PkgConfig::PC_MANETTE target:
&gt; 
&gt;     if (TARGET PkgConfig::PC_MANETTE AND NOT TARGET Manette::Manette)
&gt;         add_library(Manette::Manette INTERFACE IMPORTED GLOBAL)
&gt;         set_property(TARGET Manette::Manette INTERFACE_LINK_LIBRARIES PkgConfig::PC_MANETTE)
&gt;     endif ()
&gt; 
&gt; This is what we currently do in Source/cmake/FindGTK.cmake :)

Done.

&gt;&gt; Source/cmake/FindManette.cmake:91
&gt;&gt; +if (Manette_FOUND)
&gt; 
&gt; If the PkgConfig target is used, this if-block is not needed.

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643179</commentid>
    <comment_count>17</comment_count>
      <attachid>396900</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-19 03:35:16 -0700</bug_when>
    <thetext>Created attachment 396900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643180</commentid>
    <comment_count>18</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-19 03:39:02 -0700</bug_when>
    <thetext>@philn, could you bump up the version of libmanette to 0.2.4 for webkit flatpak sdk? https://ftp.gnome.org/pub/gnome/sources/libmanette/0.2/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643182</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-19 04:02:00 -0700</bug_when>
    <thetext>(In reply to ChangSeok Oh from comment #18)
&gt; @philn, could you bump up the version of libmanette to 0.2.4 for webkit
&gt; flatpak sdk? https://ftp.gnome.org/pub/gnome/sources/libmanette/0.2/

It&apos;s already in the SDK. Make sure you use the latest version:

$ webkit-flatpak --command=bash
[📦 org.webkit.Webkit WebKit]$ pkg-config --modversion manette-0.2
0.2.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643556</commentid>
    <comment_count>20</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-04-20 11:53:15 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #19)
&gt; (In reply to ChangSeok Oh from comment #18)
&gt; &gt; @philn, could you bump up the version of libmanette to 0.2.4 for webkit
&gt; &gt; flatpak sdk? https://ftp.gnome.org/pub/gnome/sources/libmanette/0.2/
&gt; 
&gt; It&apos;s already in the SDK. Make sure you use the latest version:
&gt; 
&gt; $ webkit-flatpak --command=bash
&gt; [📦 org.webkit.Webkit WebKit]$ pkg-config --modversion manette-0.2
&gt; 0.2.4

How fast your are! Thanks.

That said, the new patch is not guilty to the red window port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648191</commentid>
    <comment_count>21</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-05-01 21:23:59 -0700</bug_when>
    <thetext>Any comment or r+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654341</commentid>
    <comment_count>22</comment_count>
      <attachid>399815</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-05-19 23:07:13 -0700</bug_when>
    <thetext>Created attachment 399815
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654464</commentid>
    <comment_count>23</comment_count>
      <attachid>399815</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-20 08:58:11 -0700</bug_when>
    <thetext>Comment on attachment 399815
Patch

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

&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:31
&gt; +#include &quot;WebKitWebViewPrivate.h&quot;

Better use WebKitWebViewBase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654585</commentid>
    <comment_count>24</comment_count>
      <attachid>399815</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-05-20 12:42:43 -0700</bug_when>
    <thetext>Comment on attachment 399815
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp:31
&gt;&gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; 
&gt; Better use WebKitWebViewBase

You meant WebKitWebViewBasePrivate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654605</commentid>
    <comment_count>25</comment_count>
      <attachid>399882</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-05-20 13:12:01 -0700</bug_when>
    <thetext>Created attachment 399882
Patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654672</commentid>
    <comment_count>26</comment_count>
      <attachid>399882</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2020-05-20 15:27:41 -0700</bug_when>
    <thetext>Comment on attachment 399882
Patch to land

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654675</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 15:33:40 -0700</bug_when>
    <thetext>Committed r261965: &lt;https://trac.webkit.org/changeset/261965&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399882.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654677</commentid>
    <comment_count>28</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-20 15:34:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63466509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233594</attachid>
            <date>2014-06-23 03:22:25 -0700</date>
            <delta_ts>2020-03-31 21:33:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13250</size>
            <attacher name="Michal Debski">m.debski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiMmE2MjdkLi5jNmNmNmI4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAK
IDIwMTQtMDYtMjMgIE1pY2hhbCBEZWJza2kgIDxtLmRlYnNraUBzYW1zdW5nLmNvbT4KIAorICAg
ICAgICBbR1RLXSBHYW1lcGFkcyBwcm92aWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzODU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1RLIGdhbWVwYWQgd29ya3MuCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKworMjAxNC0wNi0yMyAg
TWljaGFsIERlYnNraSAgPG0uZGVic2tpQHNhbXN1bmcuY29tPgorCiAgICAgICAgIFtFRkxdIEdh
bWVwYWRkIHByb3ZpZGVyIGltcGxlbWVudGF0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlkMzc5MDcuLjBh
ZjJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNCBAQAogMjAxNC0wNi0yMyAgTWljaGFsIERl
YnNraSAgPG0uZGVic2tpQHNhbXN1bmcuY29tPgogCisgICAgICAgIFtHVEtdIEdhbWVwYWRzIHBy
b3ZpZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBUaGlzIGFkZHMgZ2FtZXBhZCBwcm92aWRl
ciBpbXBsZW1lbnRhdGlvbiBmb3IgR1RLIHBvcnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdvdWxkIHJlcXVpcmUg
cGh5c2ljYWwgZGV2aWNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1lcGFkc1Byb3Zp
ZGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OmF4ZXNDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlR3RrOjpheGVzQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBh
ZERldmljZUd0azo6YnV0dG9uc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZp
Y2VHdGs6OmJ1dHRvbnNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6R2Ft
ZXBhZHNHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OnJlZ2lzdGVyRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVyRGV2aWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdhbWVwYWRzUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9HYW1lcGFkc1Byb3ZpZGVyR3RrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZERldmljZUd0azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZp
Y2VHdGs6OmdldElkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OmdhbWVwYWRNYW5hZ2VyKToK
KworMjAxNC0wNi0yMyAgTWljaGFsIERlYnNraSAgPG0uZGVic2tpQHNhbXN1bmcuY29tPgorCiAg
ICAgICAgIFtFRkxdIEdhbWVwYWRzIHByb3ZpZGVyIGltcGxlbWVudGF0aW9uCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzUHJvdmlkZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzUHJvdmlkZXJHdGsuY3BwCmluZGV4
IGU0YTE2MmQuLjU2ODU1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HYW1lcGFkc1Byb3ZpZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR2FtZXBhZHNQcm92aWRlckd0ay5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKQEAgLTI1LDQyICsyNiwy
MyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoR0FNRVBBRF9ERVBSRUNB
VEVEKQorI2lmIEVOQUJMRShHQU1FUEFEKQogCi0jaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4
LmgiCi0jaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKLSNpbmNsdWRlICJHYW1lcGFkc1Byb3ZpZGVy
LmgiCisjaW5jbHVkZSAiR2FtZXBhZHNQcm92aWRlckd0ay5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPGdpby9ndW5peGlucHV0
c3RyZWFtLmg+CiAjaW5jbHVkZSA8Z3VkZXYvZ3VkZXYuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdhbWVwYWREZXZpY2VHdGsgOiBwdWJsaWMg
R2FtZXBhZERldmljZUxpbnV4IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxHYW1l
cGFkRGV2aWNlR3RrPiBjcmVhdGUoU3RyaW5nIGRldmljZUZpbGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VHdGsoZGV2aWNlRmlsZSkpOwotICAgIH0K
LSAgICB+R2FtZXBhZERldmljZUd0aygpOwotCi1wcml2YXRlOgotICAgIEdhbWVwYWREZXZpY2VH
dGsoU3RyaW5nIGRldmljZUZpbGUpOwotCi0gICAgc3RhdGljIGdib29sZWFuIHJlYWRDYWxsYmFj
ayhHT2JqZWN0KiBwb2xsYWJsZVN0cmVhbSwgZ3BvaW50ZXIgZGF0YSk7Ci0gICAgR1JlZlB0cjxH
SW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07Ci0gICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJj
ZTsKLX07Ci0KLUdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWREZXZpY2VHdGsoU3RyaW5nIGRldmlj
ZUZpbGUpCi0gICAgOiBHYW1lcGFkRGV2aWNlTGludXgoZGV2aWNlRmlsZSkKK0dhbWVwYWREZXZp
Y2VHdGs6OkdhbWVwYWREZXZpY2VHdGsoR2FtZXBhZHNNYW5hZ2VyKiBtYW5hZ2VyLCBTdHJpbmcg
ZGV2aWNlRmlsZSkKKyAgICA6IEdhbWVwYWREZXZpY2VMaW51eHtkZXZpY2VGaWxlfQorICAgICwg
bV9tYW5hZ2Vye21hbmFnZXJ9CiB7CiAgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk0LDMxICs3Niw0MiBAQCBnYm9vbGVhbiBHYW1lcGFkRGV2aWNl
R3RrOjpyZWFkQ2FsbGJhY2soR09iamVjdCogcG9sbGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEp
CiAKICAgICBBU1NFUlRfVU5VU0VEKGxlbiwgbGVuID09IHNpemVvZihldmVudCkpOwogICAgIGdh
bWVwYWREZXZpY2UtPnVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZ2FtZXBhZERldmlj
ZS0+Y29ubmVjdGVkKCkpIHsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9BWElT
KQorICAgICAgICAgICAgZ2FtZXBhZERldmljZS0+Z2FtZXBhZE1hbmFnZXIoKS0+Z2FtZXBhZEF4
aXNDaGFuZ2VkKGdhbWVwYWREZXZpY2UtPmdldElkKCksIGV2ZW50Lm51bWJlciwgZ2FtZXBhZERl
dmljZS0+YXhlc0RhdGEoKVtldmVudC5udW1iZXJdKTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQu
dHlwZSAmIEpTX0VWRU5UX0JVVFRPTikKKyAgICAgICAgICAgIGdhbWVwYWREZXZpY2UtPmdhbWVw
YWRNYW5hZ2VyKCktPmdhbWVwYWRCdXR0b25DaGFuZ2VkKGdhbWVwYWREZXZpY2UtPmdldElkKCks
IGV2ZW50Lm51bWJlciwgZ2FtZXBhZERldmljZS0+YnV0dG9uc0RhdGEoKVtldmVudC5udW1iZXJd
KTsKKyAgICB9CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLWNsYXNzIEdhbWVwYWRzR3RrIHsKLXB1
YmxpYzoKLSAgICBHYW1lcGFkc0d0ayh1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgdm9pZCByZWdp
c3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGV2aWNl
KFN0cmluZyBkZXZpY2VGaWxlKTsKK2NvbnN0IFN0cmluZyYgR2FtZXBhZERldmljZUd0azo6aWQo
KSBjb25zdAoreworICAgIHJldHVybiBHYW1lcGFkRGV2aWNlTGludXg6OmlkKCk7Cit9CiAKLSAg
ICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7Cit1bnNpZ25lZCBHYW1lcGFk
RGV2aWNlR3RrOjpheGVzQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBHYW1lcGFkRGV2aWNl
TGludXg6OmF4ZXNDb3VudCgpOworfQogCi1wcml2YXRlOgotICAgIH5HYW1lcGFkc0d0aygpOwot
ICAgIHN0YXRpYyB2b2lkIG9uVUV2ZW50Q2FsbGJhY2soR1VkZXZDbGllbnQqLCBnY2hhciogYWN0
aW9uLCBHVWRldkRldmljZSosIGdwb2ludGVyIGRhdGEpOwotICAgIHN0YXRpYyBnYm9vbGVhbiBp
c0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqKTsKK2NvbnN0IGRvdWJsZSogR2FtZXBhZERldmlj
ZUd0azo6YXhlc0FycmF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2FtZXBhZERldmljZUxpbnV4
OjpheGVzRGF0YSgpOworfQogCi0gICAgVmVjdG9yPE93blB0cjxHYW1lcGFkRGV2aWNlR3RrPiA+
IG1fc2xvdHM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVwYWREZXZpY2VHdGsqPiBtX2Rldmlj
ZU1hcDsKK3Vuc2lnbmVkIEdhbWVwYWREZXZpY2VHdGs6OmJ1dHRvbnNDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEdhbWVwYWREZXZpY2VMaW51eDo6YnV0dG9uc0NvdW50KCk7Cit9CiAKLSAg
ICBHUmVmUHRyPEdVZGV2Q2xpZW50PiBtX2d1ZGV2Q2xpZW50OwotfTsKK2NvbnN0IEdhbWVwYWRC
dXR0b246OkJ1dHRvblN0cnVjdCogR2FtZXBhZERldmljZUd0azo6YnV0dG9uc0FycmF5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gR2FtZXBhZERldmljZUxpbnV4OjpidXR0b25zRGF0YSgpOworfQog
Ci1HYW1lcGFkc0d0azo6R2FtZXBhZHNHdGsodW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9zbG90
cyhsZW5ndGgpCitHYW1lcGFkc0d0azo6R2FtZXBhZHNHdGsoR2FtZXBhZHNNYW5hZ2VyKiBtYW5h
Z2VyKQorICAgIDogR2FtZXBhZHNQcm92aWRlcnttYW5hZ2VyfQogewogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzdWJzeXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAgfTsKICAgICBtX2d1ZGV2Q2xpZW50
ID0gYWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpKTsKQEAgLTE0MywxNCAr
MTM2LDggQEAgdm9pZCBHYW1lcGFkc0d0azo6cmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZp
bGUpCiB7CiAgICAgTE9HKEdhbWVwYWQsICJHYW1lcGFkc0d0azo6cmVnaXN0ZXJEZXZpY2UgJXMi
LCBkZXZpY2VGaWxlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNv
bnRhaW5zKGRldmljZUZpbGUpKTsKLQotICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmICghbV9zbG90c1tpbmRl
eF0pIHsKLSAgICAgICAgICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmljZUd0azo6Y3Jl
YXRlKGRldmljZUZpbGUpOwotICAgICAgICAgICAgbV9kZXZpY2VNYXAuYWRkKGRldmljZUZpbGUs
IG1fc2xvdHNbaW5kZXhdLmdldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGF1dG8gaXQgPSBtX2RldmljZU1hcC5mYXN0QWRkKGRldmljZUZpbGUsIEdhbWVw
YWREZXZpY2VHdGs6OmNyZWF0ZShnYW1lcGFkTWFuYWdlcigpLCBkZXZpY2VGaWxlKSkuaXRlcmF0
b3I7CisgICAgaXQtPnZhbHVlLT5zZXRJZChnYW1lcGFkTWFuYWdlcigpLT5nYW1lcGFkQ29ubmVj
dGVkKCppdC0+dmFsdWUpKTsKIH0KIAogdm9pZCBHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmlj
ZShTdHJpbmcgZGV2aWNlRmlsZSkKQEAgLTE1OCwzOCArMTQ1LDkgQEAgdm9pZCBHYW1lcGFkc0d0
azo6dW5yZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSkKICAgICBMT0coR2FtZXBhZCwg
IkdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVyRGV2aWNlICVzIiwgZGV2aWNlRmlsZS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgQVNTRVJUKG1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKIAot
ICAgIEdhbWVwYWREZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSBtX2RldmljZU1hcC50YWtlKGRl
dmljZUZpbGUpOwotICAgIHNpemVfdCBpbmRleCA9IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNl
KTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotCi0gICAgbV9zbG90c1tpbmRleF0u
Y2xlYXIoKTsKLX0KLQotdm9pZCBHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBh
ZExpc3QqIC8qaW50byovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLS8vICoqKioqIEdh
bWVwYWQgaW50ZXJmYWNlIGNoYW5nZWQuICoqKioqCi0vLwotLy8gICAgQVNTRVJUKG1fc2xvdHMu
c2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsKLS8vCi0vLyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zbG90cy5zaXplKCk7IGkrKykgewotLy8gICAgICAgIGlmIChtX3Nsb3RzW2ldLmdl
dCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7Ci0vLyAgICAgICAgICAgIEdhbWVwYWRE
ZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSBtX3Nsb3RzW2ldLmdldCgpOwotLy8gICAgICAgICAg
ICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0oaSk7Ci0vLyAgICAgICAgICAg
IGlmICghZ2FtZXBhZCkKLS8vICAgICAgICAgICAgICAgIGdhbWVwYWQgPSBHYW1lcGFkOjpjcmVh
dGUoKTsKLS8vCi0vLyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOwotLy8gICAgICAgICAg
ICBnYW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsKLS8vICAgICAgICAgICAgZ2FtZXBh
ZC0+dGltZXN0YW1wKGdhbWVwYWREZXZpY2UtPnRpbWVzdGFtcCgpKTsKLS8vICAgICAgICAgICAg
Z2FtZXBhZC0+YXhlcyhnYW1lcGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERldmljZS0+
YXhlc0RhdGEoKSk7Ci0vLyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMoZ2FtZXBhZERldmlj
ZS0+YnV0dG9uc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNEYXRhKCkpOwotLy8KLS8v
ICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOwotLy8gICAgICAgIH0gZWxzZQotLy8g
ICAgICAgICAgICBpbnRvLT5zZXQoaSwgMCk7Ci0vLyAgICB9CisgICAgYXV0byBpdCA9IG1fZGV2
aWNlTWFwLmZpbmQoZGV2aWNlRmlsZSk7CisgICAgZ2FtZXBhZE1hbmFnZXIoKS0+Z2FtZXBhZERp
c2Nvbm5lY3RlZChpdC0+dmFsdWUtPmdldElkKCksICppdC0+dmFsdWUpOworICAgIG1fZGV2aWNl
TWFwLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgR2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2so
R1VkZXZDbGllbnQqLCBnY2hhciogYWN0aW9uLCBHVWRldkRldmljZSogZGV2aWNlLCBncG9pbnRl
ciBkYXRhKQpAQCAtMjE5LDE4ICsxNzcsMTEgQEAgZ2Jvb2xlYW4gR2FtZXBhZHNHdGs6OmlzR2Ft
ZXBhZERldmljZShHVWRldkRldmljZSogZGV2aWNlKQogICAgIHJldHVybiBnX3N0cl9oYXNfcHJl
Zml4KGRldmljZUZpbGUsICIvZGV2L2lucHV0L2pzIik7CiB9CiAKLXZvaWQgc2FtcGxlR2FtZXBh
ZHMoR2FtZXBhZExpc3QqIGludG8pCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKEdhbWVwYWRzR3RrLCBnYW1lcGFkc0d0aywgKGludG8tPmxlbmd0aCgpKSk7Ci0gICAgZ2Ft
ZXBhZHNHdGsudXBkYXRlR2FtZXBhZExpc3QoaW50byk7Ci19Ci0KLVBhc3NPd25QdHI8R2FtZXBh
ZHNQcm92aWRlcj4gY3JlYXRlR2FtZXBhZHNQcm92aWRlcihHYW1lcGFkc01hbmFnZXIqIC8qbWFu
YWdlciovKQorUGFzc093blB0cjxHYW1lcGFkc1Byb3ZpZGVyPiBjcmVhdGVHYW1lcGFkc1Byb3Zp
ZGVyKEdhbWVwYWRzTWFuYWdlciogbWFuYWdlcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZHNHdGso
bWFuYWdlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRF9ERVBSRUNBVEVEKQorI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzUHJvdmlkZXJHdGsuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc1Byb3ZpZGVyR3RrLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI2NzdhMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc1Byb3ZpZGVyR3RrLmgKQEAgLTAs
MCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRv
YmVyc2VrQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdhbWVwYWRzUHJv
dmlkZXJHdGtfaAorI2RlZmluZSBHYW1lcGFkc1Byb3ZpZGVyR3RrX2gKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisjaW5jbHVkZSAiR2Ft
ZXBhZHNNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR2FtZXBhZHNQcm92aWRlci5oIgorI2luY2x1ZGUg
PGdpby9ndW5peGlucHV0c3RyZWFtLmg+CisjaW5jbHVkZSA8Z3VkZXYvZ3VkZXYuaD4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
YW1lcGFkRGV2aWNlR3RrIDogcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCwgcHVibGljIEdhbWVw
YWREZXZpY2UgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdhbWVwYWRE
ZXZpY2VHdGs+IGNyZWF0ZShHYW1lcGFkc01hbmFnZXIqIG1hbmFnZXIsIFN0cmluZyBkZXZpY2VG
aWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R2FtZXBhZERldmlj
ZUd0az4obWFuYWdlciwgZGV2aWNlRmlsZSk7CisgICAgfQorICAgIEdhbWVwYWREZXZpY2VHdGso
R2FtZXBhZHNNYW5hZ2VyKiBtYW5hZ2VyLCBTdHJpbmcgZGV2aWNlRmlsZSk7CisgICAgfkdhbWVw
YWREZXZpY2VHdGsoKTsKKworICAgIHVuc2lnbmVkIGdldElkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQorICAgIHZvaWQgc2V0SWQodW5zaWduZWQgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAgR2Ft
ZXBhZHNNYW5hZ2VyKiBnYW1lcGFkTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlcjsg
fQorCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVk
IGF4ZXNDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGRvdWJsZSogYXhlc0FycmF5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgYnV0dG9uc0NvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgY29uc3QgR2FtZXBhZEJ1dHRvbjo6QnV0dG9uU3RydWN0KiBidXR0b25zQXJy
YXkoKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcmVh
ZENhbGxiYWNrKEdPYmplY3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKTsKKworICAg
IEdhbWVwYWRzTWFuYWdlciogbV9tYW5hZ2VyOworICAgIHVuc2lnbmVkIG1faWQ7CisgICAgR1Jl
ZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CisgICAgR1JlZlB0cjxHU291cmNlPiBt
X3NvdXJjZTsKK307CisKK2NsYXNzIEdhbWVwYWRzR3RrIDogcHVibGljIEdhbWVwYWRzUHJvdmlk
ZXIgeworcHVibGljOgorICAgIEdhbWVwYWRzR3RrKEdhbWVwYWRzTWFuYWdlciogbWFuYWdlcik7
CisgICAgfkdhbWVwYWRzR3RrKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2aWNlKFN0cmluZyBk
ZXZpY2VGaWxlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUp
OworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIG9uVUV2ZW50Q2FsbGJhY2soR1VkZXZDbGll
bnQqLCBnY2hhciogYWN0aW9uLCBHVWRldkRldmljZSosIGdwb2ludGVyIGRhdGEpOworICAgIHN0
YXRpYyBnYm9vbGVhbiBpc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqKTsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZXBhZERldmljZUd0az4+IG1fZGV2aWNlTWFw
OworCisgICAgR1JlZlB0cjxHVWRldkNsaWVudD4gbV9ndWRldkNsaWVudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYg
Ly8gR2FtZXBhZHNQcm92aWRlckd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGUxNGUyMmIu
LjQ3MzhjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zMyw3ICszMyw3IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FTkNSWVBURURfTUVESUEgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBP
RkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMVEVSUyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBP
TikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9HQU1FUEFEIE9GRikK
K1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9HQU1FUEFEIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCBP
RkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMgT0ZGKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395125</attachid>
            <date>2020-03-31 21:33:43 -0700</date>
            <delta_ts>2020-03-31 22:48:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200401003342.patch</filename>
            <type>text/plain</type>
            <size>38339</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTAzZTI1ZDg5MDM0
YjU2MDg1NGVkYjdiMDUxNTEzOWI5ZTBhMy4uNDgzZjg0ZjBlMDI1MTI0MGVlNTZkNzk5OWY1NTA5
NDE5YmQ5M2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAzLTMxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDMtMzEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiBtX3dyYXBwZXIgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxh
eS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDNjNDZlNDQ3YzFlNmQxMWE3YjI3NzEwMWMxYzY2ZDViYTBjOTRi
YWQuLjc0NGE1MmRjNTA0NmRiMmQyZGEwYzQzMWE1ZTMxYmM4ODc4MGJmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMjAtMDMtMzEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5l
Y3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0
aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0
ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBo
YW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNH
VEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8g
cmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5l
Y3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20g
dGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYWRkaXRpb25hbCBJUEMg
cGVybWlzc2lvbiBuZWVkZWQgYnkgU2VjdXJpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGExZjAwMGVjNzI2NThiZWJiZjJjODMzMjk4MDI1MjRkZmNiMTc1ZTQuLmQ0
NDE3YmYyNjIzODcwOWU0NzFiZTNhZTE0NzMwOTljMTYyYzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xNjIsNiArMTYyLDE4IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQp
CiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtNQU5FVFRF
X0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtNQU5FVFRFX0xJQlJBUklFU30KKyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVj
YTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4NjcwZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFn
ZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlx
dWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
R1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgz
MTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisK
KyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1v
bml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhjYjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1l
cGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRvcHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVE
ZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZlMzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRl
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisj
aW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1h
bmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFu
ZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9u
VmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhk
YmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4g
c2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMg
dm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRlTW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRl
dmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgaWYgKHByb3Zp
ZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0
YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURl
dmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBp
ZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNl
KTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigp
CisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9y
KG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlv
bkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9u
aXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVkIiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5l
Y3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdl
dCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVj
dGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9v
bCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKwor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3VsZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgICAgICBBU1NF
UlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25l
U2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFy
KCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVhcigpOworICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQo
IW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisKKyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+
KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0
KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBv
ZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQg
bm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3Bp
biBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVy
IHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBk
ZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBw
cmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3Rl
ZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0pOworfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBy
ZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4g
cmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNT
RVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRldmljZSBy
ZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBhIHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8vIFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBw
cmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9z
aG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
KnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWduZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIHJldHVybiBpbmRleDsKK30K
Kwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVk
KCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNldEluaXRpYWxDb25u
ZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3IpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50Owor
CitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFs
OworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygp
IGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0
dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAg
ICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8
TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBh
ZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIEdVbmlx
dWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRvcjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0
MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0
ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlH
YW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIy
M2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJ
R2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERh
dGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1
bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFO
RVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4
ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdlYlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RLX0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0
KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJr
aXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0
ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkq
IHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2Vi
UGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1l
cGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9y
IChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRP
VyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1
cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQ
cm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJN
YW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2FiMjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3
NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQTEFURk9STShHVEspCitXZWJQYWdlUHJveHkq
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRN
YW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzFiNzdiNzFiOTI4Mjk1Y2UwNWFjYjIyNzk0MWM3NWFmN2FmYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UKQEAgLTAsMCArMSw1MSBAQAorIyAt
IFRyeSB0byBmaW5kIGxpYm1hbmV0dGUuCisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQor
IworIyAgTUFORVRURV9JTkNMVURFX0RJUlMgLSB0aGUgbGlibWFuZXR0ZSBpbmNsdWRlIGRpcmVj
dG9yaWVzCisjICBNQU5FVFRFX0xJQlJBUklFUyAtIHRoZSBsaWJtYW5ldHRlIGxpYnJhcmllcy4K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNr
X21vZHVsZXMoUENfTUFORVRURSBtYW5ldHRlLTAuMikKKworZmluZF9wYXRoKE1BTkVUVEVfSU5D
TFVERV9ESVJTCisgICAgTkFNRVMgbGlibWFuZXR0ZS5oCisgICAgSElOVFMgJHtQQ19NQU5FVFRF
X0lOQ0xVREVESVJ9CisgICAgICAgICAgJHtQQ19NQU5FVFRFX0lOQ0xVREVfRElSU30KKykKKwor
ZmluZF9saWJyYXJ5KE1BTkVUVEVfTElCUkFSSUVTCisgICAgTkFNRVMgbWFuZXR0ZS0wLjIKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAgICR7UENfTUFORVRURV9MSUJS
QVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitm
aW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBN
QU5FVFRFX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNQU5FVFRFX0lOQ0xVREVfRElSUyBNQU5F
VFRFX0xJQlJBUklFUworKQorCittYXJrX2FzX2FkdmFuY2VkKE1BTkVUVEVfSU5DTFVERV9ESVJT
IE1BTkVUVEVfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA0ZjQwMzQ2N2Y3OTVm
MGY2Njg3MWQzZDkxNzFjZDM4MTljYTQ5OTViLi5jNzVkNzJkODA5YWIwOWZjMjMzMGNkNDU0ODI5
NjU4NzZmZDk0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTYzLDYgKzE2Myw3IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxP
QURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0FN
RVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKQEAgLTIzMCw2ICsyMzEsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAgICAgZW5k
aWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3BhY2thZ2Uo
TWFuZXR0ZSAwLjIuMyBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1BTkVUVEVfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9yIEVOQUJM
RV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9w
YWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNGEyNmNjZmJhNzcxZGI4NjU4
ZWE5ZmY3MDYxOTgzMGUzY2RmZTEuLjEyMjNmOTAzNTUwMzBjMDgyMmQ5ODI0ODNjNTQ0ZWYyZjYx
MDg2YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMC0wMy0zMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBwYXJ0aWN1
bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuMyB3aGljaCBpcyB0aGUgbGF0ZXN0IHZlcnNpb24u
IEJ1dCBpdCBoYXMKKyAgICAgICAgYSBjb21waWxhdGlvbiBpc3N1ZSBpbiBjKysgc28gd2UgbmVl
ZCB0byBwYXRjaCBpdCBiZWZvcmUgdXNlLiBUaGUgYXR0YWNoZWQgcGF0Y2gKKyAgICAgICAgaXMg
YWxyZWFkeSBpbiB0aGUgdXBzdHJlYW0uIE9uY2UgdGhlIG5leHQgcmVsZWFzZSB3aWxsIGNvbWUg
b3V0LCB3ZSBjYW4gcmVtb3ZlIGl0LgorICAgICAgICBJbiBhZGRpdGlvbiwgbGlibWFuZXR0ZSBp
cyBub3QgYXZhaWxhYmxlIGluIEZsYXRwYWsgYnVpbGQgZW52aXJvbm1lbnQgbm93CisgICAgICAg
IHNvIHdlIGFkZCBqaGJ1aWxkIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWxseSBidWlsZCBsaWJtYW5l
dHRlLiBIb3dldmVyLAorICAgICAgICB0aGF0IGNhbiBhbHNvIGJlIHJlbW92ZWQgb25jZSB0aGUg
d2Via2l0IGZsYXRwYWsgc2RrIGluY2x1ZGVzIG5leHQgcmVsZWFzZSBvZiBsaWJtYW5ldHRlLgor
CisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKyAgICAgICAgKiBndGsvcGF0Y2hlcy9t
YW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVudW1zLnBhdGNoOiBB
ZGRlZC4KKwogMjAyMC0wMy0zMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRGVsZXRlIGNvZGUgZm9yIHNlY3VyaXR5IEVXUyBmcm9tIG9sZCBFV1MgKGZv
bGxvdy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9v
bHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCA3ZmNmNzA2ZDU1YWNlODZhYzRkMzg1M2RjY2Zk
NjlmZmJhMzFhNGM4Li5jYThmY2Y2YWI5MGM0ZjUwOTFhOWU2ODI3Mzg1NDY3ODMxMzJiNmIyIDEw
MDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1
aWxkLm1vZHVsZXMKQEAgLTI5LDYgKzI5LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0ibGlic2Vj
cmV0Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJsaWJnY3J5cHQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ibWFuZXR0ZSIvPgogICAg
ICAgPGRlcCBwYWNrYWdlPSJvcGVuanBlZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJ3cGViYWNr
ZW5kLWZkbyIvPgogICAgICAgPGlmIGNvbmRpdGlvbi1zZXQ9ImxpbnV4Ij4KQEAgLTQ0NSw2ICs0
NDYsMTggQEAKICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9hdXRvdG9vbHM+CiAKKyAgPG1lc29u
IGlkPSJtYW5ldHRlIj4KKyAgICA8YnJhbmNoIHJlcG89ImZ0cC5nbm9tZS5vcmciCisgICAgICAg
ICAgICBtb2R1bGU9Ii9wdWIvZ25vbWUvc291cmNlcy9saWJtYW5ldHRlLzAuMi9saWJtYW5ldHRl
LTAuMi4zLnRhci54eiIKKyAgICAgICAgICAgIHZlcnNpb249IjAuMi4zIgorICAgICAgICAgICAg
aGFzaD0ic2hhMjU2OmMwZjA2NTE1NWFlNjRjZWRhN2E4ODA1MzY4Nzg2ODVhZWVlZTRjNTVmZDE3
YWFlYThlZjBiYzJmYWMzY2IwZmYiPgorICAgICAgPHBhdGNoIGZpbGU9Im1hbmV0dGUtZXZlbnQt
QXZvaWQtZm9yd2FyZC1kZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2giIHN0cmlwPSIxIi8+Cisg
ICAgPC9icmFuY2g+CisgICAgPGRlcGVuZGVuY2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0iZ2xp
YiIvPgorICAgIDwvZGVwZW5kZW5jaWVzPgorICA8L21lc29uPgorCiAgIDxjbWFrZSBpZD0ib3Bl
bmpwZWciPgogICAgIDxicmFuY2ggcmVwbz0iZ2l0aHViLXRhcmJhbGwiCiAgICAgICAgICAgICBt
b2R1bGU9InVjbG91dmFpbi9vcGVuanBlZy9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9wYXRjaGVzL21hbmV0dGUtZXZlbnQtQXZvaWQtZm9yd2FyZC1k
ZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2ggYi9Ub29scy9ndGsvcGF0Y2hlcy9tYW5ldHRlLWV2
ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVudW1zLnBhdGNoCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQzZjYzYWIzNjA0NDk0NDJmNTA2NmYzOWQ2ZWI1MGE3M2UwMGYyZDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9ndGsvcGF0Y2hlcy9tYW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFy
YXRpb24tZm9yLWVudW1zLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gY2YyOWNiZmY2NGVh
OGE3YTgzOWFjNTM4ODQ2OGZkMDU4NmI5NGQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy
b206IENoYW5nU2VvayBPaCA8Y2hhbmdzZW9rQGdhdGVjaC5lZHU+CitEYXRlOiBUaHUsIDE5IE1h
ciAyMDIwIDA3OjQ1OjI5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGV2ZW50OiBBdm9pZCBmb3J3
YXJkIGRlY2xhcmF0aW9uIGZvciBlbnVtcworCitGaXggYSBjb21waWxhdGlvbiBlcnJvciB3aXRo
IEMrKy4KKworRml4ZXMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2FwbGF6YXMvbGlibWFuZXR0
ZS9pc3N1ZXMvMTQKKy0tLQorIHNyYy9tYW5ldHRlLWV2ZW50LmggICB8IDExICsrKysrLS0tLS0t
Cisgc3JjL21hbmV0dGUtbWFwcGluZy5oIHwgMTAgKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdl
ZCwgOSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9t
YW5ldHRlLWV2ZW50LmggYi9zcmMvbWFuZXR0ZS1ldmVudC5oCitpbmRleCA0ZGRiYWVmLi5kZWRk
OWIyIDEwMDY0NAorLS0tIGEvc3JjL21hbmV0dGUtZXZlbnQuaAorKysrIGIvc3JjL21hbmV0dGUt
ZXZlbnQuaAorQEAgLTMzLDEwICszMyw2IEBAIEdfQkVHSU5fREVDTFMKKyAjZGVmaW5lIE1BTkVU
VEVfVFlQRV9FVkVOVF9UWVBFIChtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKCkpCisgCisg
dHlwZWRlZiB1bmlvbiAgX01hbmV0dGVFdmVudCBNYW5ldHRlRXZlbnQ7CistdHlwZWRlZiBlbnVt
IF9NYW5ldHRlRXZlbnRUeXBlIE1hbmV0dGVFdmVudFR5cGU7CistCistR1R5cGUgbWFuZXR0ZV9l
dmVudF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworLUdUeXBlIG1hbmV0dGVfZXZlbnRf
dHlwZV9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworIAorIC8qKgorICAqIE1hbmV0dGVF
dmVudFR5cGU6CitAQCAtNDgsMTQgKzQ0LDE3IEBAIEdUeXBlIG1hbmV0dGVfZXZlbnRfdHlwZV9n
ZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworICAqCisgICogU3BlY2lmaWVzIHRoZSB0eXBl
IG9mIHRoZSBldmVudC4KKyAgKi8KKy1lbnVtIF9NYW5ldHRlRXZlbnRUeXBlIHsKKyt0eXBlZGVm
IGVudW0geworICAgTUFORVRURV9FVkVOVF9OT1RISU5HID0gLTEsCisgICBNQU5FVFRFX0VWRU5U
X0JVVFRPTl9QUkVTUyA9IDAsCisgICBNQU5FVFRFX0VWRU5UX0JVVFRPTl9SRUxFQVNFID0gMSwK
KyAgIE1BTkVUVEVfRVZFTlRfQUJTT0xVVEUgPSAyLAorICAgTUFORVRURV9FVkVOVF9IQVQgPSAz
LAorICAgTUFORVRURV9MQVNUX0VWRU5ULAorLX07CisrfSBNYW5ldHRlRXZlbnRUeXBlOworKwor
K0dUeXBlIG1hbmV0dGVfZXZlbnRfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKytHVHlw
ZSBtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKyAKKyBN
YW5ldHRlRXZlbnQgKm1hbmV0dGVfZXZlbnRfY29weSAoY29uc3QgTWFuZXR0ZUV2ZW50ICpzZWxm
KTsKKyB2b2lkIG1hbmV0dGVfZXZlbnRfZnJlZSAoTWFuZXR0ZUV2ZW50ICpzZWxmKTsKK2RpZmYg
LS1naXQgYS9zcmMvbWFuZXR0ZS1tYXBwaW5nLmggYi9zcmMvbWFuZXR0ZS1tYXBwaW5nLmgKK2lu
ZGV4IGI2YzJjNWYuLjUxN2UxY2QgMTAwNjQ0CistLS0gYS9zcmMvbWFuZXR0ZS1tYXBwaW5nLmgK
KysrKyBiL3NyYy9tYW5ldHRlLW1hcHBpbmcuaAorQEAgLTMyLDIxICszMiwxOSBAQCBHX0JFR0lO
X0RFQ0xTCisgCisgR19ERUNMQVJFX0ZJTkFMX1RZUEUgKE1hbmV0dGVNYXBwaW5nLCBtYW5ldHRl
X21hcHBpbmcsIE1BTkVUVEUsIE1BUFBJTkcsIEdPYmplY3QpCisgCistdHlwZWRlZiBlbnVtIF9N
YW5ldHRlTWFwcGluZ0lucHV0VHlwZSBNYW5ldHRlTWFwcGluZ0lucHV0VHlwZTsKKy10eXBlZGVm
IGVudW0gX01hbmV0dGVNYXBwaW5nUmFuZ2UgTWFuZXR0ZU1hcHBpbmdSYW5nZTsKKyB0eXBlZGVm
IHN0cnVjdCBfTWFuZXR0ZU1hcHBpbmdCaW5kaW5nIE1hbmV0dGVNYXBwaW5nQmluZGluZzsKKyAK
Ky1lbnVtIF9NYW5ldHRlTWFwcGluZ0lucHV0VHlwZSB7CisrdHlwZWRlZiBlbnVtIHsKKyAgIE1B
TkVUVEVfTUFQUElOR19JTlBVVF9UWVBFX0FYSVMsCisgICBNQU5FVFRFX01BUFBJTkdfSU5QVVRf
VFlQRV9CVVRUT04sCisgICBNQU5FVFRFX01BUFBJTkdfSU5QVVRfVFlQRV9IQVQsCistfTsKKyt9
IE1hbmV0dGVNYXBwaW5nSW5wdXRUeXBlOworIAorLWVudW0gX01hbmV0dGVNYXBwaW5nUmFuZ2Ug
eworK3R5cGVkZWYgZW51bSB7CisgICBNQU5FVFRFX01BUFBJTkdfUkFOR0VfTkVHQVRJVkUgPSAt
MSwKKyAgIE1BTkVUVEVfTUFQUElOR19SQU5HRV9GVUxMID0gMCwKKyAgIE1BTkVUVEVfTUFQUElO
R19SQU5HRV9QT1NJVElWRSA9IDEsCistfTsKKyt9IE1hbmV0dGVNYXBwaW5nUmFuZ2U7CisgCisg
c3RydWN0IF9NYW5ldHRlTWFwcGluZ0JpbmRpbmcgeworICAgc3RydWN0IHsKKy0tIAorMi4yNS4x
CisKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3OTRkZGExOThhYzMw
YTNhYmFkNzYwMWFhMTk4MTc4ODFhMWIyMzA1Li5kNmZlNjQwYzU0ZTBmMjZmNzUyY2FmYTAxNTI5
NjM3NmE5ZTA2OGQ2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMjAtMDMtMzEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3Rl
ZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0aWFs
IEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwK
KyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBoYW5k
bGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9GaW5kTWFuZXR0ZS5jbWFrZTogQWRkZWQgdG8gZGV0ZWN0IGxpYm1hbmV0dGUgaGVhZGVycyBh
bmQgbGlicyBpbnN0YWxsZWQgaW4gaG9zdCBzeXN0ZW0uCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2U6IEFkZGVkIGEgcHJpdmF0ZSBmbGFnLCBFTkFCTEVfR0FNRVBBRC4K
KyAgICAgICAgICBPbmNlIGxpYm1hbmV0dGUgaXMgZm91bmQsIHdlIGV4cG9zZSBhbm90aGVyIGJ1
aWxkIGZsYWcsIFVTRV9NQU5FVFRFIGZvciBvdGhlciBwb3J0cy4KKwogMjAyMC0wMy0zMCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQ2FuJ3Qg
Y3JlYXRlIFdlYkdMIGNvbnRleHQgYWZ0ZXIgcjI1OTEzOQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395133</attachid>
            <date>2020-03-31 22:48:50 -0700</date>
            <delta_ts>2020-04-01 01:50:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200401014849.patch</filename>
            <type>text/plain</type>
            <size>39256</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTAzZTI1ZDg5MDM0
YjU2MDg1NGVkYjdiMDUxNTEzOWI5ZTBhMy4uNDgzZjg0ZjBlMDI1MTI0MGVlNTZkNzk5OWY1NTA5
NDE5YmQ5M2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAzLTMxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDMtMzEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiBtX3dyYXBwZXIgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxh
eS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDNjNDZlNDQ3YzFlNmQxMWE3YjI3NzEwMWMxYzY2ZDViYTBjOTRi
YWQuLjc0NGE1MmRjNTA0NmRiMmQyZGEwYzQzMWE1ZTMxYmM4ODc4MGJmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMjAtMDMtMzEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5l
Y3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0
aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0
ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBo
YW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNH
VEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8g
cmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5l
Y3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20g
dGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYWRkaXRpb25hbCBJUEMg
cGVybWlzc2lvbiBuZWVkZWQgYnkgU2VjdXJpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGExZjAwMGVjNzI2NThiZWJiZjJjODMzMjk4MDI1MjRkZmNiMTc1ZTQuLmQ0
NDE3YmYyNjIzODcwOWU0NzFiZTNhZTE0NzMwOTljMTYyYzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xNjIsNiArMTYyLDE4IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQp
CiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtNQU5FVFRF
X0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtNQU5FVFRFX0xJQlJBUklFU30KKyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVj
YTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4NjcwZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFn
ZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlx
dWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
R1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgz
MTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisK
KyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1v
bml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhjYjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1l
cGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRvcHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVE
ZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZlMzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRl
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisj
aW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1h
bmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFu
ZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9u
VmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhk
YmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4g
c2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMg
dm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRlTW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRl
dmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgaWYgKHByb3Zp
ZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0
YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURl
dmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBp
ZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNl
KTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigp
CisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9y
KG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlv
bkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9u
aXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVkIiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5l
Y3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdl
dCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVj
dGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9v
bCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKwor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3VsZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgICAgICBBU1NF
UlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25l
U2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFy
KCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVhcigpOworICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQo
IW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisKKyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+
KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0
KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBv
ZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQg
bm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3Bp
biBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVy
IHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBk
ZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBw
cmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3Rl
ZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0pOworfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBy
ZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4g
cmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNT
RVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRldmljZSBy
ZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBhIHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8vIFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBw
cmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9z
aG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
KnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWduZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIHJldHVybiBpbmRleDsKK30K
Kwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVk
KCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNldEluaXRpYWxDb25u
ZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3IpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50Owor
CitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFs
OworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygp
IGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0
dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAg
ICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8
TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBh
ZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIEdVbmlx
dWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRvcjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0
MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0
ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlH
YW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIy
M2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJ
R2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERh
dGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1
bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFO
RVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4
ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdlYlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RLX0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0
KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJr
aXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0
ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkq
IHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2Vi
UGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1l
cGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9y
IChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRP
VyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1
cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQ
cm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJN
YW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2FiMjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3
NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQTEFURk9STShHVEspCitXZWJQYWdlUHJveHkq
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRN
YW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzFiNzdiNzFiOTI4Mjk1Y2UwNWFjYjIyNzk0MWM3NWFmN2FmYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UKQEAgLTAsMCArMSw1MSBAQAorIyAt
IFRyeSB0byBmaW5kIGxpYm1hbmV0dGUuCisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQor
IworIyAgTUFORVRURV9JTkNMVURFX0RJUlMgLSB0aGUgbGlibWFuZXR0ZSBpbmNsdWRlIGRpcmVj
dG9yaWVzCisjICBNQU5FVFRFX0xJQlJBUklFUyAtIHRoZSBsaWJtYW5ldHRlIGxpYnJhcmllcy4K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNr
X21vZHVsZXMoUENfTUFORVRURSBtYW5ldHRlLTAuMikKKworZmluZF9wYXRoKE1BTkVUVEVfSU5D
TFVERV9ESVJTCisgICAgTkFNRVMgbGlibWFuZXR0ZS5oCisgICAgSElOVFMgJHtQQ19NQU5FVFRF
X0lOQ0xVREVESVJ9CisgICAgICAgICAgJHtQQ19NQU5FVFRFX0lOQ0xVREVfRElSU30KKykKKwor
ZmluZF9saWJyYXJ5KE1BTkVUVEVfTElCUkFSSUVTCisgICAgTkFNRVMgbWFuZXR0ZS0wLjIKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAgICR7UENfTUFORVRURV9MSUJS
QVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitm
aW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBN
QU5FVFRFX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNQU5FVFRFX0lOQ0xVREVfRElSUyBNQU5F
VFRFX0xJQlJBUklFUworKQorCittYXJrX2FzX2FkdmFuY2VkKE1BTkVUVEVfSU5DTFVERV9ESVJT
IE1BTkVUVEVfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA0ZjQwMzQ2N2Y3OTVm
MGY2Njg3MWQzZDkxNzFjZDM4MTljYTQ5OTViLi5jNzVkNzJkODA5YWIwOWZjMjMzMGNkNDU0ODI5
NjU4NzZmZDk0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTYzLDYgKzE2Myw3IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxP
QURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0FN
RVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKQEAgLTIzMCw2ICsyMzEsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAgICAgZW5k
aWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3BhY2thZ2Uo
TWFuZXR0ZSAwLjIuMyBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1BTkVUVEVfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9yIEVOQUJM
RV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9w
YWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNGEyNmNjZmJhNzcxZGI4NjU4
ZWE5ZmY3MDYxOTgzMGUzY2RmZTEuLjgyNWQ4ZTI0YjFhZTQ4NzQ5MTcyOTg3NTk4NTJlYTFiNmRh
M2VlYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAyMC0wMy0zMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBwYXJ0aWN1
bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuMyB3aGljaCBpcyB0aGUgbGF0ZXN0IHZlcnNpb24u
IEJ1dCBpdCBoYXMKKyAgICAgICAgYSBjb21waWxhdGlvbiBpc3N1ZSBpbiBjKysgc28gd2UgbmVl
ZCB0byBwYXRjaCBpdCBiZWZvcmUgdXNlLiBUaGUgYXR0YWNoZWQgcGF0Y2gKKyAgICAgICAgaXMg
YWxyZWFkeSBpbiB0aGUgdXBzdHJlYW0uIE9uY2UgdGhlIG5leHQgcmVsZWFzZSB3aWxsIGNvbWUg
b3V0LCB3ZSBjYW4gcmVtb3ZlIGl0LgorICAgICAgICBJbiBhZGRpdGlvbiwgbGlibWFuZXR0ZSBp
cyBub3QgYXZhaWxhYmxlIGluIEZsYXRwYWsgYnVpbGQgZW52aXJvbm1lbnQgbm93CisgICAgICAg
IHNvIHdlIGFkZCBqaGJ1aWxkIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWxseSBidWlsZCBsaWJtYW5l
dHRlLiBIb3dldmVyLAorICAgICAgICB0aGF0IGNhbiBhbHNvIGJlIHJlbW92ZWQgb25jZSB0aGUg
d2Via2l0IGZsYXRwYWsgc2RrIGluY2x1ZGVzIG5leHQgcmVsZWFzZSBvZiBsaWJtYW5ldHRlLgor
CisgICAgICAgICogZ3RrL2luc3RhbGwtZGVwZW5kZW5jaWVzOiBBZGQgdmFsYQorICAgICAgICAq
IGd0ay9qaGJ1aWxkLm1vZHVsZXM6CisgICAgICAgICogZ3RrL3BhdGNoZXMvbWFuZXR0ZS1ldmVu
dC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaDogQWRkZWQuCisKIDIw
MjAtMDMtMzEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IERlbGV0ZSBjb2RlIGZvciBzZWN1cml0eSBFV1MgZnJvbSBvbGQgRVdTIChmb2xsb3ctdXAgZml4
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2luc3RhbGwtZGVwZW5kZW5jaWVzIGIvVG9vbHMvZ3Rr
L2luc3RhbGwtZGVwZW5kZW5jaWVzCmluZGV4IDA0NjE5NmFiMDVmMzhkMGY3YmU4YWE5ZjkwNzU0
OTQzOGNlNzMzYjMuLjIyODZhZGM1YWU3ZTFjMTY3NDczNTYzMTdlMGJlZGM5ZDcxNmIzMmIgMTAw
NzU1Ci0tLSBhL1Rvb2xzL2d0ay9pbnN0YWxsLWRlcGVuZGVuY2llcworKysgYi9Ub29scy9ndGsv
aW5zdGFsbC1kZXBlbmRlbmNpZXMKQEAgLTE1MCw2ICsxNTAsNyBAQCBmdW5jdGlvbiBpbnN0YWxs
RGVwZW5kZW5jaWVzV2l0aEFwdCB7CiAgICAgICAgIG5pbmphLWJ1aWxkIFwKICAgICAgICAgcGF0
Y2ggXAogICAgICAgICBydWJ5IFwKKyAgICAgICAgdmFsYWMgXAogICAgICAgICB4Zm9udHMtdXRp
bHMiCiAKICAgICAjIFRoZXNlIGFyZSBkZXBlbmRlbmNpZXMgbmVjZXNzYXJ5IGZvciBydW5uaW5n
IHRlc3RzLgpAQCAtMzI5LDYgKzMzMCw3IEBAIGZ1bmN0aW9uIGluc3RhbGxEZXBlbmRlbmNpZXNX
aXRoUGFjbWFuIHsKICAgICAgICAgcnVieSBcCiAgICAgICAgIHV0aWwtbGludXggXAogICAgICAg
ICB4b3JnLWZvbnQtdXRpbHMgXAorICAgICAgICB2YWxhIFwKICAgICAgICAgd2F5bGFuZCBcCiAg
ICAgICAgIHdvZmYyIgogCkBAIC01MDQsNiArNTA2LDcgQEAgZnVuY3Rpb24gaW5zdGFsbERlcGVu
ZGVuY2llc1dpdGhEbmYgewogICAgICAgICBzcWxpdGUtZGV2ZWwgXAogICAgICAgICBzeXN0ZW1k
LWRldmVsIFwKICAgICAgICAgdXBvd2VyLWRldmVsIFwKKyAgICAgICAgdmFsYSBcCiAgICAgICAg
IHdvZmYyLWRldmVsIgogCiAgICAgIyBUaGVzZSBhcmUgZGVwZW5kZW5jaWVzIG5lY2Vzc2FyeSBm
b3IgcnVubmluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMg
Yi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCmluZGV4IDdmY2Y3MDZkNTVhY2U4NmFjNGQzODUz
ZGNjZmQ2OWZmYmEzMWE0YzguLmNhOGZjZjZhYjkwYzRmNTA5MWE5ZTY4MjczODU0Njc4MzEzMmI2
YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZ3Rr
L2poYnVpbGQubW9kdWxlcwpAQCAtMjksNiArMjksNyBAQAogICAgICAgPGRlcCBwYWNrYWdlPSJs
aWJzZWNyZXQiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGliZ3BnLWVycm9yIi8+CiAgICAgICA8
ZGVwIHBhY2thZ2U9ImxpYmdjcnlwdCIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJtYW5ldHRlIi8+
CiAgICAgICA8ZGVwIHBhY2thZ2U9Im9wZW5qcGVnIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9Indw
ZWJhY2tlbmQtZmRvIi8+CiAgICAgICA8aWYgY29uZGl0aW9uLXNldD0ibGludXgiPgpAQCAtNDQ1
LDYgKzQ0NiwxOCBAQAogICAgIDwvZGVwZW5kZW5jaWVzPgogICA8L2F1dG90b29scz4KIAorICA8
bWVzb24gaWQ9Im1hbmV0dGUiPgorICAgIDxicmFuY2ggcmVwbz0iZnRwLmdub21lLm9yZyIKKyAg
ICAgICAgICAgIG1vZHVsZT0iL3B1Yi9nbm9tZS9zb3VyY2VzL2xpYm1hbmV0dGUvMC4yL2xpYm1h
bmV0dGUtMC4yLjMudGFyLnh6IgorICAgICAgICAgICAgdmVyc2lvbj0iMC4yLjMiCisgICAgICAg
ICAgICBoYXNoPSJzaGEyNTY6YzBmMDY1MTU1YWU2NGNlZGE3YTg4MDUzNjg3ODY4NWFlZWVlNGM1
NWZkMTdhYWVhOGVmMGJjMmZhYzNjYjBmZiI+CisgICAgICA8cGF0Y2ggZmlsZT0ibWFuZXR0ZS1l
dmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaCIgc3RyaXA9IjEi
Lz4KKyAgICA8L2JyYW5jaD4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgPGRlcCBwYWNrYWdl
PSJnbGliIi8+CisgICAgPC9kZXBlbmRlbmNpZXM+CisgIDwvbWVzb24+CisKICAgPGNtYWtlIGlk
PSJvcGVuanBlZyI+CiAgICAgPGJyYW5jaCByZXBvPSJnaXRodWItdGFyYmFsbCIKICAgICAgICAg
ICAgIG1vZHVsZT0idWNsb3V2YWluL29wZW5qcGVnL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6
IgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3
YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVzL21hbmV0
dGUtZXZlbnQtQXZvaWQtZm9yd2FyZC1kZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2gKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDNmNjNhYjM2MDQ0OTQ0MmY1MDY2ZjM5ZDZlYjUwYTczZTAwZjJkOQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL2d0ay9wYXRjaGVzL21hbmV0dGUtZXZlbnQtQXZvaWQtZm9yd2FyZC1k
ZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSBjZjI5Y2Jm
ZjY0ZWE4YTdhODM5YWM1Mzg4NDY4ZmQwNTg2Yjk0ZDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw
MQorRnJvbTogQ2hhbmdTZW9rIE9oIDxjaGFuZ3Nlb2tAZ2F0ZWNoLmVkdT4KK0RhdGU6IFRodSwg
MTkgTWFyIDIwMjAgMDc6NDU6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXZlbnQ6IEF2b2lk
IGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIGVudW1zCisKK0ZpeCBhIGNvbXBpbGF0aW9uIGVycm9y
IHdpdGggQysrLgorCitGaXhlcyBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvYXBsYXphcy9saWJt
YW5ldHRlL2lzc3Vlcy8xNAorLS0tCisgc3JjL21hbmV0dGUtZXZlbnQuaCAgIHwgMTEgKysrKyst
LS0tLS0KKyBzcmMvbWFuZXR0ZS1tYXBwaW5nLmggfCAxMCArKysrLS0tLS0tCisgMiBmaWxlcyBj
aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv
c3JjL21hbmV0dGUtZXZlbnQuaCBiL3NyYy9tYW5ldHRlLWV2ZW50LmgKK2luZGV4IDRkZGJhZWYu
LmRlZGQ5YjIgMTAwNjQ0CistLS0gYS9zcmMvbWFuZXR0ZS1ldmVudC5oCisrKysgYi9zcmMvbWFu
ZXR0ZS1ldmVudC5oCitAQCAtMzMsMTAgKzMzLDYgQEAgR19CRUdJTl9ERUNMUworICNkZWZpbmUg
TUFORVRURV9UWVBFX0VWRU5UX1RZUEUgKG1hbmV0dGVfZXZlbnRfdHlwZV9nZXRfdHlwZSAoKSkK
KyAKKyB0eXBlZGVmIHVuaW9uICBfTWFuZXR0ZUV2ZW50IE1hbmV0dGVFdmVudDsKKy10eXBlZGVm
IGVudW0gX01hbmV0dGVFdmVudFR5cGUgTWFuZXR0ZUV2ZW50VHlwZTsKKy0KKy1HVHlwZSBtYW5l
dHRlX2V2ZW50X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CistR1R5cGUgbWFuZXR0ZV9l
dmVudF90eXBlX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisgCisgLyoqCisgICogTWFu
ZXR0ZUV2ZW50VHlwZToKK0BAIC00OCwxNCArNDQsMTcgQEAgR1R5cGUgbWFuZXR0ZV9ldmVudF90
eXBlX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisgICoKKyAgKiBTcGVjaWZpZXMgdGhl
IHR5cGUgb2YgdGhlIGV2ZW50LgorICAqLworLWVudW0gX01hbmV0dGVFdmVudFR5cGUgeworK3R5
cGVkZWYgZW51bSB7CisgICBNQU5FVFRFX0VWRU5UX05PVEhJTkcgPSAtMSwKKyAgIE1BTkVUVEVf
RVZFTlRfQlVUVE9OX1BSRVNTID0gMCwKKyAgIE1BTkVUVEVfRVZFTlRfQlVUVE9OX1JFTEVBU0Ug
PSAxLAorICAgTUFORVRURV9FVkVOVF9BQlNPTFVURSA9IDIsCisgICBNQU5FVFRFX0VWRU5UX0hB
VCA9IDMsCisgICBNQU5FVFRFX0xBU1RfRVZFTlQsCistfTsKKyt9IE1hbmV0dGVFdmVudFR5cGU7
CisrCisrR1R5cGUgbWFuZXR0ZV9ldmVudF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOwor
K0dUeXBlIG1hbmV0dGVfZXZlbnRfdHlwZV9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOwor
IAorIE1hbmV0dGVFdmVudCAqbWFuZXR0ZV9ldmVudF9jb3B5IChjb25zdCBNYW5ldHRlRXZlbnQg
KnNlbGYpOworIHZvaWQgbWFuZXR0ZV9ldmVudF9mcmVlIChNYW5ldHRlRXZlbnQgKnNlbGYpOwor
ZGlmZiAtLWdpdCBhL3NyYy9tYW5ldHRlLW1hcHBpbmcuaCBiL3NyYy9tYW5ldHRlLW1hcHBpbmcu
aAoraW5kZXggYjZjMmM1Zi4uNTE3ZTFjZCAxMDA2NDQKKy0tLSBhL3NyYy9tYW5ldHRlLW1hcHBp
bmcuaAorKysrIGIvc3JjL21hbmV0dGUtbWFwcGluZy5oCitAQCAtMzIsMjEgKzMyLDE5IEBAIEdf
QkVHSU5fREVDTFMKKyAKKyBHX0RFQ0xBUkVfRklOQUxfVFlQRSAoTWFuZXR0ZU1hcHBpbmcsIG1h
bmV0dGVfbWFwcGluZywgTUFORVRURSwgTUFQUElORywgR09iamVjdCkKKyAKKy10eXBlZGVmIGVu
dW0gX01hbmV0dGVNYXBwaW5nSW5wdXRUeXBlIE1hbmV0dGVNYXBwaW5nSW5wdXRUeXBlOworLXR5
cGVkZWYgZW51bSBfTWFuZXR0ZU1hcHBpbmdSYW5nZSBNYW5ldHRlTWFwcGluZ1JhbmdlOworIHR5
cGVkZWYgc3RydWN0IF9NYW5ldHRlTWFwcGluZ0JpbmRpbmcgTWFuZXR0ZU1hcHBpbmdCaW5kaW5n
OworIAorLWVudW0gX01hbmV0dGVNYXBwaW5nSW5wdXRUeXBlIHsKKyt0eXBlZGVmIGVudW0gewor
ICAgTUFORVRURV9NQVBQSU5HX0lOUFVUX1RZUEVfQVhJUywKKyAgIE1BTkVUVEVfTUFQUElOR19J
TlBVVF9UWVBFX0JVVFRPTiwKKyAgIE1BTkVUVEVfTUFQUElOR19JTlBVVF9UWVBFX0hBVCwKKy19
OworK30gTWFuZXR0ZU1hcHBpbmdJbnB1dFR5cGU7CisgCistZW51bSBfTWFuZXR0ZU1hcHBpbmdS
YW5nZSB7CisrdHlwZWRlZiBlbnVtIHsKKyAgIE1BTkVUVEVfTUFQUElOR19SQU5HRV9ORUdBVElW
RSA9IC0xLAorICAgTUFORVRURV9NQVBQSU5HX1JBTkdFX0ZVTEwgPSAwLAorICAgTUFORVRURV9N
QVBQSU5HX1JBTkdFX1BPU0lUSVZFID0gMSwKKy19OworK30gTWFuZXR0ZU1hcHBpbmdSYW5nZTsK
KyAKKyBzdHJ1Y3QgX01hbmV0dGVNYXBwaW5nQmluZGluZyB7CisgICBzdHJ1Y3QgeworLS0gCisy
LjI1LjEKKwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc5NGRkYTE5
OGFjMzBhM2FiYWQ3NjAxYWExOTgxNzg4MWExYjIzMDUuLmQ2ZmU2NDBjNTRlMGYyNmY3NTJjYWZh
MDE1Mjk2Mzc2YTllMDY4ZDYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0zMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorCisgICAgICAgICogU291cmNl
L2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlOiBBZGRlZCB0byBkZXRlY3QgbGlibWFuZXR0ZSBoZWFk
ZXJzIGFuZCBsaWJzIGluc3RhbGxlZCBpbiBob3N0IHN5c3RlbS4KKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZTogQWRkZWQgYSBwcml2YXRlIGZsYWcsIEVOQUJMRV9HQU1F
UEFELgorICAgICAgICAgIE9uY2UgbGlibWFuZXR0ZSBpcyBmb3VuZCwgd2UgZXhwb3NlIGFub3Ro
ZXIgYnVpbGQgZmxhZywgVVNFX01BTkVUVEUgZm9yIG90aGVyIHBvcnRzLgorCiAyMDIwLTAzLTMw
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBD
YW4ndCBjcmVhdGUgV2ViR0wgY29udGV4dCBhZnRlciByMjU5MTM5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395149</attachid>
            <date>2020-04-01 01:50:37 -0700</date>
            <delta_ts>2020-04-01 02:06:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200401045036.patch</filename>
            <type>text/plain</type>
            <size>38373</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTAzZTI1ZDg5MDM0
YjU2MDg1NGVkYjdiMDUxNTEzOWI5ZTBhMy4uNzgxMjM0NDRjYWFiZDk1OGJlMzFhZmU3ZmJlODM1
N2U0MTljY2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA0LTAxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDMtMzEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiBtX3dyYXBwZXIgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxh
eS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDNjNDZlNDQ3YzFlNmQxMWE3YjI3NzEwMWMxYzY2ZDViYTBjOTRi
YWQuLmQzN2Q2NmNhMWM1YmYyZDc5YzU1MWQ2YWU4YTEyNGMyMjA5NTc0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMDEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5l
Y3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0
aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0
ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBo
YW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNH
VEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8g
cmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5l
Y3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20g
dGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYWRkaXRpb25hbCBJUEMg
cGVybWlzc2lvbiBuZWVkZWQgYnkgU2VjdXJpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGExZjAwMGVjNzI2NThiZWJiZjJjODMzMjk4MDI1MjRkZmNiMTc1ZTQuLmQ0
NDE3YmYyNjIzODcwOWU0NzFiZTNhZTE0NzMwOTljMTYyYzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xNjIsNiArMTYyLDE4IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQp
CiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtNQU5FVFRF
X0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtNQU5FVFRFX0xJQlJBUklFU30KKyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVj
YTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4NjcwZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFn
ZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlx
dWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
R1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgz
MTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisK
KyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1v
bml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhjYjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1l
cGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRvcHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVE
ZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZlMzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRl
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisj
aW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1h
bmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFu
ZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9u
VmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhk
YmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4g
c2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMg
dm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRlTW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRl
dmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgaWYgKHByb3Zp
ZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0
YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURl
dmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBp
ZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNl
KTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigp
CisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9y
KG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlv
bkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9u
aXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVkIiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5l
Y3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdl
dCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVj
dGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9v
bCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKwor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3VsZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgICAgICBBU1NF
UlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25l
U2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFy
KCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVhcigpOworICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQo
IW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisKKyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+
KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0
KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBv
ZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQg
bm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3Bp
biBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVy
IHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBk
ZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBw
cmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3Rl
ZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0pOworfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBy
ZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4g
cmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNT
RVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRldmljZSBy
ZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBhIHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8vIFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBw
cmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9z
aG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
KnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWduZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIHJldHVybiBpbmRleDsKK30K
Kwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVk
KCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNldEluaXRpYWxDb25u
ZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3IpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50Owor
CitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFs
OworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygp
IGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0
dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAg
ICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8
TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBh
ZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIEdVbmlx
dWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRvcjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0
MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0
ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlH
YW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIy
M2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJ
R2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERh
dGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1
bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFO
RVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4
ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdlYlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RLX0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0
KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJr
aXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0
ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkq
IHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2Vi
UGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1l
cGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9y
IChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRP
VyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1
cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQ
cm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJN
YW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2FiMjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3
NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQTEFURk9STShHVEspCitXZWJQYWdlUHJveHkq
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRN
YW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzFiNzdiNzFiOTI4Mjk1Y2UwNWFjYjIyNzk0MWM3NWFmN2FmYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UKQEAgLTAsMCArMSw1MSBAQAorIyAt
IFRyeSB0byBmaW5kIGxpYm1hbmV0dGUuCisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQor
IworIyAgTUFORVRURV9JTkNMVURFX0RJUlMgLSB0aGUgbGlibWFuZXR0ZSBpbmNsdWRlIGRpcmVj
dG9yaWVzCisjICBNQU5FVFRFX0xJQlJBUklFUyAtIHRoZSBsaWJtYW5ldHRlIGxpYnJhcmllcy4K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNr
X21vZHVsZXMoUENfTUFORVRURSBtYW5ldHRlLTAuMikKKworZmluZF9wYXRoKE1BTkVUVEVfSU5D
TFVERV9ESVJTCisgICAgTkFNRVMgbGlibWFuZXR0ZS5oCisgICAgSElOVFMgJHtQQ19NQU5FVFRF
X0lOQ0xVREVESVJ9CisgICAgICAgICAgJHtQQ19NQU5FVFRFX0lOQ0xVREVfRElSU30KKykKKwor
ZmluZF9saWJyYXJ5KE1BTkVUVEVfTElCUkFSSUVTCisgICAgTkFNRVMgbWFuZXR0ZS0wLjIKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAgICR7UENfTUFORVRURV9MSUJS
QVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitm
aW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBN
QU5FVFRFX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNQU5FVFRFX0lOQ0xVREVfRElSUyBNQU5F
VFRFX0xJQlJBUklFUworKQorCittYXJrX2FzX2FkdmFuY2VkKE1BTkVUVEVfSU5DTFVERV9ESVJT
IE1BTkVUVEVfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA0ZjQwMzQ2N2Y3OTVm
MGY2Njg3MWQzZDkxNzFjZDM4MTljYTQ5OTViLi5jNzVkNzJkODA5YWIwOWZjMjMzMGNkNDU0ODI5
NjU4NzZmZDk0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTYzLDYgKzE2Myw3IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxP
QURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0FN
RVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKQEAgLTIzMCw2ICsyMzEsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAgICAgZW5k
aWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3BhY2thZ2Uo
TWFuZXR0ZSAwLjIuMyBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1BTkVUVEVfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9yIEVOQUJM
RV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9w
YWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNGEyNmNjZmJhNzcxZGI4NjU4
ZWE5ZmY3MDYxOTgzMGUzY2RmZTEuLjhlZTg1YmUwOTZmNzQ0NGIxNTEwY2YxNTYzNmVhZDdmZGYw
N2M4YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNC0wMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBwYXJ0aWN1
bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuMyB3aGljaCBpcyB0aGUgbGF0ZXN0IHZlcnNpb24u
IEJ1dCBpdCBoYXMKKyAgICAgICAgYSBjb21waWxhdGlvbiBpc3N1ZSBpbiBjKysgc28gd2UgbmVl
ZCB0byBwYXRjaCBpdCBiZWZvcmUgdXNlLiBUaGUgYXR0YWNoZWQgcGF0Y2gKKyAgICAgICAgaXMg
YWxyZWFkeSBpbiB0aGUgdXBzdHJlYW0uIE9uY2UgdGhlIG5leHQgcmVsZWFzZSB3aWxsIGNvbWUg
b3V0LCB3ZSBjYW4gcmVtb3ZlIGl0LgorICAgICAgICBJbiBhZGRpdGlvbiwgbGlibWFuZXR0ZSBp
cyBub3QgYXZhaWxhYmxlIGluIEZsYXRwYWsgYnVpbGQgZW52aXJvbm1lbnQgbm93CisgICAgICAg
IHNvIHdlIGFkZCBqaGJ1aWxkIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWxseSBidWlsZCBsaWJtYW5l
dHRlLiBIb3dldmVyLAorICAgICAgICB0aGF0IGNhbiBhbHNvIGJlIHJlbW92ZWQgb25jZSB0aGUg
d2Via2l0IGZsYXRwYWsgc2RrIGluY2x1ZGVzIG5leHQgcmVsZWFzZSBvZiBsaWJtYW5ldHRlLgor
CisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKyAgICAgICAgKiBndGsvcGF0Y2hlcy9t
YW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVudW1zLnBhdGNoOiBB
ZGRlZC4KKwogMjAyMC0wMy0zMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRGVsZXRlIGNvZGUgZm9yIHNlY3VyaXR5IEVXUyBmcm9tIG9sZCBFV1MgKGZv
bGxvdy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9v
bHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCA3ZmNmNzA2ZDU1YWNlODZhYzRkMzg1M2RjY2Zk
NjlmZmJhMzFhNGM4Li5kYWI5ZmUxYWY2YjQ4YjRjZTExYWJmMWFlNjcwMjFkYzk1OWI0NjNkIDEw
MDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1
aWxkLm1vZHVsZXMKQEAgLTI5LDYgKzI5LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0ibGlic2Vj
cmV0Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJsaWJnY3J5cHQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ibWFuZXR0ZSIvPgogICAg
ICAgPGRlcCBwYWNrYWdlPSJvcGVuanBlZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJ3cGViYWNr
ZW5kLWZkbyIvPgogICAgICAgPGlmIGNvbmRpdGlvbi1zZXQ9ImxpbnV4Ij4KQEAgLTQ0NSw2ICs0
NDYsMTggQEAKICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9hdXRvdG9vbHM+CiAKKyAgPG1lc29u
IGlkPSJtYW5ldHRlIiBtZXNvbmFyZ3M9Ii1EaW50cm9zcGVjdGlvbj1mYWxzZSI+CisgICAgPGJy
YW5jaCByZXBvPSJmdHAuZ25vbWUub3JnIgorICAgICAgICAgICAgbW9kdWxlPSIvcHViL2dub21l
L3NvdXJjZXMvbGlibWFuZXR0ZS8wLjIvbGlibWFuZXR0ZS0wLjIuMy50YXIueHoiCisgICAgICAg
ICAgICB2ZXJzaW9uPSIwLjIuMyIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1NjpjMGYwNjUxNTVh
ZTY0Y2VkYTdhODgwNTM2ODc4Njg1YWVlZWU0YzU1ZmQxN2FhZWE4ZWYwYmMyZmFjM2NiMGZmIj4K
KyAgICAgIDxwYXRjaCBmaWxlPSJtYW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRp
b24tZm9yLWVudW1zLnBhdGNoIiBzdHJpcD0iMSIvPgorICAgIDwvYnJhbmNoPgorICAgIDxkZXBl
bmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWIiLz4KKyAgICA8L2RlcGVuZGVuY2ll
cz4KKyAgPC9tZXNvbj4KKwogICA8Y21ha2UgaWQ9Im9wZW5qcGVnIj4KICAgICA8YnJhbmNoIHJl
cG89ImdpdGh1Yi10YXJiYWxsIgogICAgICAgICAgICAgbW9kdWxlPSJ1Y2xvdXZhaW4vb3Blbmpw
ZWcvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvcGF0
Y2hlcy9tYW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVudW1zLnBh
dGNoIGIvVG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xh
cmF0aW9uLWZvci1lbnVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Y2M2FiMzYwNDQ5NDQyZjUwNjZm
MzlkNmViNTBhNzNlMDBmMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3RrL3BhdGNoZXMv
bWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaApA
QCAtMCwwICsxLDgxIEBACitGcm9tIGNmMjljYmZmNjRlYThhN2E4MzlhYzUzODg0NjhmZDA1ODZi
OTRkMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ1Nlb2sgT2ggPGNoYW5n
c2Vva0BnYXRlY2guZWR1PgorRGF0ZTogVGh1LCAxOSBNYXIgMjAyMCAwNzo0NToyOSAtMDQwMAor
U3ViamVjdDogW1BBVENIXSBldmVudDogQXZvaWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgZW51
bXMKKworRml4IGEgY29tcGlsYXRpb24gZXJyb3Igd2l0aCBDKysuCisKK0ZpeGVzIGh0dHBzOi8v
Z2l0bGFiLmdub21lLm9yZy9hcGxhemFzL2xpYm1hbmV0dGUvaXNzdWVzLzE0CistLS0KKyBzcmMv
bWFuZXR0ZS1ldmVudC5oICAgfCAxMSArKysrKy0tLS0tLQorIHNyYy9tYW5ldHRlLW1hcHBpbmcu
aCB8IDEwICsrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTIg
ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFuZXR0ZS1ldmVudC5oIGIvc3JjL21h
bmV0dGUtZXZlbnQuaAoraW5kZXggNGRkYmFlZi4uZGVkZDliMiAxMDA2NDQKKy0tLSBhL3NyYy9t
YW5ldHRlLWV2ZW50LmgKKysrKyBiL3NyYy9tYW5ldHRlLWV2ZW50LmgKK0BAIC0zMywxMCArMzMs
NiBAQCBHX0JFR0lOX0RFQ0xTCisgI2RlZmluZSBNQU5FVFRFX1RZUEVfRVZFTlRfVFlQRSAobWFu
ZXR0ZV9ldmVudF90eXBlX2dldF90eXBlICgpKQorIAorIHR5cGVkZWYgdW5pb24gIF9NYW5ldHRl
RXZlbnQgTWFuZXR0ZUV2ZW50OworLXR5cGVkZWYgZW51bSBfTWFuZXR0ZUV2ZW50VHlwZSBNYW5l
dHRlRXZlbnRUeXBlOworLQorLUdUeXBlIG1hbmV0dGVfZXZlbnRfZ2V0X3R5cGUgKHZvaWQpIEdf
R05VQ19DT05TVDsKKy1HVHlwZSBtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKHZvaWQpIEdf
R05VQ19DT05TVDsKKyAKKyAvKioKKyAgKiBNYW5ldHRlRXZlbnRUeXBlOgorQEAgLTQ4LDE0ICs0
NCwxNyBAQCBHVHlwZSBtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19D
T05TVDsKKyAgKgorICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQuCisgICovCist
ZW51bSBfTWFuZXR0ZUV2ZW50VHlwZSB7CisrdHlwZWRlZiBlbnVtIHsKKyAgIE1BTkVUVEVfRVZF
TlRfTk9USElORyA9IC0xLAorICAgTUFORVRURV9FVkVOVF9CVVRUT05fUFJFU1MgPSAwLAorICAg
TUFORVRURV9FVkVOVF9CVVRUT05fUkVMRUFTRSA9IDEsCisgICBNQU5FVFRFX0VWRU5UX0FCU09M
VVRFID0gMiwKKyAgIE1BTkVUVEVfRVZFTlRfSEFUID0gMywKKyAgIE1BTkVUVEVfTEFTVF9FVkVO
VCwKKy19OworK30gTWFuZXR0ZUV2ZW50VHlwZTsKKysKKytHVHlwZSBtYW5ldHRlX2V2ZW50X2dl
dF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisrR1R5cGUgbWFuZXR0ZV9ldmVudF90eXBlX2dl
dF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisgCisgTWFuZXR0ZUV2ZW50ICptYW5ldHRlX2V2
ZW50X2NvcHkgKGNvbnN0IE1hbmV0dGVFdmVudCAqc2VsZik7Cisgdm9pZCBtYW5ldHRlX2V2ZW50
X2ZyZWUgKE1hbmV0dGVFdmVudCAqc2VsZik7CitkaWZmIC0tZ2l0IGEvc3JjL21hbmV0dGUtbWFw
cGluZy5oIGIvc3JjL21hbmV0dGUtbWFwcGluZy5oCitpbmRleCBiNmMyYzVmLi41MTdlMWNkIDEw
MDY0NAorLS0tIGEvc3JjL21hbmV0dGUtbWFwcGluZy5oCisrKysgYi9zcmMvbWFuZXR0ZS1tYXBw
aW5nLmgKK0BAIC0zMiwyMSArMzIsMTkgQEAgR19CRUdJTl9ERUNMUworIAorIEdfREVDTEFSRV9G
SU5BTF9UWVBFIChNYW5ldHRlTWFwcGluZywgbWFuZXR0ZV9tYXBwaW5nLCBNQU5FVFRFLCBNQVBQ
SU5HLCBHT2JqZWN0KQorIAorLXR5cGVkZWYgZW51bSBfTWFuZXR0ZU1hcHBpbmdJbnB1dFR5cGUg
TWFuZXR0ZU1hcHBpbmdJbnB1dFR5cGU7CistdHlwZWRlZiBlbnVtIF9NYW5ldHRlTWFwcGluZ1Jh
bmdlIE1hbmV0dGVNYXBwaW5nUmFuZ2U7CisgdHlwZWRlZiBzdHJ1Y3QgX01hbmV0dGVNYXBwaW5n
QmluZGluZyBNYW5ldHRlTWFwcGluZ0JpbmRpbmc7CisgCistZW51bSBfTWFuZXR0ZU1hcHBpbmdJ
bnB1dFR5cGUgeworK3R5cGVkZWYgZW51bSB7CisgICBNQU5FVFRFX01BUFBJTkdfSU5QVVRfVFlQ
RV9BWElTLAorICAgTUFORVRURV9NQVBQSU5HX0lOUFVUX1RZUEVfQlVUVE9OLAorICAgTUFORVRU
RV9NQVBQSU5HX0lOUFVUX1RZUEVfSEFULAorLX07CisrfSBNYW5ldHRlTWFwcGluZ0lucHV0VHlw
ZTsKKyAKKy1lbnVtIF9NYW5ldHRlTWFwcGluZ1JhbmdlIHsKKyt0eXBlZGVmIGVudW0geworICAg
TUFORVRURV9NQVBQSU5HX1JBTkdFX05FR0FUSVZFID0gLTEsCisgICBNQU5FVFRFX01BUFBJTkdf
UkFOR0VfRlVMTCA9IDAsCisgICBNQU5FVFRFX01BUFBJTkdfUkFOR0VfUE9TSVRJVkUgPSAxLAor
LX07CisrfSBNYW5ldHRlTWFwcGluZ1JhbmdlOworIAorIHN0cnVjdCBfTWFuZXR0ZU1hcHBpbmdC
aW5kaW5nIHsKKyAgIHN0cnVjdCB7CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggNzk0ZGRhMTk4YWMzMGEzYWJhZDc2MDFhYTE5ODE3ODgxYTFi
MjMwNS4uMzFkMTcwOTk5MTMzOTM1ODRkMGUxOTg3MzZhZDU2ZjczYzU3YjcyMCAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTAx
ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJ
bXBsZW1lbnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJ
IHdpdGggbGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRv
IHRoZSBndGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmpl
Y3QgZ2FtZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBh
bmQgaW5wdXQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2U6IEFk
ZGVkIHRvIGRldGVjdCBsaWJtYW5ldHRlIGhlYWRlcnMgYW5kIGxpYnMgaW5zdGFsbGVkIGluIGhv
c3Qgc3lzdGVtLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBBZGRl
ZCBhIHByaXZhdGUgZmxhZywgRU5BQkxFX0dBTUVQQUQuCisgICAgICAgICAgT25jZSBsaWJtYW5l
dHRlIGlzIGZvdW5kLCB3ZSBleHBvc2UgYW5vdGhlciBidWlsZCBmbGFnLCBVU0VfTUFORVRURSBm
b3Igb3RoZXIgcG9ydHMuCisKIDIwMjAtMDMtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIENhbid0IGNyZWF0ZSBXZWJHTCBjb250ZXh0IGFm
dGVyIHIyNTkxMzkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395150</attachid>
            <date>2020-04-01 02:06:27 -0700</date>
            <delta_ts>2020-04-01 20:55:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200401050627.patch</filename>
            <type>text/plain</type>
            <size>38386</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTAzZTI1ZDg5MDM0
YjU2MDg1NGVkYjdiMDUxNTEzOWI5ZTBhMy4uNzgxMjM0NDRjYWFiZDk1OGJlMzFhZmU3ZmJlODM1
N2U0MTljY2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA0LTAxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDMtMzEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiBtX3dyYXBwZXIgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxh
eS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDNjNDZlNDQ3YzFlNmQxMWE3YjI3NzEwMWMxYzY2ZDViYTBjOTRi
YWQuLmQzN2Q2NmNhMWM1YmYyZDc5YzU1MWQ2YWU4YTEyNGMyMjA5NTc0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMDEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5l
Y3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0
aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0
ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBo
YW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNH
VEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8g
cmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5l
Y3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20g
dGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYWRkaXRpb25hbCBJUEMg
cGVybWlzc2lvbiBuZWVkZWQgYnkgU2VjdXJpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGExZjAwMGVjNzI2NThiZWJiZjJjODMzMjk4MDI1MjRkZmNiMTc1ZTQuLmQ0
NDE3YmYyNjIzODcwOWU0NzFiZTNhZTE0NzMwOTljMTYyYzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xNjIsNiArMTYyLDE4IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQp
CiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtNQU5FVFRF
X0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtNQU5FVFRFX0xJQlJBUklFU30KKyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVj
YTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4NjcwZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFn
ZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlx
dWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
R1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgz
MTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisK
KyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1v
bml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhjYjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1l
cGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRvcHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVE
ZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZlMzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRl
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisj
aW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1h
bmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFu
ZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9u
VmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhk
YmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4g
c2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMg
dm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRlTW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRl
dmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgaWYgKHByb3Zp
ZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0
YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURl
dmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBp
ZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNl
KTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigp
CisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9y
KG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlv
bkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9u
aXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVkIiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5l
Y3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdl
dCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVj
dGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9v
bCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKwor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3VsZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgICAgICBBU1NF
UlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25l
U2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFy
KCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVhcigpOworICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQo
IW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisKKyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+
KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0
KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBv
ZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQg
bm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3Bp
biBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVy
IHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBk
ZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBw
cmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3Rl
ZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0pOworfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBy
ZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4g
cmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNT
RVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRldmljZSBy
ZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBhIHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8vIFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBw
cmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9z
aG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
KnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWduZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIHJldHVybiBpbmRleDsKK30K
Kwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVk
KCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNldEluaXRpYWxDb25u
ZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3IpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50Owor
CitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFs
OworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygp
IGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0
dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAg
ICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8
TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBh
ZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIEdVbmlx
dWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRvcjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0
MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0
ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlH
YW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIy
M2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJ
R2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERh
dGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1
bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFO
RVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4
ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdlYlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RLX0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0
KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJr
aXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0
ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkq
IHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2Vi
UGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1l
cGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9y
IChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRP
VyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1
cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQ
cm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJN
YW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2FiMjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3
NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQTEFURk9STShHVEspCitXZWJQYWdlUHJveHkq
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRN
YW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzFiNzdiNzFiOTI4Mjk1Y2UwNWFjYjIyNzk0MWM3NWFmN2FmYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UKQEAgLTAsMCArMSw1MSBAQAorIyAt
IFRyeSB0byBmaW5kIGxpYm1hbmV0dGUuCisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQor
IworIyAgTUFORVRURV9JTkNMVURFX0RJUlMgLSB0aGUgbGlibWFuZXR0ZSBpbmNsdWRlIGRpcmVj
dG9yaWVzCisjICBNQU5FVFRFX0xJQlJBUklFUyAtIHRoZSBsaWJtYW5ldHRlIGxpYnJhcmllcy4K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNr
X21vZHVsZXMoUENfTUFORVRURSBtYW5ldHRlLTAuMikKKworZmluZF9wYXRoKE1BTkVUVEVfSU5D
TFVERV9ESVJTCisgICAgTkFNRVMgbGlibWFuZXR0ZS5oCisgICAgSElOVFMgJHtQQ19NQU5FVFRF
X0lOQ0xVREVESVJ9CisgICAgICAgICAgJHtQQ19NQU5FVFRFX0lOQ0xVREVfRElSU30KKykKKwor
ZmluZF9saWJyYXJ5KE1BTkVUVEVfTElCUkFSSUVTCisgICAgTkFNRVMgbWFuZXR0ZS0wLjIKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAgICR7UENfTUFORVRURV9MSUJS
QVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitm
aW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBN
QU5FVFRFX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNQU5FVFRFX0lOQ0xVREVfRElSUyBNQU5F
VFRFX0xJQlJBUklFUworKQorCittYXJrX2FzX2FkdmFuY2VkKE1BTkVUVEVfSU5DTFVERV9ESVJT
IE1BTkVUVEVfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA0ZjQwMzQ2N2Y3OTVm
MGY2Njg3MWQzZDkxNzFjZDM4MTljYTQ5OTViLi5jNzVkNzJkODA5YWIwOWZjMjMzMGNkNDU0ODI5
NjU4NzZmZDk0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTYzLDYgKzE2Myw3IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxP
QURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0FN
RVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKQEAgLTIzMCw2ICsyMzEsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAgICAgZW5k
aWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3BhY2thZ2Uo
TWFuZXR0ZSAwLjIuMyBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1BTkVUVEVfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9yIEVOQUJM
RV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9w
YWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNGEyNmNjZmJhNzcxZGI4NjU4
ZWE5ZmY3MDYxOTgzMGUzY2RmZTEuLjhlZTg1YmUwOTZmNzQ0NGIxNTEwY2YxNTYzNmVhZDdmZGYw
N2M4YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNC0wMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBwYXJ0aWN1
bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuMyB3aGljaCBpcyB0aGUgbGF0ZXN0IHZlcnNpb24u
IEJ1dCBpdCBoYXMKKyAgICAgICAgYSBjb21waWxhdGlvbiBpc3N1ZSBpbiBjKysgc28gd2UgbmVl
ZCB0byBwYXRjaCBpdCBiZWZvcmUgdXNlLiBUaGUgYXR0YWNoZWQgcGF0Y2gKKyAgICAgICAgaXMg
YWxyZWFkeSBpbiB0aGUgdXBzdHJlYW0uIE9uY2UgdGhlIG5leHQgcmVsZWFzZSB3aWxsIGNvbWUg
b3V0LCB3ZSBjYW4gcmVtb3ZlIGl0LgorICAgICAgICBJbiBhZGRpdGlvbiwgbGlibWFuZXR0ZSBp
cyBub3QgYXZhaWxhYmxlIGluIEZsYXRwYWsgYnVpbGQgZW52aXJvbm1lbnQgbm93CisgICAgICAg
IHNvIHdlIGFkZCBqaGJ1aWxkIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWxseSBidWlsZCBsaWJtYW5l
dHRlLiBIb3dldmVyLAorICAgICAgICB0aGF0IGNhbiBhbHNvIGJlIHJlbW92ZWQgb25jZSB0aGUg
d2Via2l0IGZsYXRwYWsgc2RrIGluY2x1ZGVzIG5leHQgcmVsZWFzZSBvZiBsaWJtYW5ldHRlLgor
CisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKyAgICAgICAgKiBndGsvcGF0Y2hlcy9t
YW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVudW1zLnBhdGNoOiBB
ZGRlZC4KKwogMjAyMC0wMy0zMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRGVsZXRlIGNvZGUgZm9yIHNlY3VyaXR5IEVXUyBmcm9tIG9sZCBFV1MgKGZv
bGxvdy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9v
bHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCA3ZmNmNzA2ZDU1YWNlODZhYzRkMzg1M2RjY2Zk
NjlmZmJhMzFhNGM4Li5jZWI0NGU2NmNhN2QzZjA1Yzk1Y2JhMGMwODNjNmJkZWNjYmUxYWViIDEw
MDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1
aWxkLm1vZHVsZXMKQEAgLTI5LDYgKzI5LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0ibGlic2Vj
cmV0Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJsaWJnY3J5cHQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ibWFuZXR0ZSIvPgogICAg
ICAgPGRlcCBwYWNrYWdlPSJvcGVuanBlZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJ3cGViYWNr
ZW5kLWZkbyIvPgogICAgICAgPGlmIGNvbmRpdGlvbi1zZXQ9ImxpbnV4Ij4KQEAgLTQ0NSw2ICs0
NDYsMTggQEAKICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9hdXRvdG9vbHM+CiAKKyAgPG1lc29u
IGlkPSJtYW5ldHRlIiBtZXNvbmFyZ3M9Ii1EaW50cm9zcGVjdGlvbj1mYWxzZSAtRHZhcGk9ZmFs
c2UiPgorICAgIDxicmFuY2ggcmVwbz0iZnRwLmdub21lLm9yZyIKKyAgICAgICAgICAgIG1vZHVs
ZT0iL3B1Yi9nbm9tZS9zb3VyY2VzL2xpYm1hbmV0dGUvMC4yL2xpYm1hbmV0dGUtMC4yLjMudGFy
Lnh6IgorICAgICAgICAgICAgdmVyc2lvbj0iMC4yLjMiCisgICAgICAgICAgICBoYXNoPSJzaGEy
NTY6YzBmMDY1MTU1YWU2NGNlZGE3YTg4MDUzNjg3ODY4NWFlZWVlNGM1NWZkMTdhYWVhOGVmMGJj
MmZhYzNjYjBmZiI+CisgICAgICA8cGF0Y2ggZmlsZT0ibWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3
YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaCIgc3RyaXA9IjEiLz4KKyAgICA8L2JyYW5j
aD4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgPGRlcCBwYWNrYWdlPSJnbGliIi8+CisgICAg
PC9kZXBlbmRlbmNpZXM+CisgIDwvbWVzb24+CisKICAgPGNtYWtlIGlkPSJvcGVuanBlZyI+CiAg
ICAgPGJyYW5jaCByZXBvPSJnaXRodWItdGFyYmFsbCIKICAgICAgICAgICAgIG1vZHVsZT0idWNs
b3V2YWluL29wZW5qcGVnL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgpkaWZmIC0tZ2l0IGEv
VG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9u
LWZvci1lbnVtcy5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVzL21hbmV0dGUtZXZlbnQtQXZvaWQt
Zm9yd2FyZC1kZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNmNjNhYjM2
MDQ0OTQ0MmY1MDY2ZjM5ZDZlYjUwYTczZTAwZjJkOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2d0ay9wYXRjaGVzL21hbmV0dGUtZXZlbnQtQXZvaWQtZm9yd2FyZC1kZWNsYXJhdGlvbi1mb3It
ZW51bXMucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSBjZjI5Y2JmZjY0ZWE4YTdhODM5YWM1
Mzg4NDY4ZmQwNTg2Yjk0ZDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdT
ZW9rIE9oIDxjaGFuZ3Nlb2tAZ2F0ZWNoLmVkdT4KK0RhdGU6IFRodSwgMTkgTWFyIDIwMjAgMDc6
NDU6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXZlbnQ6IEF2b2lkIGZvcndhcmQgZGVjbGFy
YXRpb24gZm9yIGVudW1zCisKK0ZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdpdGggQysrLgorCitG
aXhlcyBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvYXBsYXphcy9saWJtYW5ldHRlL2lzc3Vlcy8x
NAorLS0tCisgc3JjL21hbmV0dGUtZXZlbnQuaCAgIHwgMTEgKysrKystLS0tLS0KKyBzcmMvbWFu
ZXR0ZS1tYXBwaW5nLmggfCAxMCArKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2Vy
dGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21hbmV0dGUtZXZl
bnQuaCBiL3NyYy9tYW5ldHRlLWV2ZW50LmgKK2luZGV4IDRkZGJhZWYuLmRlZGQ5YjIgMTAwNjQ0
CistLS0gYS9zcmMvbWFuZXR0ZS1ldmVudC5oCisrKysgYi9zcmMvbWFuZXR0ZS1ldmVudC5oCitA
QCAtMzMsMTAgKzMzLDYgQEAgR19CRUdJTl9ERUNMUworICNkZWZpbmUgTUFORVRURV9UWVBFX0VW
RU5UX1RZUEUgKG1hbmV0dGVfZXZlbnRfdHlwZV9nZXRfdHlwZSAoKSkKKyAKKyB0eXBlZGVmIHVu
aW9uICBfTWFuZXR0ZUV2ZW50IE1hbmV0dGVFdmVudDsKKy10eXBlZGVmIGVudW0gX01hbmV0dGVF
dmVudFR5cGUgTWFuZXR0ZUV2ZW50VHlwZTsKKy0KKy1HVHlwZSBtYW5ldHRlX2V2ZW50X2dldF90
eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CistR1R5cGUgbWFuZXR0ZV9ldmVudF90eXBlX2dldF90
eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisgCisgLyoqCisgICogTWFuZXR0ZUV2ZW50VHlwZToK
K0BAIC00OCwxNCArNDQsMTcgQEAgR1R5cGUgbWFuZXR0ZV9ldmVudF90eXBlX2dldF90eXBlICh2
b2lkKSBHX0dOVUNfQ09OU1Q7CisgICoKKyAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2
ZW50LgorICAqLworLWVudW0gX01hbmV0dGVFdmVudFR5cGUgeworK3R5cGVkZWYgZW51bSB7Cisg
ICBNQU5FVFRFX0VWRU5UX05PVEhJTkcgPSAtMSwKKyAgIE1BTkVUVEVfRVZFTlRfQlVUVE9OX1BS
RVNTID0gMCwKKyAgIE1BTkVUVEVfRVZFTlRfQlVUVE9OX1JFTEVBU0UgPSAxLAorICAgTUFORVRU
RV9FVkVOVF9BQlNPTFVURSA9IDIsCisgICBNQU5FVFRFX0VWRU5UX0hBVCA9IDMsCisgICBNQU5F
VFRFX0xBU1RfRVZFTlQsCistfTsKKyt9IE1hbmV0dGVFdmVudFR5cGU7CisrCisrR1R5cGUgbWFu
ZXR0ZV9ldmVudF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworK0dUeXBlIG1hbmV0dGVf
ZXZlbnRfdHlwZV9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworIAorIE1hbmV0dGVFdmVu
dCAqbWFuZXR0ZV9ldmVudF9jb3B5IChjb25zdCBNYW5ldHRlRXZlbnQgKnNlbGYpOworIHZvaWQg
bWFuZXR0ZV9ldmVudF9mcmVlIChNYW5ldHRlRXZlbnQgKnNlbGYpOworZGlmZiAtLWdpdCBhL3Ny
Yy9tYW5ldHRlLW1hcHBpbmcuaCBiL3NyYy9tYW5ldHRlLW1hcHBpbmcuaAoraW5kZXggYjZjMmM1
Zi4uNTE3ZTFjZCAxMDA2NDQKKy0tLSBhL3NyYy9tYW5ldHRlLW1hcHBpbmcuaAorKysrIGIvc3Jj
L21hbmV0dGUtbWFwcGluZy5oCitAQCAtMzIsMjEgKzMyLDE5IEBAIEdfQkVHSU5fREVDTFMKKyAK
KyBHX0RFQ0xBUkVfRklOQUxfVFlQRSAoTWFuZXR0ZU1hcHBpbmcsIG1hbmV0dGVfbWFwcGluZywg
TUFORVRURSwgTUFQUElORywgR09iamVjdCkKKyAKKy10eXBlZGVmIGVudW0gX01hbmV0dGVNYXBw
aW5nSW5wdXRUeXBlIE1hbmV0dGVNYXBwaW5nSW5wdXRUeXBlOworLXR5cGVkZWYgZW51bSBfTWFu
ZXR0ZU1hcHBpbmdSYW5nZSBNYW5ldHRlTWFwcGluZ1JhbmdlOworIHR5cGVkZWYgc3RydWN0IF9N
YW5ldHRlTWFwcGluZ0JpbmRpbmcgTWFuZXR0ZU1hcHBpbmdCaW5kaW5nOworIAorLWVudW0gX01h
bmV0dGVNYXBwaW5nSW5wdXRUeXBlIHsKKyt0eXBlZGVmIGVudW0geworICAgTUFORVRURV9NQVBQ
SU5HX0lOUFVUX1RZUEVfQVhJUywKKyAgIE1BTkVUVEVfTUFQUElOR19JTlBVVF9UWVBFX0JVVFRP
TiwKKyAgIE1BTkVUVEVfTUFQUElOR19JTlBVVF9UWVBFX0hBVCwKKy19OworK30gTWFuZXR0ZU1h
cHBpbmdJbnB1dFR5cGU7CisgCistZW51bSBfTWFuZXR0ZU1hcHBpbmdSYW5nZSB7CisrdHlwZWRl
ZiBlbnVtIHsKKyAgIE1BTkVUVEVfTUFQUElOR19SQU5HRV9ORUdBVElWRSA9IC0xLAorICAgTUFO
RVRURV9NQVBQSU5HX1JBTkdFX0ZVTEwgPSAwLAorICAgTUFORVRURV9NQVBQSU5HX1JBTkdFX1BP
U0lUSVZFID0gMSwKKy19OworK30gTWFuZXR0ZU1hcHBpbmdSYW5nZTsKKyAKKyBzdHJ1Y3QgX01h
bmV0dGVNYXBwaW5nQmluZGluZyB7CisgICBzdHJ1Y3QgeworLS0gCisyLjI1LjEKKwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc5NGRkYTE5OGFjMzBhM2FiYWQ3NjAx
YWExOTgxNzg4MWExYjIzMDUuLjMxZDE3MDk5OTEzMzkzNTg0ZDBlMTk4NzM2YWQ1NmY3M2M1N2I3
MjAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMC0wNC0wMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29ubmVjdGVkIGV2ZW50cyBv
ZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgR0FNRVBBRCBB
UEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5ldHRlLAorICAgICAgICBh
IHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRvIGhhbmRsZSBnYW1lcGFk
IGNvbm5lY3Rpb24gYW5kIGlucHV0LgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRNYW5l
dHRlLmNtYWtlOiBBZGRlZCB0byBkZXRlY3QgbGlibWFuZXR0ZSBoZWFkZXJzIGFuZCBsaWJzIGlu
c3RhbGxlZCBpbiBob3N0IHN5c3RlbS4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZTogQWRkZWQgYSBwcml2YXRlIGZsYWcsIEVOQUJMRV9HQU1FUEFELgorICAgICAgICAg
IE9uY2UgbGlibWFuZXR0ZSBpcyBmb3VuZCwgd2UgZXhwb3NlIGFub3RoZXIgYnVpbGQgZmxhZywg
VVNFX01BTkVUVEUgZm9yIG90aGVyIHBvcnRzLgorCiAyMDIwLTAzLTMwICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBDYW4ndCBjcmVhdGUgV2Vi
R0wgY29udGV4dCBhZnRlciByMjU5MTM5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395240</attachid>
            <date>2020-04-01 20:55:38 -0700</date>
            <delta_ts>2020-04-11 10:12:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200401235537.patch</filename>
            <type>text/plain</type>
            <size>41970</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkwYTAzZTI1ZDg5MDM0
YjU2MDg1NGVkYjdiMDUxNTEzOWI5ZTBhMy4uNzgxMjM0NDRjYWFiZDk1OGJlMzFhZmU3ZmJlODM1
N2U0MTljY2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA0LTAxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDMtMzEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiBtX3dyYXBwZXIgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxh
eS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDNjNDZlNDQ3YzFlNmQxMWE3YjI3NzEwMWMxYzY2ZDViYTBjOTRi
YWQuLmQzN2Q2NmNhMWM1YmYyZDc5YzU1MWQ2YWU4YTEyNGMyMjA5NTc0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMDEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5l
Y3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0
aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0
ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBo
YW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNH
VEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8g
cmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5l
Y3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20g
dGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDMtMzEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYWRkaXRpb25hbCBJUEMg
cGVybWlzc2lvbiBuZWVkZWQgYnkgU2VjdXJpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGExZjAwMGVjNzI2NThiZWJiZjJjODMzMjk4MDI1MjRkZmNiMTc1ZTQuLmQ0
NDE3YmYyNjIzODcwOWU0NzFiZTNhZTE0NzMwOTljMTYyYzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0xNjIsNiArMTYyLDE4IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQp
CiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtNQU5FVFRF
X0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtNQU5FVFRFX0xJQlJBUklFU30KKyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVj
YTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4NjcwZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFn
ZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlx
dWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
R1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgz
MTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisK
KyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1v
bml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhjYjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVkIGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1l
cGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRvcHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVE
ZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZlMzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRl
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisj
aW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1h
bmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFu
ZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVuc2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKworICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9u
VmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1fYXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhk
YmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4g
c2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMg
dm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRlTW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRl
dmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgaWYgKHByb3Zp
ZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0
YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURl
dmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBp
ZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNl
KTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigp
CisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9y
KG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlv
bkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9u
aXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVkIiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5l
Y3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdl
dCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVj
dGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9v
bCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKwor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMu
YWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3VsZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgICAgICBBU1NF
UlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisKKyAgICAgICAgbV9zaG91bGREaXNwYXRjaENh
bGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25l
U2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFy
KCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVhcigpOworICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQo
IW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisKKyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+
KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5nZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0
KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisKKyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBhZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBv
ZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVwYWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQg
bm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZpY2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3Bp
biBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisgICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVudCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVy
IHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBk
ZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBw
cmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hvdWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3Rl
ZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0pOworfQorCit2b2lkIE1hbmV0dGVH
YW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBy
ZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4g
cmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNT
RVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8vIEFueSB0aW1lIHdlIGdldCBhIGRldmljZSBy
ZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBhIHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8vIFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBw
cmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNlaXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9z
aG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
KnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWduZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIHJldHVybiBpbmRleDsKK30K
Kwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVk
KCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNldEluaXRpYWxDb25u
ZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3IpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xhc3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50Owor
CitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFs
OworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygp
IGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25u
ZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0
dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZp
Y2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAg
ICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8
TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBh
ZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrczsKKworICAgIEdVbmlx
dWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRvcjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0
MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0
ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlH
YW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIy
M2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJ
R2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERh
dGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1
bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFO
RVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4
ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdlYlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RLX0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0
KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJr
aXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0
ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkq
IHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2Vi
UGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1l
cGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9y
IChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRP
VyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1
cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQ
cm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJN
YW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2FiMjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3
NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNl
dERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQTEFURk9STShHVEspCitXZWJQYWdlUHJveHkq
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRN
YW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0YzFiNzdiNzFiOTI4Mjk1Y2UwNWFjYjIyNzk0MWM3NWFmN2FmYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UKQEAgLTAsMCArMSw1MSBAQAorIyAt
IFRyeSB0byBmaW5kIGxpYm1hbmV0dGUuCisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQor
IworIyAgTUFORVRURV9JTkNMVURFX0RJUlMgLSB0aGUgbGlibWFuZXR0ZSBpbmNsdWRlIGRpcmVj
dG9yaWVzCisjICBNQU5FVFRFX0xJQlJBUklFUyAtIHRoZSBsaWJtYW5ldHRlIGxpYnJhcmllcy4K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNr
X21vZHVsZXMoUENfTUFORVRURSBtYW5ldHRlLTAuMikKKworZmluZF9wYXRoKE1BTkVUVEVfSU5D
TFVERV9ESVJTCisgICAgTkFNRVMgbGlibWFuZXR0ZS5oCisgICAgSElOVFMgJHtQQ19NQU5FVFRF
X0lOQ0xVREVESVJ9CisgICAgICAgICAgJHtQQ19NQU5FVFRFX0lOQ0xVREVfRElSU30KKykKKwor
ZmluZF9saWJyYXJ5KE1BTkVUVEVfTElCUkFSSUVTCisgICAgTkFNRVMgbWFuZXR0ZS0wLjIKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAgICR7UENfTUFORVRURV9MSUJS
QVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitm
aW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBN
QU5FVFRFX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNQU5FVFRFX0lOQ0xVREVfRElSUyBNQU5F
VFRFX0xJQlJBUklFUworKQorCittYXJrX2FzX2FkdmFuY2VkKE1BTkVUVEVfSU5DTFVERV9ESVJT
IE1BTkVUVEVfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA0ZjQwMzQ2N2Y3OTVm
MGY2Njg3MWQzZDkxNzFjZDM4MTljYTQ5OTViLi5jNzVkNzJkODA5YWIwOWZjMjMzMGNkNDU0ODI5
NjU4NzZmZDk0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTYzLDYgKzE2Myw3IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBS
SVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxP
QURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIg
UFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0FN
RVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKQEAgLTIzMCw2ICsyMzEsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAgICAgZW5k
aWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3BhY2thZ2Uo
TWFuZXR0ZSAwLjIuMyBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1BTkVUVEVfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9yIEVOQUJM
RV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAgZmluZF9w
YWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNGEyNmNjZmJhNzcxZGI4NjU4
ZWE5ZmY3MDYxOTgzMGUzY2RmZTEuLjUyMzI3ZjcyZjUzMzcxMmVlZmNiYzk1MjIyZTBlODdjYTM4
MDFiY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0wMSAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29u
bmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGlu
aXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5l
dHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRv
IGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBwYXJ0aWN1
bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuMyB3aGljaCBpcyB0aGUgbGF0ZXN0IHZlcnNpb24u
IEJ1dCBpdCBoYXMKKyAgICAgICAgYSBjb21waWxhdGlvbiBpc3N1ZSBpbiBjKysgc28gd2UgbmVl
ZCB0byBwYXRjaCBpdCBiZWZvcmUgdXNlLiBUaGUgYXR0YWNoZWQgcGF0Y2gKKyAgICAgICAgaXMg
YWxyZWFkeSBpbiB0aGUgdXBzdHJlYW0uIE9uY2UgdGhlIG5leHQgcmVsZWFzZSB3aWxsIGNvbWUg
b3V0LCB3ZSBjYW4gcmVtb3ZlIGl0LgorICAgICAgICBJbiBhZGRpdGlvbiwgbGlibWFuZXR0ZSBp
cyBub3QgYXZhaWxhYmxlIGluIEZsYXRwYWsgYnVpbGQgZW52aXJvbm1lbnQgbm93CisgICAgICAg
IHNvIHdlIGFkZCBqaGJ1aWxkIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWxseSBidWlsZCBsaWJtYW5l
dHRlLiBIb3dldmVyLAorICAgICAgICB0aGF0IGNhbiBhbHNvIGJlIHJlbW92ZWQgb25jZSB0aGUg
d2Via2l0IGZsYXRwYWsgc2RrIGluY2x1ZGVzIG5leHQgcmVsZWFzZSBvZiBsaWJtYW5ldHRlLgor
CisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKyAgICAgICAgKiBndGsvcGF0Y2hlcy9t
YW5ldHRlLWJ1aWxkLVN1cHBvcnQtZGlzYWJsaW5nLWludHJvc3BlY3Rpb24tYW5kLXZhcGktZ2Vu
ZXIucGF0Y2g6IEFkZGVkLgorICAgICAgICAqIGd0ay9wYXRjaGVzL21hbmV0dGUtZXZlbnQtQXZv
aWQtZm9yd2FyZC1kZWNsYXJhdGlvbi1mb3ItZW51bXMucGF0Y2g6IEFkZGVkLgorCiAyMDIwLTAz
LTMxICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxl
dGUgY29kZSBmb3Igc2VjdXJpdHkgRVdTIGZyb20gb2xkIEVXUyAoZm9sbG93LXVwIGZpeCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9ndGsvamhidWlsZC5t
b2R1bGVzCmluZGV4IDdmY2Y3MDZkNTVhY2U4NmFjNGQzODUzZGNjZmQ2OWZmYmEzMWE0YzguLjFi
MmQ3NDIxNGNkYjEzNGU2NGVlZDdmZWI0ODBiMjAwYzg1N2I5N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L2d0ay9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpAQCAt
MjksNiArMjksNyBAQAogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJzZWNyZXQiLz4KICAgICAgIDxk
ZXAgcGFja2FnZT0ibGliZ3BnLWVycm9yIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdjcnlw
dCIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJtYW5ldHRlIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
Im9wZW5qcGVnIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9IndwZWJhY2tlbmQtZmRvIi8+CiAgICAg
ICA8aWYgY29uZGl0aW9uLXNldD0ibGludXgiPgpAQCAtNDQ1LDYgKzQ0NiwxOSBAQAogICAgIDwv
ZGVwZW5kZW5jaWVzPgogICA8L2F1dG90b29scz4KIAorICA8bWVzb24gaWQ9Im1hbmV0dGUiIG1l
c29uYXJncz0iLURpbnRyb3NwZWN0aW9uPWZhbHNlIC1EdmFwaT1mYWxzZSI+CisgICAgPGJyYW5j
aCByZXBvPSJmdHAuZ25vbWUub3JnIgorICAgICAgICAgICAgbW9kdWxlPSIvcHViL2dub21lL3Nv
dXJjZXMvbGlibWFuZXR0ZS8wLjIvbGlibWFuZXR0ZS0wLjIuMy50YXIueHoiCisgICAgICAgICAg
ICB2ZXJzaW9uPSIwLjIuMyIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1NjpjMGYwNjUxNTVhZTY0
Y2VkYTdhODgwNTM2ODc4Njg1YWVlZWU0YzU1ZmQxN2FhZWE4ZWYwYmMyZmFjM2NiMGZmIj4KKyAg
ICAgIDxwYXRjaCBmaWxlPSJtYW5ldHRlLWJ1aWxkLVN1cHBvcnQtZGlzYWJsaW5nLWludHJvc3Bl
Y3Rpb24tYW5kLXZhcGktZ2VuZXIucGF0Y2giIHN0cmlwPSIxIi8+CisgICAgICA8cGF0Y2ggZmls
ZT0ibWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRj
aCIgc3RyaXA9IjEiLz4KKyAgICA8L2JyYW5jaD4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAg
PGRlcCBwYWNrYWdlPSJnbGliIi8+CisgICAgPC9kZXBlbmRlbmNpZXM+CisgIDwvbWVzb24+CisK
ICAgPGNtYWtlIGlkPSJvcGVuanBlZyI+CiAgICAgPGJyYW5jaCByZXBvPSJnaXRodWItdGFyYmFs
bCIKICAgICAgICAgICAgIG1vZHVsZT0idWNsb3V2YWluL29wZW5qcGVnL2FyY2hpdmUvdiR7dmVy
c2lvbn0udGFyLmd6IgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1idWls
ZC1TdXBwb3J0LWRpc2FibGluZy1pbnRyb3NwZWN0aW9uLWFuZC12YXBpLWdlbmVyLnBhdGNoIGIv
VG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1idWlsZC1TdXBwb3J0LWRpc2FibGluZy1pbnRyb3Nw
ZWN0aW9uLWFuZC12YXBpLWdlbmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkOGYzNmE2MTZiNjk4ZThj
ZDFiMTBmN2Y4ODMxYmQ2NzUxOGI1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9ndGsvcGF0
Y2hlcy9tYW5ldHRlLWJ1aWxkLVN1cHBvcnQtZGlzYWJsaW5nLWludHJvc3BlY3Rpb24tYW5kLXZh
cGktZ2VuZXIucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gYjU2MWJkMjlkODc5N2FlMmU3
MmQ0NWRmOGZjMTIyMTY0ZmM4OGI2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1h
cnQgUmF1ZHNlcHAgPGxlaW9AZ2VudG9vLm9yZz4KK0RhdGU6IFN1biwgMjAgT2N0IDIwMTkgMTQ6
NTc6NDMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFN1cHBvcnQgZGlzYWJsaW5nIGlu
dHJvc3BlY3Rpb24gYW5kIHZhcGkgZ2VuZXJhdGlvbgorCistLS0KKyBtZXNvbl9vcHRpb25zLnR4
dCB8IDE0ICsrKysrKysrKysrCisgc3JjL21lc29uLmJ1aWxkICAgfCA2NCArKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDkg
aW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRp
b25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCBhN2NlNzM4Li5jNzk0ZDRiIDEwMDY0
NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAt
NCwzICs0LDE3IEBAIG9wdGlvbiAoCisgICBkZXNjcmlwdGlvbjogJ0ZpbmQgZGV2aWNlcyB2aWEg
dWRldicsCisgICB2YWx1ZTogJ2F1dG8nCisgKQorKworK29wdGlvbiAoCisrICAnaW50cm9zcGVj
dGlvbicsCisrICB0eXBlOiAnYm9vbGVhbicsCisrICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIGlu
dHJvc3BlY3Rpb24gZGF0YSAocmVxdWlyZXMgZ29iamVjdC1pbnRyb3NwZWN0aW9uKScsCisrICB2
YWx1ZTogdHJ1ZQorKykKKysKKytvcHRpb24gKAorKyAgJ3ZhcGknLAorKyAgdHlwZTogJ2Jvb2xl
YW4nLAorKyAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSB2YXBpIGRhdGEgKHJlcXVpcmVzIHZhcGln
ZW4gYW5kIGludHJvc3BlY3Rpb24gb3B0aW9uKScsCisrICB2YWx1ZTogdHJ1ZQorKykKK2RpZmYg
LS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDdhYzkxNmIu
LjUwY2FkOTIgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9tZXNvbi5i
dWlsZAorQEAgLTkwLDM5ICs5MCw0NSBAQCBpZiBndWRldi5mb3VuZCgpCisgICBsaWJtYW5ldHRl
X2dpcl9pbmNsdWRlcyArPSBbICdHVWRldi0xLjAnIF0KKyBlbmRpZgorIAorLWxpYm1hbmV0dGVf
Z2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKAorLSAgbGlibWFuZXR0ZV9saWIsCistICBleHRyYV9h
cmdzOiBsaWJtYW5ldHRlX2dpcl9hcmdzLAorLSAgZXhwb3J0X3BhY2thZ2VzOiBsaWJtYW5ldHRl
X21vZHVsZSwKKy0gIHNvdXJjZXM6IGxpYm1hbmV0dGVfaGVhZGVycyArIGxpYm1hbmV0dGVfc291
cmNlcywKKy0gIG5zdmVyc2lvbjogYXBpX3ZlcnNpb24sCistICBuYW1lc3BhY2U6ICdNYW5ldHRl
JywKKy0gIGlkZW50aWZpZXJfcHJlZml4OiAnTWFuZXR0ZScsCistICBpbmNsdWRlczogbGlibWFu
ZXR0ZV9naXJfaW5jbHVkZXMsCistICBoZWFkZXI6IGxpYm1hbmV0dGVfbWFpbl9oZWFkZXIsCist
ICBpbnN0YWxsOiB0cnVlLAorLSAgc3ltYm9sX3ByZWZpeDogJ21hbmV0dGUnLAorLSkKKy0KKy1s
aWJtYW5ldHRlX3ZhcGlfcGFja2FnZXMgPSBbCistICAnZ29iamVjdC0yLjAnLAorLSAgJ2dpby0y
LjAnLAorLV0KKy0KKy1pZiBndWRldi5mb3VuZCgpCistICBsaWJtYW5ldHRlX3ZhcGlfcGFja2Fn
ZXMgKz0gWyAnZ3VkZXYtMS4wJyBdCisrYnVpbHRfZ2lycyA9IFtdCisraWYgZ2V0X29wdGlvbign
aW50cm9zcGVjdGlvbicpCisrICBsaWJtYW5ldHRlX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcigK
KysgICAgbGlibWFuZXR0ZV9saWIsCisrICAgIGV4dHJhX2FyZ3M6IGxpYm1hbmV0dGVfZ2lyX2Fy
Z3MsCisrICAgIGV4cG9ydF9wYWNrYWdlczogbGlibWFuZXR0ZV9tb2R1bGUsCisrICAgIHNvdXJj
ZXM6IGxpYm1hbmV0dGVfaGVhZGVycyArIGxpYm1hbmV0dGVfc291cmNlcywKKysgICAgbnN2ZXJz
aW9uOiBhcGlfdmVyc2lvbiwKKysgICAgbmFtZXNwYWNlOiAnTWFuZXR0ZScsCisrICAgIGlkZW50
aWZpZXJfcHJlZml4OiAnTWFuZXR0ZScsCisrICAgIGluY2x1ZGVzOiBsaWJtYW5ldHRlX2dpcl9p
bmNsdWRlcywKKysgICAgaGVhZGVyOiBsaWJtYW5ldHRlX21haW5faGVhZGVyLAorKyAgICBpbnN0
YWxsOiB0cnVlLAorKyAgICBzeW1ib2xfcHJlZml4OiAnbWFuZXR0ZScsCisrICApCisrICBidWls
dF9naXJzICs9IFsgbGlibWFuZXR0ZV9naXIgXQorKworKyAgaWYgZ2V0X29wdGlvbigndmFwaScp
CisrICAgIGxpYm1hbmV0dGVfdmFwaV9wYWNrYWdlcyA9IFsKKysgICAgICAnZ29iamVjdC0yLjAn
LAorKyAgICAgICdnaW8tMi4wJywKKysgICAgXQorKworKyAgICBpZiBndWRldi5mb3VuZCgpCisr
ICAgICAgbGlibWFuZXR0ZV92YXBpX3BhY2thZ2VzICs9IFsgJ2d1ZGV2LTEuMCcgXQorKyAgICBl
bmRpZgorKworKyAgICBnbm9tZS5nZW5lcmF0ZV92YXBpKAorKyAgICAgIGxpYm1hbmV0dGVfbW9k
dWxlLAorKyAgICAgIGluc3RhbGw6IHRydWUsCisrICAgICAgcGFja2FnZXM6IGxpYm1hbmV0dGVf
dmFwaV9wYWNrYWdlcywKKysgICAgICBzb3VyY2VzOiBsaWJtYW5ldHRlX2dpclswXSwKKysgICAg
KQorKyAgZW5kaWYKKyBlbmRpZgorIAorLWdub21lLmdlbmVyYXRlX3ZhcGkoCistICBsaWJtYW5l
dHRlX21vZHVsZSwKKy0gIGluc3RhbGw6IHRydWUsCistICBwYWNrYWdlczogbGlibWFuZXR0ZV92
YXBpX3BhY2thZ2VzLAorLSAgc291cmNlczogbGlibWFuZXR0ZV9naXJbMF0sCistKQorLQorIGxp
Ym1hbmV0dGVfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorICAgbGlua193aXRoOiBsaWJtYW5l
dHRlX2xpYiwKKy0gIHNvdXJjZXM6IGxpYm1hbmV0dGVfZ2lyLAorKyAgc291cmNlczogYnVpbHRf
Z2lycywKKyAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGNvbmZpbmMsCisgICBkZXBlbmRlbmNpZXM6
IGxpYm1hbmV0dGVfZGVwcywKKyApCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9Ub29scy9n
dGsvcGF0Y2hlcy9tYW5ldHRlLWV2ZW50LUF2b2lkLWZvcndhcmQtZGVjbGFyYXRpb24tZm9yLWVu
dW1zLnBhdGNoIGIvVG9vbHMvZ3RrL3BhdGNoZXMvbWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJk
LWRlY2xhcmF0aW9uLWZvci1lbnVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Y2M2FiMzYwNDQ5NDQy
ZjUwNjZmMzlkNmViNTBhNzNlMDBmMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3RrL3Bh
dGNoZXMvbWFuZXR0ZS1ldmVudC1Bdm9pZC1mb3J3YXJkLWRlY2xhcmF0aW9uLWZvci1lbnVtcy5w
YXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIGNmMjljYmZmNjRlYThhN2E4MzlhYzUzODg0Njhm
ZDA1ODZiOTRkMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ1Nlb2sgT2gg
PGNoYW5nc2Vva0BnYXRlY2guZWR1PgorRGF0ZTogVGh1LCAxOSBNYXIgMjAyMCAwNzo0NToyOSAt
MDQwMAorU3ViamVjdDogW1BBVENIXSBldmVudDogQXZvaWQgZm9yd2FyZCBkZWNsYXJhdGlvbiBm
b3IgZW51bXMKKworRml4IGEgY29tcGlsYXRpb24gZXJyb3Igd2l0aCBDKysuCisKK0ZpeGVzIGh0
dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9hcGxhemFzL2xpYm1hbmV0dGUvaXNzdWVzLzE0CistLS0K
KyBzcmMvbWFuZXR0ZS1ldmVudC5oICAgfCAxMSArKysrKy0tLS0tLQorIHNyYy9tYW5ldHRlLW1h
cHBpbmcuaCB8IDEwICsrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygr
KSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFuZXR0ZS1ldmVudC5oIGIv
c3JjL21hbmV0dGUtZXZlbnQuaAoraW5kZXggNGRkYmFlZi4uZGVkZDliMiAxMDA2NDQKKy0tLSBh
L3NyYy9tYW5ldHRlLWV2ZW50LmgKKysrKyBiL3NyYy9tYW5ldHRlLWV2ZW50LmgKK0BAIC0zMywx
MCArMzMsNiBAQCBHX0JFR0lOX0RFQ0xTCisgI2RlZmluZSBNQU5FVFRFX1RZUEVfRVZFTlRfVFlQ
RSAobWFuZXR0ZV9ldmVudF90eXBlX2dldF90eXBlICgpKQorIAorIHR5cGVkZWYgdW5pb24gIF9N
YW5ldHRlRXZlbnQgTWFuZXR0ZUV2ZW50OworLXR5cGVkZWYgZW51bSBfTWFuZXR0ZUV2ZW50VHlw
ZSBNYW5ldHRlRXZlbnRUeXBlOworLQorLUdUeXBlIG1hbmV0dGVfZXZlbnRfZ2V0X3R5cGUgKHZv
aWQpIEdfR05VQ19DT05TVDsKKy1HVHlwZSBtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKHZv
aWQpIEdfR05VQ19DT05TVDsKKyAKKyAvKioKKyAgKiBNYW5ldHRlRXZlbnRUeXBlOgorQEAgLTQ4
LDE0ICs0NCwxNyBAQCBHVHlwZSBtYW5ldHRlX2V2ZW50X3R5cGVfZ2V0X3R5cGUgKHZvaWQpIEdf
R05VQ19DT05TVDsKKyAgKgorICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQuCisg
ICovCistZW51bSBfTWFuZXR0ZUV2ZW50VHlwZSB7CisrdHlwZWRlZiBlbnVtIHsKKyAgIE1BTkVU
VEVfRVZFTlRfTk9USElORyA9IC0xLAorICAgTUFORVRURV9FVkVOVF9CVVRUT05fUFJFU1MgPSAw
LAorICAgTUFORVRURV9FVkVOVF9CVVRUT05fUkVMRUFTRSA9IDEsCisgICBNQU5FVFRFX0VWRU5U
X0FCU09MVVRFID0gMiwKKyAgIE1BTkVUVEVfRVZFTlRfSEFUID0gMywKKyAgIE1BTkVUVEVfTEFT
VF9FVkVOVCwKKy19OworK30gTWFuZXR0ZUV2ZW50VHlwZTsKKysKKytHVHlwZSBtYW5ldHRlX2V2
ZW50X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisrR1R5cGUgbWFuZXR0ZV9ldmVudF90
eXBlX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisgCisgTWFuZXR0ZUV2ZW50ICptYW5l
dHRlX2V2ZW50X2NvcHkgKGNvbnN0IE1hbmV0dGVFdmVudCAqc2VsZik7Cisgdm9pZCBtYW5ldHRl
X2V2ZW50X2ZyZWUgKE1hbmV0dGVFdmVudCAqc2VsZik7CitkaWZmIC0tZ2l0IGEvc3JjL21hbmV0
dGUtbWFwcGluZy5oIGIvc3JjL21hbmV0dGUtbWFwcGluZy5oCitpbmRleCBiNmMyYzVmLi41MTdl
MWNkIDEwMDY0NAorLS0tIGEvc3JjL21hbmV0dGUtbWFwcGluZy5oCisrKysgYi9zcmMvbWFuZXR0
ZS1tYXBwaW5nLmgKK0BAIC0zMiwyMSArMzIsMTkgQEAgR19CRUdJTl9ERUNMUworIAorIEdfREVD
TEFSRV9GSU5BTF9UWVBFIChNYW5ldHRlTWFwcGluZywgbWFuZXR0ZV9tYXBwaW5nLCBNQU5FVFRF
LCBNQVBQSU5HLCBHT2JqZWN0KQorIAorLXR5cGVkZWYgZW51bSBfTWFuZXR0ZU1hcHBpbmdJbnB1
dFR5cGUgTWFuZXR0ZU1hcHBpbmdJbnB1dFR5cGU7CistdHlwZWRlZiBlbnVtIF9NYW5ldHRlTWFw
cGluZ1JhbmdlIE1hbmV0dGVNYXBwaW5nUmFuZ2U7CisgdHlwZWRlZiBzdHJ1Y3QgX01hbmV0dGVN
YXBwaW5nQmluZGluZyBNYW5ldHRlTWFwcGluZ0JpbmRpbmc7CisgCistZW51bSBfTWFuZXR0ZU1h
cHBpbmdJbnB1dFR5cGUgeworK3R5cGVkZWYgZW51bSB7CisgICBNQU5FVFRFX01BUFBJTkdfSU5Q
VVRfVFlQRV9BWElTLAorICAgTUFORVRURV9NQVBQSU5HX0lOUFVUX1RZUEVfQlVUVE9OLAorICAg
TUFORVRURV9NQVBQSU5HX0lOUFVUX1RZUEVfSEFULAorLX07CisrfSBNYW5ldHRlTWFwcGluZ0lu
cHV0VHlwZTsKKyAKKy1lbnVtIF9NYW5ldHRlTWFwcGluZ1JhbmdlIHsKKyt0eXBlZGVmIGVudW0g
eworICAgTUFORVRURV9NQVBQSU5HX1JBTkdFX05FR0FUSVZFID0gLTEsCisgICBNQU5FVFRFX01B
UFBJTkdfUkFOR0VfRlVMTCA9IDAsCisgICBNQU5FVFRFX01BUFBJTkdfUkFOR0VfUE9TSVRJVkUg
PSAxLAorLX07CisrfSBNYW5ldHRlTWFwcGluZ1JhbmdlOworIAorIHN0cnVjdCBfTWFuZXR0ZU1h
cHBpbmdCaW5kaW5nIHsKKyAgIHN0cnVjdCB7CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzk0ZGRhMTk4YWMzMGEzYWJhZDc2MDFhYTE5ODE3
ODgxYTFiMjMwNS4uMzFkMTcwOTk5MTMzOTM1ODRkMGUxOTg3MzZhZDU2ZjczYzU3YjcyMCAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTA0LTAxICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBb
R1RLXSBJbXBsZW1lbnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQ
QUQgQVBJIHdpdGggbGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBw
b3J0IHRvIHRoZSBndGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxl
IEdPYmplY3QgZ2FtZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVj
dGlvbiBhbmQgaW5wdXQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21h
a2U6IEFkZGVkIHRvIGRldGVjdCBsaWJtYW5ldHRlIGhlYWRlcnMgYW5kIGxpYnMgaW5zdGFsbGVk
IGluIGhvc3Qgc3lzdGVtLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
OiBBZGRlZCBhIHByaXZhdGUgZmxhZywgRU5BQkxFX0dBTUVQQUQuCisgICAgICAgICAgT25jZSBs
aWJtYW5ldHRlIGlzIGZvdW5kLCB3ZSBleHBvc2UgYW5vdGhlciBidWlsZCBmbGFnLCBVU0VfTUFO
RVRURSBmb3Igb3RoZXIgcG9ydHMuCisKIDIwMjAtMDMtMzAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIENhbid0IGNyZWF0ZSBXZWJHTCBjb250
ZXh0IGFmdGVyIHIyNTkxMzkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396169</attachid>
            <date>2020-04-11 10:12:50 -0700</date>
            <delta_ts>2020-04-19 03:35:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200411131249.patch</filename>
            <type>text/plain</type>
            <size>36095</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzliYzk5YTM5N2Q5ZTA3
YjY4YjFjZDJkYzdkYjljNmZjNTQ4MTg5OC4uOGU1ZTdmZDU1ZGMwNWExMjU1NWY4ZTUwNGRiOGM5
NTI3NzRhYmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA0LTA5ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDQtMDkgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgZGVidWcg
d2syIF0gUkVHUkVTU0lPTihyMjU5NzYxKTogQVNTRVJUSU9OIEZBSUxFRDogIW5lZWRzTGF5b3V0
KCkgb24gZmFzdC9ldmVudHMvc2Nyb2xsLXN1YmZyYW1lLWluLXJlbmRlcmluZy11cGRhdGUuaHRt
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBlMGU5NGRhNTE5NWJjOGE2ZjA5ZWUxNWIxN2E1YWU5ZTMxMGM3ODk5Li40
YjZjNzQ4NTgyNjdjYTMwOTI5NjgxY2U0YTBmMmNhMjA0NDk4MzAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA0LTA5ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQg
ZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGggbGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBH
QU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBndGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisg
ICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2FtZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxl
IGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5wdXQuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6IEFk
ZCBhIGJ1aWxkIGZsYWcgdG8gdm9pZCBkZWZhdWx0IGludGVyZmFjZQorICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHA6IEFkZGVkIHRvIHJldHJp
ZXZlIFdlYlBhZ2VQcm94eSB0byB3aGljaAorICAgICAgICAgIGEgZ2FtZXBhZCBjb25uZWN0cy4g
VGhlIHJldHVybmVkIFdlYlBhZ2VQcm94eSBoYW5kbGVzIGlucHV0IGV2ZW50cyBmcm9tIHRoZSBn
YW1lcGFkLgorICAgICAgICAoV2ViS2l0OjpnZXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5w
dXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlk
ZXJNYW5ldHRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpV
SUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5wdXQpOgor
ICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmlu
Z0lucHV0KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3Rh
cnRNb25pdG9yaW5nSW5wdXQpOgorCiAyMDIwLTA0LTA5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5f
Z2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUG9wb3ZlcnMgYXJlIGRpc21pc3NlZCBpbW1l
ZGlhdGVseSB3aGVuIHRoZXkgdHJ5IGFuZCBicmluZyB1cCB0aGUga2V5Ym9hcmQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDA0N2FlMTI1ZmRkNDkyZmVjMmM3YWE5MzA2YzBmMWQzZjlk
NzhmODMuLmMwMjcxYTNiZGRlNjU4ZWY4Yjg3ZTdiZTkyNjU4NDU4MDgyMGVhZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNTksNiArMTU5LDE1IEBAIGlmIChFTkFCTEVfV0FZTEFO
RF9UQVJHRVQpCiAgICAgKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRV9HQU1FUEFEKQorICAgIGxp
c3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUworICAgICAgICBwbGF0
Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCisgICAgKQorICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAgIE1hbmV0dGU6Ok1hbmV0dGUK
KyAgICApCitlbmRpZiAoKQorCiBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQogICAgICR7V2Vi
Q29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5k
ZXggMTdiNTEzYjIyYjg1NzFmNDdmOWJmNmVjYTI5ZDU5YWUyMjRkNzYyMS4uOTBhNTkwYWY4Njcw
ZmZhNmQ1MWU0MTExMzY0MTAzN2RmMmJkMDY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY4
LDYgKzY4LDkgQEAgcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0
YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0
YS5jcHAKIAorcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAorcGxh
dGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuY3BwCisKIHBsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvR1VuaXF1ZVB0ck1hbmV0dGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MDAzN2Q0ZTIxYmQyMDQ5NGQyOThlMzgzMTFiYzM3OWZjZWE0NjA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJN
YW5ldHRlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgVVNFKE1BTkVUVEUpCisKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RF
RklORV9HUFRSX0RFTEVURVIoTWFuZXR0ZU1vbml0b3JJdGVyLCBtYW5ldHRlX21vbml0b3JfaXRl
cl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVTRShNQU5FVFRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M5ODhkMzU4NjNjMmI3MmY5MDQ3MzgzNjhj
YjI2NmU3ZGNmMDhjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWQu
aCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01hbmV0
dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZChNYW5ldHRlRGV2aWNlKiBkZXZpY2UsIHVuc2lnbmVk
IGluZGV4KQorICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQorICAgICwgbV9kZXZpY2UoYWRv
cHRHUmVmKHN0YXRpY19jYXN0PE1hbmV0dGVEZXZpY2UqPihnX29iamVjdF9yZWYoZGV2aWNlKSkp
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FN
RVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0
ZS9NYW5ldHRlR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL01hbmV0dGVHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc1ODM2ZjA5MDQ5N2JjYmM2MDJhZWZl
MzMyZjJiN2QyMTg1NTY5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1
ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgorCisjaW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkIDogcHVibGljIFBsYXRmb3Jt
R2FtZXBhZCB7CitwdWJsaWM6CisgICAgTWFuZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSosIHVu
c2lnbmVkIGluZGV4KTsKKworICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRv
dWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVz
OyB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxNYW5ldHRlRGV2aWNlPiBtX2RldmljZTsKKwor
ICAgIFZlY3Rvcjxkb3VibGU+IG1fYnV0dG9uVmFsdWVzOworICAgIFZlY3Rvcjxkb3VibGU+IG1f
YXhpc1ZhbHVlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYwNGZiNTFlYTEyODE1OWUxZGQzNDhkYmU3MDNkNTk3MDU1YzUyYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdh
bWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdVbmlxdWVQdHJNYW5ldHRlLmgiCisjaW5jbHVk
ZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRl
bGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsKKworTWFuZXR0ZUdhbWVwYWRQcm92aWRlciYgTWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TWFuZXR0ZUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNo
YXJlZFByb3ZpZGVyOworfQorCitzdGF0aWMgdm9pZCBvbkRldmljZUNvbm5lY3RlZChNYW5ldHRl
TW9uaXRvciosIE1hbmV0dGVEZXZpY2UqIGRldmljZSwgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciog
cHJvdmlkZXIpCit7CisgICAgaWYgKHByb3ZpZGVyKQorICAgICAgICBwcm92aWRlci0+ZGV2aWNl
Q29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVk
KE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURldmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBpZiAocHJvdmlkZXIpCisgICAgICAgIHByb3ZpZGVy
LT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNlKTsKK30KKworTWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigpCisgICAgOiBtX3Nob3VsZERpc3BhdGNoQ2FsbGJh
Y2tzKGZhbHNlKQorICAgICwgbV9tb25pdG9yKG1hbmV0dGVfbW9uaXRvcl9uZXcoKSkKKyAgICAs
IG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmTWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlvbkRlbGF5VGltZXJGaXJlZCkKK3sKKyAgICBnX3Np
Z25hbF9jb25uZWN0KEdfT0JKRUNUKG1fbW9uaXRvci5nZXQoKSksICJkZXZpY2UtY29ubmVjdGVk
IiwgR19DQUxMQkFDSyhvbkRldmljZUNvbm5lY3RlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QoR19PQkpFQ1QobV9tb25pdG9yLmdldCgpKSwgImRldmljZS1kaXNjb25uZWN0ZWQiLCBH
X0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVjdGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgTWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVy
Q2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2Vy
ID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5z
KCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgaWYgKHNob3Vs
ZE9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpIHsKKyAgICAgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rv
ci5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQobV9nYW1lcGFkTWFwLmlzRW1wdHkoKSk7CisK
KyAgICAgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IGZhbHNlOworICAgICAgICBtX2Nv
bm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZhbCk7
CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5n
R2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisKKyAgICBib29sIHNob3VsZENsb3NlQW5kVW5z
Y2hlZHVsZU1hbmFnZXIgPSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5p
c0VtcHR5KCk7CisgICAgaWYgKHNob3VsZENsb3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpIHsKKyAg
ICAgICAgbV9nYW1lcGFkVmVjdG9yLmNsZWFyKCk7CisgICAgICAgIG1fZ2FtZXBhZE1hcC5jbGVh
cigpOworICAgICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisK
K3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZp
Y2UqIGRldmljZSkKK3sKKyAgICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CisK
KyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVk
IiwgZGV2aWNlKTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4gZ2FtZXBhZCA9
IG1ha2VVbmlxdWU8TWFuZXR0ZUdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOworCisgICAgaWYgKG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5n
cm93KGluZGV4ICsgMSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdID0gZ2FtZXBhZC5n
ZXQoKTsKKyAgICBtX2dhbWVwYWRNYXAuc2V0KGRldmljZSwgV1RGTW92ZShnYW1lcGFkKSk7CisK
KyAgICBpZiAoIW1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MpIHsKKyAgICAgICAgLy8gVGhpcyBh
ZGRlZCBkZXZpY2UgaXMgdGhlIHJlc3VsdCBvZiB1cyBzdGFydGluZyB0byBtb25pdG9yIGdhbWVw
YWRzLgorICAgICAgICAvLyBXZSdsbCBnZXQgbm90aWZpZWQgb2YgYWxsIGNvbm5lY3RlZCBkZXZp
Y2VzIGR1cmluZyB0aGlzIGN1cnJlbnQgc3BpbiBvZiB0aGUgcnVubG9vcAorICAgICAgICAvLyBh
bmQgd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRoZSBjbGllbnQgYWJvdXQgYW55IG9mIHRoZW0uCisg
ICAgICAgIC8vIFRoZSBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyIGZpcmVzIGluIGEgc3Vic2VxdWVu
dCBzcGluIG9mIHRoZSBydW5sb29wIGFmdGVyIHdoaWNoCisgICAgICAgIC8vIGFueSBjb25uZWN0
aW9uIGV2ZW50cyBhcmUgYWN0dWFsIG5ldyBkZXZpY2VzLgorICAgICAgICBtX2Nvbm5lY3Rpb25E
ZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworCisgICAgICAgIExPRyhHYW1lcGFkLCAiRGV2
aWNlICVwIHdhcyBhZGRlZCB3aGlsZSBzdXBwcmVzc2luZyBjYWxsYmFja3MsIHNvIHRoaXMgc2hv
dWxkIGJlIGFuICdhbHJlYWR5IGNvbm5lY3RlZCcgZXZlbnQiLCBkZXZpY2UpOworCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3Rvcltp
bmRleF0pOworfQorCit2b2lkIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5l
Y3RlZChNYW5ldHRlRGV2aWNlKiBkZXZpY2UpCit7CisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRl
R2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4gcmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFk
Rm9yRGV2aWNlKGRldmljZSk7CisgICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIC8v
IEFueSB0aW1lIHdlIGdldCBhIGRldmljZSByZW1vdmVkIGNhbGxiYWNrIHdlIGtub3cgaXQncyBh
IHJlYWwgZXZlbnQgYW5kIG5vdCBhbiAnYWxyZWFkeSBjb25uZWN0ZWQnIGV2ZW50LgorICAgIC8v
IFdlIHNob3VsZCBhbHdheXMgc3RvcCBzdXBwcmVzc2luZyBjYWxsYmFja3Mgd2hlbiB3ZSByZWNl
aXZlIHN1Y2ggYW4gZXZlbnQuCisgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7
CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5w
bGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKK30KKwordW5zaWdu
ZWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgp
Cit7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBh
ZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRl
eDsKKworICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVy
Ojpjb25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKCkKK3sKKyAgICBtX3Nob3VsZERpc3BhdGNoQ2Fs
bGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQtPnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhtX2dhbWVwYWRWZWN0b3Ip
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IE1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoTWFuZXR0ZURldmljZSogZGV2aWNlKQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFw
LnRha2UoZGV2aWNlKTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKworICAgIGF1dG8gaSA9IG1fZ2Ft
ZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQoKSk7CisgICAgaWYgKGkgIT0gbm90Rm91bmQpCisg
ICAgICAgIG1fZ2FtZXBhZFZlY3RvcltpXSA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODhiODU5ZGU5
Y2VmM2MyNDZmYTA3YzkyODBmNWY5MDZiZmQ1MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5o
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxsaWJt
YW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkOworY2xh
c3MgR2FtZXBhZFByb3ZpZGVyQ2xpZW50OworCitjbGFzcyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVy
IDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFu
ZXR0ZUdhbWVwYWRQcm92aWRlcik7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50Jikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdh
bWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdh
bWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3Rv
cjsgfQorCisgICAgdm9pZCBkZXZpY2VDb25uZWN0ZWQoTWFuZXR0ZURldmljZSopOworICAgIHZv
aWQgZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqKTsKKworcHJpdmF0ZToKKyAgICBN
YW5ldHRlR2FtZXBhZFByb3ZpZGVyKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdh
bWVwYWQ+IHJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoTWFuZXR0ZURldmljZSopOworCisgICAgdW5z
aWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAgdm9pZCBjb25uZWN0
aW9uRGVsYXlUaW1lckZpcmVkKCk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9n
YW1lcGFkVmVjdG9yOworICAgIEhhc2hNYXA8TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0
cjxNYW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKKworICAgIGJvb2wgbV9zaG91bGREaXNw
YXRjaENhbGxiYWNrczsKKworICAgIEdVbmlxdWVQdHI8TWFuZXR0ZU1vbml0b3I+IG1fbW9uaXRv
cjsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29ubmVj
dGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRjZWU1
M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4MjlmOWI0
OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAKK1VJ
UHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAorCiBV
SVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9j
ZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5k
ZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0Mjg2
NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsyMjMs
NyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJR2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdhbWVw
YWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERhdGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAtMjQ0
LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9y
aW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFORVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTQ5ZjcxMGY4ZDg4MGI5YjZlNWYwZjNhMmYwMDc1MzE4MWY0MDdk
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3Rr
L1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdl
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBXZWJQYWdlUHJveHkqIGdldFdl
YlBhZ2VQcm94eShHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBpZiAoIXdpZGdldCB8fCAhR1RL
X0lTX0NPTlRBSU5FUih3aWRnZXQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlm
IChXRUJLSVRfSVNfV0VCX1ZJRVcod2lkZ2V0KSAmJiBndGtfd2lkZ2V0X2lzX3Zpc2libGUod2lk
Z2V0KSkKKyAgICAgICAgcmV0dXJuICZ3ZWJraXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJ
RVcod2lkZ2V0KSk7CisKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFp
bmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKHdpZGdldCkpKTsKKyAgICBmb3IgKEdMaXN0
KiBpdGVyID0gY2hpbGRyZW4uZ2V0KCk7IGl0ZXI7IGl0ZXI9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7
CisgICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19X
SURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAgICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworV2ViUGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5wdXQoKQoreworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRv
d1NlcnZlcikpOworCisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3df
bGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9yIChHTGlzdCogaXRlciA9IHRvcGxldmVscy5nZXQo
KTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgIGlmICghR1RLX0lT
X1dJTkRPVyhpdGVyLT5kYXRhKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEd0
a1dpbmRvdyogd2luZG93ID0gR1RLX1dJTkRPVyhpdGVyLT5kYXRhKTsKKyAgICAgICAgaWYgKCFn
dGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyh3aW5kb3cpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHko
R1RLX1dJREdFVCh3aW5kb3cpKSkKKyAgICAgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2Ft
ZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyY2Fi
MjgwYTY1YTU4NDRkNDg3MmJiNjk1MjNjNmY3NzMwNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFu
ZXR0ZS5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NYW5ldHRl
R2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQorewor
ICAgIGlmIChHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlzTW9ja0dhbWVwYWRQcm92aWRl
cigpKQorICAgICAgICByZXR1cm47CisKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFBy
b3ZpZGVyKE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKK30KKworI2lmICFQ
TEFURk9STShHVEspCitXZWJQYWdlUHJveHkqIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdl
YlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9Cisj
ZW5kaWYKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lu
cHV0KCkKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0
b3JpbmdJbnB1dCgpCit7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlIGIvU291cmNlL2NtYWtlL0Zp
bmRNYW5ldHRlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3Yjg1MzI0ZDQxNjBhODRhM2EwNzNkNmFlNDA4
MDlhOGEzNWE0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUu
Y21ha2UKQEAgLTAsMCArMSw5NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNbPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT1bLnJzdDoKK0ZpbmRNYW5ldHRlCistLS0tLS0tLS0tLQorCitGaW5kIE1hbmV0dGUgaGVhZGVy
cyBhbmQgbGlicmFyaWVzLgorCitJbXBvcnRlZCBUYXJnZXRzCiteXl5eXl5eXl5eXl5eXl5eCisK
K2BgTWFuZXR0ZTo6TWFuZXR0ZWBgCisgIFRoZSBNYW5ldHRlIGxpYnJhcnksIGlmIGZvdW5kLgor
CitSZXN1bHQgVmFyaWFibGVzCiteXl5eXl5eXl5eXl5eXl5eCisKK1RoaXMgd2lsbCBkZWZpbmUg
dGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciBwcm9qZWN0OgorCitgYE1hbmV0dGVfRk9V
TkRgYAorICB0cnVlIGlmICh0aGUgcmVxdWVzdGVkIHZlcnNpb24gb2YpIE1hbmV0dGUgaXMgYXZh
aWxhYmxlLgorYGBNYW5ldHRlX1ZFUlNJT05gYAorICB0aGUgdmVyc2lvbiBvZiBNYW5ldHRlLgor
YGBNYW5ldHRlX0xJQlJBUklFU2BgCisgIHRoZSBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IHRv
IHVzZSBNYW5ldHRlLgorYGBNYW5ldHRlX0lOQ0xVREVfRElSU2BgCisgIHdoZXJlIHRvIGZpbmQg
dGhlIE1hbmV0dGUgaGVhZGVycy4KK2BgTWFuZXR0ZV9DT01QSUxFX09QVElPTlNgYAorICB0aGlz
IHNob3VsZCBiZSBwYXNzZWQgdG8gdGFyZ2V0X2NvbXBpbGVfb3B0aW9ucygpLCBpZiB0aGUKKyAg
dGFyZ2V0IGlzIG5vdCB1c2VkIGZvciBsaW5raW5nCisKKyNdPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1dCisKK2Zp
bmRfcGFja2FnZShQa2dDb25maWcpCitwa2dfY2hlY2tfbW9kdWxlcyhQQ19NQU5FVFRFIG1hbmV0
dGUtMC4yKQorCitzZXQoTWFuZXR0ZV9DT01QSUxFX09QVElPTlMgJHtQQ19NQU5FVFRFX0NGTEFH
U19PVEhFUn0pCitzZXQoTWFuZXR0ZV9WRVJTSU9OICR7UENfTUFORVRURV9WRVJTSU9OfSkKKwor
ZmluZF9wYXRoKE1hbmV0dGVfSU5DTFVERV9ESVIKKyAgICBOQU1FUyBsaWJtYW5ldHRlLmgKKyAg
ICBISU5UUyAke1BDX01BTkVUVEVfSU5DTFVERURJUn0KKyAgICAgICAgICAke1BDX01BTkVUVEVf
SU5DTFVERV9ESVJTfQorKQorCitmaW5kX2xpYnJhcnkoTWFuZXR0ZV9MSUJSQVJZCisgICAgTkFN
RVMgbWFuZXR0ZS0wLjIKKyAgICBISU5UUyAke1BDX01BTkVUVEVfTElCRElSfQorICAgICAgICAg
ICR7UENfTUFORVRURV9MSUJSQVJZX0RJUlN9CispCisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5k
bGVTdGFuZGFyZEFyZ3MpCitmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFuZXR0
ZQorICAgIEZPVU5EX1ZBUiBNYW5ldHRlX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNYW5ldHRl
X0lOQ0xVREVfRElSIE1hbmV0dGVfTElCUkFSWQorICAgIFZFUlNJT05fVkFSIE1hbmV0dGVfVkVS
U0lPTgorKQorCitpZiAoTWFuZXR0ZV9MSUJSQVJZIEFORCBOT1QgVEFSR0VUIE1hbmV0dGU6Ok1h
bmV0dGUpCisgICAgYWRkX2xpYnJhcnkoTWFuZXR0ZTo6TWFuZXR0ZSBVTktOT1dOIElNUE9SVEVE
IEdMT0JBTCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTWFuZXR0ZTo6TWFuZXR0ZSBQUk9Q
RVJUSUVTCisgICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIke01hbmV0dGVfTElCUkFSWX0iCisg
ICAgICAgIElOVEVSRkFDRV9DT01QSUxFX09QVElPTlMgIiR7TWFuZXR0ZV9DT01QSUxFX09QVElP
TlN9IgorICAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtNYW5ldHRlX0lO
Q0xVREVfRElSfSIKKyAgICApCitlbmRpZiAoKQorCittYXJrX2FzX2FkdmFuY2VkKE1hbmV0dGVf
SU5DTFVERV9ESVIgTWFuZXR0ZV9MSUJSQVJZKQorCitpZiAoTWFuZXR0ZV9GT1VORCkKKyAgICBz
ZXQoTWFuZXR0ZV9MSUJSQVJJRVMgJHtNYW5ldHRlX0xJQlJBUll9KQorICAgIHNldChNYW5ldHRl
X0lOQ0xVREVfRElSUyAke01hbmV0dGVfSU5DTFVERV9ESVJ9KQorZW5kaWYgKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggNmZmOGMzOTkyMmE0ZjMxMjliNjg3YWUwZjlkMTVkZTNlZGM2NGUwMy4u
OTYwMTQ0NmExMDU4YzgzOTY5MzNlMTQ0MWRiZWFlYmU1OWIxNjgzMyAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTE2Miw2ICsxNjIsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPV05MT0FEX0FUVFJJQlVURSBQUklWQVRFIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSBQUklW
QVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUgT0ZGKQorV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dBTUVQQUQgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBQUklWQVRFIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUUkVBTSBQUklWQVRF
ICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCkBAIC0yMjQsNiArMjI1LDE0IEBAIGlm
IChVU0VfV1BFX1JFTkRFUkVSKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCitpZiAoRU5BQkxF
X0dBTUVQQUQpCisgICAgZmluZF9wYWNrYWdlKE1hbmV0dGUgMC4yLjQgUkVRVUlSRUQpCisgICAg
aWYgKE5PVCBNYW5ldHRlX0ZPVU5EKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJt
YW5ldHRlIGlzIHJlcXVpcmVkIGZvciBFTkFCTEVfR0FNRVBBRCIpCisgICAgZW5kaWYgKCkKKyAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUFORVRURSBUUlVFKQorZW5kaWYgKCkKKwog
aWYgKEVOQUJMRV9YU0xUKQogICAgIGZpbmRfcGFja2FnZShMaWJYc2x0IDEuMS43IFJFUVVJUkVE
KQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0ZGYyMDlhYmU3NDRhNjIwNTE3Y2JmMDdhMzI4MGU3NmFhMDNlYzIwLi4zZWU3NDUz
ZjE5ZjI5MTM1ZGQxN2NlODAyOGY1OWNmZTg4ZTZiNDU1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMDkg
IENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdIElt
cGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkg
d2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8g
dGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVj
dCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFu
ZCBpbnB1dC4KKyAgICAgICAgSW4gcGFydGljdWxhciwgd2UgdXNlIGxpYm1hbmV0dGUtMC4yLjQg
d2hpY2ggaXMgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCBtaW5pbXVtCisgICAgICAgIHZlcnNpb24g
dG8gYnVpbGQgaW4gYysrLgorCisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKwogMjAy
MC0wNC0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCBtdXN0IHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQu
CmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVp
bGQubW9kdWxlcwppbmRleCA3ZmNmNzA2ZDU1YWNlODZhYzRkMzg1M2RjY2ZkNjlmZmJhMzFhNGM4
Li5mNDk5NWUwODI5MGEwYjQ0NDcyMWZjNDNiNTM4NDNlZTg3M2I5MGI2IDEwMDY0NAotLS0gYS9U
b29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMK
QEAgLTI5LDYgKzI5LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0ibGlic2VjcmV0Ii8+CiAgICAg
ICA8ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJn
Y3J5cHQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ibWFuZXR0ZSIvPgogICAgICAgPGRlcCBwYWNr
YWdlPSJvcGVuanBlZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJ3cGViYWNrZW5kLWZkbyIvPgog
ICAgICAgPGlmIGNvbmRpdGlvbi1zZXQ9ImxpbnV4Ij4KQEAgLTQ0NSw2ICs0NDYsMTcgQEAKICAg
ICA8L2RlcGVuZGVuY2llcz4KICAgPC9hdXRvdG9vbHM+CiAKKyAgPG1lc29uIGlkPSJtYW5ldHRl
IiBtZXNvbmFyZ3M9Ii1EaW50cm9zcGVjdGlvbj1mYWxzZSAtRHZhcGk9ZmFsc2UiPgorICAgIDxi
cmFuY2ggcmVwbz0iZnRwLmdub21lLm9yZyIKKyAgICAgICAgICAgIG1vZHVsZT0iL3B1Yi9nbm9t
ZS9zb3VyY2VzL2xpYm1hbmV0dGUvMC4yL2xpYm1hbmV0dGUtMC4yLjQudGFyLnh6IgorICAgICAg
ICAgICAgdmVyc2lvbj0iMC4yLjQiCisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6NGZlMGE0YmVk
NmI0YzNhZTcyNDlkMzQxMDMxYzI3YjMyZjhkOWUwZmZiNTMzN2Q3MWNiY2VjNzE2MDM2MmNmNyI+
CisgICAgPC9icmFuY2g+CisgICAgPGRlcGVuZGVuY2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0i
Z2xpYiIvPgorICAgIDwvZGVwZW5kZW5jaWVzPgorICA8L21lc29uPgorCiAgIDxjbWFrZSBpZD0i
b3BlbmpwZWciPgogICAgIDxicmFuY2ggcmVwbz0iZ2l0aHViLXRhcmJhbGwiCiAgICAgICAgICAg
ICBtb2R1bGU9InVjbG91dmFpbi9vcGVuanBlZy9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwODg4NjhlZTEyMDU5ZTg3
OGE5ZGM4N2Q5ZmUwM2ExZjgwYTNhMzMzLi45M2FhOTM0N2QxYjkzMTk0MWMwOWFjN2VjM2Q0NWQ5
NDkyNjAxYTM3IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjAtMDQtMDkgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBl
dmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0aWFsIEdB
TUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAg
ICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBoYW5kbGUg
Z2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9G
aW5kTWFuZXR0ZS5jbWFrZTogQWRkZWQgdG8gZGV0ZWN0IGxpYm1hbmV0dGUgaGVhZGVycyBhbmQg
bGlicyBpbnN0YWxsZWQgaW4gaG9zdCBzeXN0ZW0uCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2U6IEFkZGVkIGEgcHJpdmF0ZSBmbGFnLCBFTkFCTEVfR0FNRVBBRC4KKyAg
ICAgICAgICBPbmNlIGxpYm1hbmV0dGUgaXMgZm91bmQsIHdlIGV4cG9zZSBhbm90aGVyIGJ1aWxk
IGZsYWcsIFVTRV9NQU5FVFRFIGZvciBvdGhlciBwb3J0cy4KKwogMjAyMC0wNC0wOCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJM
RV9JTlRMIGRlZmluZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396900</attachid>
            <date>2020-04-19 03:35:16 -0700</date>
            <delta_ts>2020-05-19 23:07:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200419063515.patch</filename>
            <type>text/plain</type>
            <size>35160</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgyMDI4N2E4YjE2MGEz
ZmMwZWNkZjZkYmJhNmYzZjA3MWE5MDRjMy4uMjg4NzNiNWRkYjA0MmNkNWVhZGM3MGMwNTQ3MmI0
YmEzZDg3Yzc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA0LTE4ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDQtMTggIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZp
eCB3YXRjaE9TIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA1OTM3YzA2Mjk5MWU1YzdmMDQyMjA0MDJiMjg4
Zjc4NjdmMmYxMTQuLmY1M2YyZGRiNzNlNDRjOGVhMTU1NGMwZTM0N2RlOWZhNjY4ZTZjNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDQtMTggIENoYW5nU2VvayBPaCAgPGNoYW5n
c2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5k
IGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGJy
aW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2Ug
bGlibWFuZXR0ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGli
cmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKworICAgICAgICAq
IFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lkIGRlZmF1bHQgaW50ZXJmYWNlCisg
ICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcDog
QWRkZWQgdG8gcmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdoaWNoCisgICAgICAgICAgYSBnYW1l
cGFkIGNvbm5lY3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVByb3h5IGhhbmRsZXMgaW5wdXQgZXZl
bnRzIGZyb20gdGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJLaXQ6OmdldFdlYlBhZ2VQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94
eUZvckdhbWVwYWRJbnB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9V
SUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisgICAg
ICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdh
bWVwYWRJbnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bVN0b3BNb25pdG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRl
cjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisKIDIwMjAtMDQtMTcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHNlcnZp
Y2Ugd29ya2VycyBmb3IgYXBwLWJvdW5kIGRvbWFpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggNWIzYTI3MTg2ZWYwMzhjMGY5NmE5YmU0MzMzZmYyM2Q0MmVjYzA2OS4uMWI3ODJiY2Y5
ODU1MjM2OTY5NWE3YWIzMGY1NzhkNWJlNGRkZmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTE2Myw2ICsxNjMsMTUgQEAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCkKICAgICAp
CiBlbmRpZiAoKQogCitpZiAoRU5BQkxFX0dBTUVQQUQpCisgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAgICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFu
ZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmgKKyAgICApCisgICAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9MSUJSQVJJRVMKKyAgICAgICAgTWFuZXR0ZTo6TWFuZXR0ZQorICAgICkKK2VuZGlmICgp
CisKIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNCiAgICAgJHtXZWJDb3JlX1NZU1RFTV9JTkNM
VURFX0RJUkVDVE9SSUVTfQogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dU
Sy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBlNDhjNDdiNzkwZjg2
MWQ3ODhhNjJkYjc3NGNiNWIyZDZkZDJiZDdlLi5iMzBjODliY2M3NDNhYTc3ZmJlODJlYWU5NzZk
YzVjMWRlMDQ1NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjgsNiArNjgsOSBAQCBwbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHAKIHBsYXRmb3JtL2Fkd2FpdGEvVGhlbWVBZHdhaXRhLmNwcAogCitwbGF0Zm9y
bS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCitwbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKKwogcGxhdGZvcm0vZ2VuZXJpYy9TY3Jv
bGxBbmltYXRvckdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAg
QG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvR1VuaXF1ZVB0ck1hbmV0dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFuZXR0ZS9HVW5pcXVlUHRyTWFuZXR0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwMDM3ZDRlMjFiZDIw
NDk0ZDI5OGUzODMxMWJjMzc5ZmNlYTQ2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvR1VuaXF1ZVB0ck1hbmV0dGUuaApAQCAtMCww
ICsxLDM1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBVU0Uo
TUFORVRURSkKKworI2luY2x1ZGUgPGxpYm1hbmV0dGUuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfREVGSU5FX0dQVFJfREVMRVRF
UihNYW5ldHRlTW9uaXRvckl0ZXIsIG1hbmV0dGVfbW9uaXRvcl9pdGVyX2ZyZWUpCisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVNFKE1BTkVUVEUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xOTE3OTYzZmY5NDI4MjVmNjBkMzM0ZmJhM2YwMDE2ZDhjMmYwMjAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRl
L01hbmV0dGVHYW1lcGFkLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYW5ldHRlR2FtZXBhZC5oIgorCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFuZXR0ZUdhbWVwYWQ6Ok1hbmV0
dGVHYW1lcGFkKE1hbmV0dGVEZXZpY2UqIGRldmljZSwgdW5zaWduZWQgaW5kZXgpCisgICAgOiBQ
bGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgLCBtX2RldmljZShkZXZpY2UpCit7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1l
cGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdh
bWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBhODU5YzZlNjgwNDEyMTI0ZWJmMjc1Yjg3M2NjYWRlMWIy
ZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiUGxhdGZvcm1H
YW1lcGFkLmgiCisKKyNpbmNsdWRlIDxsaWJtYW5ldHRlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTWFuZXR0ZUdhbWVwYWQgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFk
IHsKK3B1YmxpYzoKKyAgICBNYW5ldHRlR2FtZXBhZChNYW5ldHRlRGV2aWNlKiwgdW5zaWduZWQg
aW5kZXgpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYg
YnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KKwor
cHJpdmF0ZToKKyAgICBHUmVmUHRyPE1hbmV0dGVEZXZpY2U+IG1fZGV2aWNlOworCisgICAgVmVj
dG9yPGRvdWJsZT4gbV9idXR0b25WYWx1ZXM7CisgICAgVmVjdG9yPGRvdWJsZT4gbV9heGlzVmFs
dWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdB
TUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0
dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJk
N2FhMTkxZTQ3NGIxZGJmM2JmZWFhYmZiNDFiZGFlNDYyOWU3OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSAiR1VuaXF1ZVB0ck1hbmV0dGUuaCIKKyNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFu
ZXR0ZUdhbWVwYWQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgU2Vjb25kcyBjb25uZWN0aW9uRGVsYXlJbnRl
cnZhbCB7IDUwMF9tcyB9OworCitNYW5ldHRlR2FtZXBhZFByb3ZpZGVyJiBNYW5ldHRlR2FtZXBh
ZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVkUHJv
dmlkZXI7Cit9CisKK3N0YXRpYyB2b2lkIG9uRGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVNb25pdG9y
KiwgTWFuZXR0ZURldmljZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRl
cikKK3sKKyAgICBwcm92aWRlci0+ZGV2aWNlQ29ubmVjdGVkKGRldmljZSk7Cit9CisKK3N0YXRp
YyB2b2lkIG9uRGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVNb25pdG9yKiwgTWFuZXR0ZURldmlj
ZSogZGV2aWNlLCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBwcm92
aWRlci0+ZGV2aWNlRGlzY29ubmVjdGVkKGRldmljZSk7Cit9CisKK01hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXIoKQorICAgIDogbV9tb25pdG9yKG1hbmV0dGVf
bW9uaXRvcl9uZXcoKSkKKyAgICAsIG1fY29ubmVjdGlvbkRlbGF5VGltZXIoUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlvbkRlbGF5VGlt
ZXJGaXJlZCkKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbW9uaXRvci5nZXQoKSwgImRldmlj
ZS1jb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlQ29ubmVjdGVkKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdChtX21vbml0b3IuZ2V0KCksICJkZXZpY2UtZGlzY29ubmVjdGVkIiwg
R19DQUxMQkFDSyhvbkRldmljZURpc2Nvbm5lY3RlZCksIHRoaXMpOworfQorCit2b2lkIE1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRl
ckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgc2hvdWxkT3BlbkFuZFNjaGVkdWxlTWFuYWdl
ciA9IG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlu
cygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIGlmICghc2hv
dWxkT3BlbkFuZFNjaGVkdWxlTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KG1fZ2FtZXBhZFZlY3Rvci5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRNYXAuaXNF
bXB0eSgpKTsKKworICAgIG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSBmYWxzZTsKKyAgICBt
X2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0YXJ0T25lU2hvdChjb25uZWN0aW9uRGVsYXlJbnRlcnZh
bCk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1l
cGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAgIGJvb2wgc2hvdWxkQ2xvc2VBbmRVbnNjaGVk
dWxlTWFuYWdlciA9IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlzRW1w
dHkoKTsKKyAgICBpZiAoc2hvdWxkQ2xvc2VBbmRVbnNjaGVkdWxlTWFuYWdlcikgeworICAgICAg
ICBtX2dhbWVwYWRWZWN0b3IuY2xlYXIoKTsKKyAgICAgICAgbV9nYW1lcGFkTWFwLmNsZWFyKCk7
CisgICAgICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RvcCgpOworICAgIH0KK30KKwordm9p
ZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VDb25uZWN0ZWQoTWFuZXR0ZURldmljZSog
ZGV2aWNlKQoreworICAgIEFTU0VSVCghbV9nYW1lcGFkTWFwLmdldChkZXZpY2UpKTsKKworICAg
IExPRyhHYW1lcGFkLCAiTWFuZXR0ZUdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBk
ZXZpY2UpOworCisgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2
aWNlKCk7CisgICAgYXV0byBnYW1lcGFkID0gbWFrZVVuaXF1ZTxNYW5ldHRlR2FtZXBhZD4oZGV2
aWNlLCBpbmRleCk7CisKKyAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkK
KyAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsKKworICAgIG1fZ2FtZXBh
ZFZlY3RvcltpbmRleF0gPSBnYW1lcGFkLmdldCgpOworICAgIG1fZ2FtZXBhZE1hcC5zZXQoZGV2
aWNlLCBXVEZNb3ZlKGdhbWVwYWQpKTsKKworICAgIGlmICghbV9zaG91bGREaXNwYXRjaENhbGxi
YWNrcykgeworICAgICAgICAvLyBUaGlzIGFkZGVkIGRldmljZSBpcyB0aGUgcmVzdWx0IG9mIHVz
IHN0YXJ0aW5nIHRvIG1vbml0b3IgZ2FtZXBhZHMuCisgICAgICAgIC8vIFdlJ2xsIGdldCBub3Rp
ZmllZCBvZiBhbGwgY29ubmVjdGVkIGRldmljZXMgZHVyaW5nIHRoaXMgY3VycmVudCBzcGluIG9m
IHRoZSBydW5sb29wCisgICAgICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHRlbGwgdGhlIGNs
aWVudCBhYm91dCBhbnkgb2YgdGhlbS4KKyAgICAgICAgLy8gVGhlIG1fY29ubmVjdGlvbkRlbGF5
VGltZXIgZmlyZXMgaW4gYSBzdWJzZXF1ZW50IHNwaW4gb2YgdGhlIHJ1bmxvb3AgYWZ0ZXIgd2hp
Y2gKKyAgICAgICAgLy8gYW55IGNvbm5lY3Rpb24gZXZlbnRzIGFyZSBhY3R1YWwgbmV3IGRldmlj
ZXMuCisgICAgICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisK
KyAgICAgICAgTE9HKEdhbWVwYWQsICJEZXZpY2UgJXAgd2FzIGFkZGVkIHdoaWxlIHN1cHByZXNz
aW5nIGNhbGxiYWNrcywgc28gdGhpcyBzaG91bGQgYmUgYW4gJ2FscmVhZHkgY29ubmVjdGVkJyBl
dmVudCIsIGRldmljZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENv
bm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSk7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sK
KyAgICBMT0coR2FtZXBhZCwgIk1hbmV0dGVHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJlbW92
ZWQiLCBkZXZpY2UpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1hbmV0dGVHYW1lcGFkPiByZW1v
dmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNlKTsKKyAgICBBU1NFUlQo
cmVtb3ZlZEdhbWVwYWQpOworCisgICAgLy8gQW55IHRpbWUgd2UgZ2V0IGEgZGV2aWNlIHJlbW92
ZWQgY2FsbGJhY2sgd2Uga25vdyBpdCdzIGEgcmVhbCBldmVudCBhbmQgbm90IGFuICdhbHJlYWR5
IGNvbm5lY3RlZCcgZXZlbnQuCisgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBzdG9wIHN1cHByZXNz
aW5nIGNhbGxiYWNrcyB3aGVuIHdlIHJlY2VpdmUgc3VjaCBhbiBldmVudC4KKyAgICBtX3Nob3Vs
ZERpc3BhdGNoQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVt
b3ZlZEdhbWVwYWQpOworfQorCit1bnNpZ25lZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRWZWN0
b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2
b2lkIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQoKQor
eworICAgIG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOworCisgICAgZm9yIChhdXRv
KiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+c2V0SW5pdGlhbENvbm5lY3Rl
ZEdhbWVwYWRzKG1fZ2FtZXBhZFZlY3Rvcik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxNYW5ldHRl
R2FtZXBhZD4gTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZShN
YW5ldHRlRGV2aWNlKiBkZXZpY2UpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hbmV0dGVHYW1l
cGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2UpOworICAgIEFTU0VSVChyZXN1
bHQpOworCisgICAgYXV0byBpbmRleCA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3Jb
aW5kZXhdID0gbnVsbHB0cjsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzczNjNhM2I3ZTI1ODI2ZThiYzJkM2RjZGVkZjAw
MjlmNzkzMmY1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1
ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPGxpYm1hbmV0dGUuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWFuZXR0ZUdhbWVwYWQ7CitjbGFzcyBHYW1lcGFkUHJvdmlkZXJD
bGllbnQ7CisKK2NsYXNzIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgR2Ft
ZXBhZFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWFuZXR0ZUdhbWVwYWRQ
cm92aWRlcj47CitwdWJsaWM6CisgICAgc3RhdGljIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXImIHNp
bmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJv
dmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2Ft
ZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtR2Ft
ZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1lcGFkVmVjdG9y
OyB9CisKKyAgICB2b2lkIGRldmljZUNvbm5lY3RlZChNYW5ldHRlRGV2aWNlKik7CisgICAgdm9p
ZCBkZXZpY2VEaXNjb25uZWN0ZWQoTWFuZXR0ZURldmljZSopOworCitwcml2YXRlOgorICAgIE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXIoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYW5ldHRlR2Ft
ZXBhZD4gcmVtb3ZlR2FtZXBhZEZvckRldmljZShNYW5ldHRlRGV2aWNlKik7CisKKyAgICB1bnNp
Z25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisgICAgdm9pZCBjb25uZWN0aW9u
RGVsYXlUaW1lckZpcmVkKCk7CisKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1l
cGFkVmVjdG9yOworICAgIEhhc2hNYXA8TWFuZXR0ZURldmljZSosIHN0ZDo6dW5pcXVlX3B0cjxN
YW5ldHRlR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKKyAgICBib29sIG1fc2hvdWxkRGlzcGF0Y2hD
YWxsYmFja3MgeyBmYWxzZSB9OworCisgICAgR1VuaXF1ZVB0cjxNYW5ldHRlTW9uaXRvcj4gbV9t
b25pdG9yOworICAgIFJ1bkxvb3A6OlRpbWVyPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+IG1fY29u
bmVjdGlvbkRlbGF5VGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGViYTM0NjE0ZmUwZmRj
ZWU1M2MxZWRjNGU5NDBjNDFiYmQyNDAyN2MuLjg0MGJiNDRhYTNjZWNjMTdmMDRmMmY0YzA4Mjlm
OWI0OTM4YjJhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjEzLDYgKzIxMyw5IEBAIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKIAogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCiAKK1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5jcHAK
K1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAor
CiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQ
cm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
aW5kZXggZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYy4uYzZkZDRlMGI0
Mjg2NTQwM2ZlN2UwNjkxOTE1NjU5ODlhMTJkZGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTIyMyw3ICsy
MjMsNyBAQCBWZWN0b3I8R2FtZXBhZERhdGE+IFVJR2FtZXBhZFByb3ZpZGVyOjpzbmFwc2hvdEdh
bWVwYWRzKCkKICAgICByZXR1cm4gZ2FtZXBhZERhdGFzOwogfQogCi0jaWYgIVBMQVRGT1JNKENP
Q09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShNQU5FVFRFKQogCiB2b2lkIFVJR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogewpAQCAt
MjQ0LDcgKzI0NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25p
dG9yaW5nSW5wdXQoKQogewogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAv
LyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTUFORVRURSkKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRlckd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2d0ay9VSUdhbWVwYWRQcm92aWRl
ckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzZTQyM2RlOWNmNGNlZDEwOWI5OGU2YjcyODY3Mzk3MTEw
NTdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
Z3RrL1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgor
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0
aWVzLmg+CisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworc3RhdGljIFdlYlBhZ2VQcm94eSogZ2V0V2ViUGFnZVByb3h5KEd0a1dpZGdl
dCogd2lkZ2V0KQoreworICAgIGlmICghd2lkZ2V0IHx8ICFHVEtfSVNfQ09OVEFJTkVSKHdpZGdl
dCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKFdFQktJVF9JU19XRUJfVklF
Vyh3aWRnZXQpKQorICAgICAgICByZXR1cm4gZ3RrX3dpZGdldF9pc192aXNpYmxlKHdpZGdldCkg
PyAmd2Via2l0V2ViVmlld0dldFBhZ2UoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpIDogbnVsbHB0
cjsKKworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2No
aWxkcmVuKEdUS19DT05UQUlORVIod2lkZ2V0KSkpOworICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBj
aGlsZHJlbi5nZXQoKTsgaXRlcjsgaXRlcj0gZ19saXN0X25leHQoaXRlcikpIHsKKyAgICAgICAg
aWYgKFdlYlBhZ2VQcm94eSogcHJveHkgPSBnZXRXZWJQYWdlUHJveHkoR1RLX1dJREdFVChpdGVy
LT5kYXRhKSkpCisgICAgICAgICAgICByZXR1cm4gcHJveHk7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCitXZWJQYWdlUHJveHkqIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdl
YlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCgpCit7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gdG9w
bGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgZm9yIChHTGlzdCogaXRl
ciA9IHRvcGxldmVscy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7Cisg
ICAgICAgIGlmICghV2ViQ29yZTo6d2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KEdUS19X
SURHRVQoaXRlci0+ZGF0YSkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR3Rr
V2luZG93KiB3aW5kb3cgPSBHVEtfV0lORE9XKGl0ZXItPmRhdGEpOworICAgICAgICBpZiAoIWd0
a193aW5kb3dfaGFzX3RvcGxldmVsX2ZvY3VzKHdpbmRvdykpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiBwcm94eSA9IGdldFdlYlBhZ2VQcm94eShH
VEtfV0lER0VUKHdpbmRvdykpKQorICAgICAgICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1l
cGFkUHJvdmlkZXJNYW5ldHRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
bWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZDJjYWIy
ODBhNjVhNTg0NGQ0ODcyYmI2OTUyM2M2Zjc3MzA0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJNYW5l
dHRlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQp
CisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01hbmV0dGVH
YW1lcGFkUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCit7Cisg
ICAgaWYgKEdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuaXNNb2NrR2FtZXBhZFByb3ZpZGVy
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJv
dmlkZXIoTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworfQorCisjaWYgIVBM
QVRGT1JNKEdUSykKK1dlYlBhZ2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2Vi
UGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNl
bmRpZgorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5w
dXQoKQoreworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRv
cmluZ0lucHV0KCkKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmlu
ZE1hbmV0dGUuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzNGMwYTI0NDFhNmFhMjM5YTYwNGIxOTFhYzY3
YjlkZTc0Zjg4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kTWFuZXR0ZS5j
bWFrZQpAQCAtMCwwICsxLDcyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI1s9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVsucnN0OgorRmluZE1hbmV0dGUKKy0tLS0tLS0tLS0tCisKK0ZpbmQgTWFuZXR0ZSBoZWFkZXJz
IGFuZCBsaWJyYXJpZXMuCisKK0ltcG9ydGVkIFRhcmdldHMKK15eXl5eXl5eXl5eXl5eXl4KKwor
YGBNYW5ldHRlOjpNYW5ldHRlYGAKKyAgVGhlIE1hbmV0dGUgbGlicmFyeSwgaWYgZm91bmQuCisK
K1Jlc3VsdCBWYXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl4KKworVGhpcyB3aWxsIGRlZmluZSB0
aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3VyIHByb2plY3Q6CisKK2BgTWFuZXR0ZV9GT1VO
RGBgCisgIHRydWUgaWYgKHRoZSByZXF1ZXN0ZWQgdmVyc2lvbiBvZikgTWFuZXR0ZSBpcyBhdmFp
bGFibGUuCitgYE1hbmV0dGVfVkVSU0lPTmBgCisgIHRoZSB2ZXJzaW9uIG9mIE1hbmV0dGUuCitg
YE1hbmV0dGVfTElCUkFSSUVTYGAKKyAgdGhlIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgdG8g
dXNlIE1hbmV0dGUuCitgYE1hbmV0dGVfSU5DTFVERV9ESVJTYGAKKyAgd2hlcmUgdG8gZmluZCB0
aGUgTWFuZXR0ZSBoZWFkZXJzLgorYGBNYW5ldHRlX0NPTVBJTEVfT1BUSU9OU2BgCisgIHRoaXMg
c2hvdWxkIGJlIHBhc3NlZCB0byB0YXJnZXRfY29tcGlsZV9vcHRpb25zKCksIGlmIHRoZQorICB0
YXJnZXQgaXMgbm90IHVzZWQgZm9yIGxpbmtpbmcKKworI109PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PV0KKworZmlu
ZF9wYWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19jaGVja19tb2R1bGVzKFBDX01BTkVUVEUgSU1QT1JU
RURfVEFSR0VUIG1hbmV0dGUtMC4yKQorCitpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRh
cmRBcmdzKQorZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKE1hbmV0dGUKKyAgICBG
T1VORF9WQVIgTWFuZXR0ZV9GT1VORAorICAgIFJFUVVJUkVEX1ZBUlMgTWFuZXR0ZV9JTkNMVURF
X0RJUiBNYW5ldHRlX0xJQlJBUlkKKyAgICBWRVJTSU9OX1ZBUiBNYW5ldHRlX1ZFUlNJT04KKykK
KworaWYgKFRBUkdFVCBQa2dDb25maWc6OlBDX01BTkVUVEUgQU5EIE5PVCBUQVJHRVQgTWFuZXR0
ZTo6TWFuZXR0ZSkKKyAgICBhZGRfbGlicmFyeShNYW5ldHRlOjpNYW5ldHRlIElOVEVSRkFDRSBJ
TVBPUlRFRCBHTE9CQUwpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBNYW5ldHRlOjpNYW5ldHRl
IFBST1BFUlRZCisgICAgICAgIElOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyBQa2dDb25maWc6OlBD
X01BTkVUVEUKKyAgICApCitlbmRpZiAoKQorCittYXJrX2FzX2FkdmFuY2VkKE1hbmV0dGVfSU5D
TFVERV9ESVIgTWFuZXR0ZV9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBiYTE3ZTNj
ZTVhNWQ0NGM2NDUyZWY4M2UxNWFhNGExZmQzOWFiZDI4Li42YjA0MzllY2RmMWQxOGQxOWRiYzRk
NGJjYzViMTM2MjhhZjYzNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTcxLDYgKzE3MSw3
IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
RE9XTkxPQURfQVRUUklCVVRFIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9G
VFBESVIgUFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfR0FNRVBBRCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7
RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFM
X0ZFQVRVUkVTfSkKQEAgLTIzNyw2ICsyMzgsMTQgQEAgaWYgKFVTRV9XUEVfUkVOREVSRVIpCiAg
ICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBmaW5kX3Bh
Y2thZ2UoTWFuZXR0ZSAwLjIuNCBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIE1hbmV0dGVfRk9VTkQp
CisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYm1hbmV0dGUgaXMgcmVxdWlyZWQgZm9y
IEVOQUJMRV9HQU1FUEFEIikKKyAgICBlbmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9NQU5FVFRFIFRSVUUpCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1hTTFQpCiAgICAg
ZmluZF9wYWNrYWdlKExpYlhzbHQgMS4xLjcgUkVRVUlSRUQpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViOGM0MjVkYmVjZTgy
YzUwYjFlNjQyMjM4MGY4NDc5NmE1NDUwZmEuLjZjYzYxOTRkYzYyMjM2MjFjMjNmM2JhZjM1ODI2
NzQ1YTQzYjYzNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNC0xOCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdz
ZW9rQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQg
ZGlzY29ubmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJp
bmdzIGluaXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBs
aWJtYW5ldHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJy
YXJ5IHRvIGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorICAgICAgICBJbiBw
YXJ0aWN1bGFyLCB3ZSB1c2UgbGlibWFuZXR0ZS0wLjIuNCB3aGljaCBpcyB0aGUgbGF0ZXN0IHZl
cnNpb24gYW5kIG1pbmltdW0KKyAgICAgICAgdmVyc2lvbiB0byBidWlsZCBpbiBjKysuCisKKyAg
ICAgICAgKiBndGsvamhidWlsZC5tb2R1bGVzOgorCiAyMDIwLTA0LTE3ICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBzZXJ2aWNlIHdv
cmtlcnMgZm9yIGFwcC1ib3VuZCBkb21haW5zCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWls
ZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCA3ZmNmNzA2ZDU1YWNl
ODZhYzRkMzg1M2RjY2ZkNjlmZmJhMzFhNGM4Li5mNDk5NWUwODI5MGEwYjQ0NDcyMWZjNDNiNTM4
NDNlZTg3M2I5MGI2IDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBi
L1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTI5LDYgKzI5LDcgQEAKICAgICAgIDxkZXAg
cGFja2FnZT0ibGlic2VjcmV0Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIv
PgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJnY3J5cHQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0i
bWFuZXR0ZSIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJvcGVuanBlZyIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJ3cGViYWNrZW5kLWZkbyIvPgogICAgICAgPGlmIGNvbmRpdGlvbi1zZXQ9ImxpbnV4
Ij4KQEAgLTQ0NSw2ICs0NDYsMTcgQEAKICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9hdXRvdG9v
bHM+CiAKKyAgPG1lc29uIGlkPSJtYW5ldHRlIiBtZXNvbmFyZ3M9Ii1EaW50cm9zcGVjdGlvbj1m
YWxzZSAtRHZhcGk9ZmFsc2UiPgorICAgIDxicmFuY2ggcmVwbz0iZnRwLmdub21lLm9yZyIKKyAg
ICAgICAgICAgIG1vZHVsZT0iL3B1Yi9nbm9tZS9zb3VyY2VzL2xpYm1hbmV0dGUvMC4yL2xpYm1h
bmV0dGUtMC4yLjQudGFyLnh6IgorICAgICAgICAgICAgdmVyc2lvbj0iMC4yLjQiCisgICAgICAg
ICAgICBoYXNoPSJzaGEyNTY6NGZlMGE0YmVkNmI0YzNhZTcyNDlkMzQxMDMxYzI3YjMyZjhkOWUw
ZmZiNTMzN2Q3MWNiY2VjNzE2MDM2MmNmNyI+CisgICAgPC9icmFuY2g+CisgICAgPGRlcGVuZGVu
Y2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgorICAgIDwvZGVwZW5kZW5jaWVzPgor
ICA8L21lc29uPgorCiAgIDxjbWFrZSBpZD0ib3BlbmpwZWciPgogICAgIDxicmFuY2ggcmVwbz0i
Z2l0aHViLXRhcmJhbGwiCiAgICAgICAgICAgICBtb2R1bGU9InVjbG91dmFpbi9vcGVuanBlZy9h
cmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBkY2Q3OGI3OTk5ZDU5ZWU0ZjhiNTU3OGUzNjQ5NTIzYTA4ODA2YzQxLi42ZmEz
MjA0YTU3MTJhZTcwODA0MDBhMDczYWYzMTIxMGQ2NDhjYTNhIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMTggIENoYW5nU2Vv
ayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBj
b25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJt
YW5ldHRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzM4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGJyaW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBw
b3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNv
bnRyb2xsZXIgbGlicmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4K
KworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kTWFuZXR0ZS5jbWFrZTogQWRkZWQgdG8gZGV0
ZWN0IGxpYm1hbmV0dGUgaGVhZGVycyBhbmQgbGlicyBpbnN0YWxsZWQgaW4gaG9zdCBzeXN0ZW0u
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IEFkZGVkIGEgcHJpdmF0
ZSBmbGFnLCBFTkFCTEVfR0FNRVBBRC4KKyAgICAgICAgICBPbmNlIGxpYm1hbmV0dGUgaXMgZm91
bmQsIHdlIGV4cG9zZSBhbm90aGVyIGJ1aWxkIGZsYWcsIFVTRV9NQU5FVFRFIGZvciBvdGhlciBw
b3J0cy4KKwogMjAyMC0wNC0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gQWRkIFdlYktpdDo6V2ViQ29yZSB0YXJnZXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399815</attachid>
            <date>2020-05-19 23:07:13 -0700</date>
            <delta_ts>2020-05-20 08:58:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133854-20200520020712.patch</filename>
            <type>text/plain</type>
            <size>35305</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc4NWM0OTgzODgwYWY3
NDUwYWQ0MDRlNmQwMDJjMmE4ZjBkZTNhNC4uZTk5OWMwYjE2ZmVmZWMwZDg0ZTU5YWJjNDc4YjQ4
ZTY5OTVjYmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA1LTIwICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRvIHRoZSBn
dGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmplY3QgZ2Ft
ZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBhbmQgaW5w
dXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1FUEFEIEFQ
SSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0ZWQnCisg
ICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGltcGxlbWVu
dGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBl
eGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0dGUuCisg
ICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5l
dHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBvaW50ZXIg
Zm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9N
YW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0dGVEZXZp
Y2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVkIHBlciBh
IHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAgICBpdCBp
cyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2FtZXBhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBNYW5ldHRl
R2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9uaXRvciB0
aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdh
bWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
ICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0
dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmlj
ZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2FtZXBhZFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25E
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQcm92aWRl
cjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDUtMTkgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTk5
MzApOiBEaWN0YXRpb24gbWFya2VyIGF0IHN0YXJ0IG9mIHRleHQgaXMgcmVtb3ZlZCB3aGVuIGFk
ZGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMgY29sbGFwc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0ZjJkYmEy
MTJjNTU2MTI4YTM0YjYxMWMxNzc1OGM0MDNiODZkZDcuLjJmMzg4ZjU0ZTMxZGQxY2QxOGQ5OGJi
ZmUyMzQ5OTY5NmE2NDA3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMjAg
IENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdIElt
cGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkg
d2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8g
dGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVj
dCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFu
ZCBpbnB1dC4KKworICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDogQWRkIGEgYnVpbGQgZmxhZyB0byB2b2lk
IGRlZmF1bHQgaW50ZXJmYWNlCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2Ft
ZXBhZFByb3ZpZGVyR3RrLmNwcDogQWRkZWQgdG8gcmV0cmlldmUgV2ViUGFnZVByb3h5IHRvIHdo
aWNoCisgICAgICAgICAgYSBnYW1lcGFkIGNvbm5lY3RzLiBUaGUgcmV0dXJuZWQgV2ViUGFnZVBy
b3h5IGhhbmRsZXMgaW5wdXQgZXZlbnRzIGZyb20gdGhlIGdhbWVwYWQuCisgICAgICAgIChXZWJL
aXQ6OmdldFdlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdh
bWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQpOgorICAgICAgICAoV2Vi
S2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCk6CisK
IDIwMjAtMDUtMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBhbG1vc3QgYWx3YXlzIGluY29ycmVjdCBDb2xvcjo6Z2V0UkdCQQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCBhZDdhZGE1Y2RlZmFhYzE1ODVkNTk5ZWEwNDc2NDFhYjU3ZTlmOTA3
Li4zYjEzYTMxYzZjNWRjYmY2NzQ5ZmQ5YTE0ZjE4NTU2MTUwNTg0MDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtMTYyLDYgKzE2MiwxNSBAQCBpZiAoRU5BQkxFX1dBWUxBTkRfVEFS
R0VUKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBsaXN0KEFQ
UEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKKyAgICAgICAgcGxhdGZvcm0v
Z2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaAorICAgICkKKyAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgICBNYW5ldHRlOjpNYW5ldHRlCisgICAg
KQorZW5kaWYgKCkKKwogaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0KICAgICAke1dlYkNvcmVf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDRk
Y2ZmNzk5Zjg4ZDk1Yzk4OTY1OTY2NzNmNmMyODkxNmJkYjhiNDAuLjkzNmU2YTg1Y2I3OWY5NGUz
NjFhMjVlM2M2MzJkYzYxZjc2YjJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC02Nyw2ICs2
Nyw5IEBAIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIHBsYXRmb3JtL2Fkd2FpdGEvU2Ny
b2xsYmFyVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3Bw
CiAKK3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKK3BsYXRmb3Jt
L2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcAorCiBwbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFuZXR0ZS9HVW5pcXVlUHRyTWFuZXR0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAw
MzdkNGUyMWJkMjA0OTRkMjk4ZTM4MzExYmMzNzlmY2VhNDYwNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9HVW5pcXVlUHRyTWFuZXR0
ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBT
LkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIFVTRShNQU5FVFRFKQorCisjaW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKE1hbmV0dGVNb25pdG9ySXRlciwgbWFuZXR0ZV9tb25pdG9yX2l0ZXJfZnJl
ZSkKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoTUFORVRURSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0
ZUdhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MTc5NjNmZjk0MjgyNWY2MGQzMzRmYmEzZjAwMTZk
OGMyZjAyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFkLmgiCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYW5ldHRlR2Ft
ZXBhZDo6TWFuZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSogZGV2aWNlLCB1bnNpZ25lZCBpbmRl
eCkKKyAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZGV2aWNlKGRldmljZSkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQ
QUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
TWFuZXR0ZUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0
ZS9NYW5ldHRlR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MGE4NTljNmU2ODA0MTIxMjRlYmYyNzVi
ODczY2NhZGUxYjJkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybUdhbWVwYWQuaCIKKworI2luY2x1ZGUgPGxpYm1hbmV0dGUuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNYW5ldHRlR2FtZXBhZCBmaW5hbCA6IHB1YmxpYyBQbGF0
Zm9ybUdhbWVwYWQgeworcHVibGljOgorICAgIE1hbmV0dGVHYW1lcGFkKE1hbmV0dGVEZXZpY2Uq
LCB1bnNpZ25lZCBpbmRleCk7CisKKyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQorICAgIGNvbnN0IFZlY3Rv
cjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZh
bHVlczsgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8TWFuZXR0ZURldmljZT4gbV9kZXZpY2U7
CisKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKyAgICBWZWN0b3I8ZG91Ymxl
PiBtX2F4aXNWYWx1ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMmQ3YWExOTFlNDc0YjFkYmYzYmZlYWFiZmI0MWJkYWU0NjI5ZTc5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0
dGVHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHVW5pcXVlUHRyTWFuZXR0ZS5oIgorI2lu
Y2x1ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJNYW5ldHRlR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGNvbm5lY3Rp
b25EZWxheUludGVydmFsIHsgNTAwX21zIH07CisKK01hbmV0dGVHYW1lcGFkUHJvdmlkZXImIE1h
bmV0dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVy
biBzaGFyZWRQcm92aWRlcjsKK30KKworc3RhdGljIHZvaWQgb25EZXZpY2VDb25uZWN0ZWQoTWFu
ZXR0ZU1vbml0b3IqLCBNYW5ldHRlRGV2aWNlKiBkZXZpY2UsIE1hbmV0dGVHYW1lcGFkUHJvdmlk
ZXIqIHByb3ZpZGVyKQoreworICAgIHByb3ZpZGVyLT5kZXZpY2VDb25uZWN0ZWQoZGV2aWNlKTsK
K30KKworc3RhdGljIHZvaWQgb25EZXZpY2VEaXNjb25uZWN0ZWQoTWFuZXR0ZU1vbml0b3IqLCBN
YW5ldHRlRGV2aWNlKiBkZXZpY2UsIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXIqIHByb3ZpZGVyKQor
eworICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNlKTsKK30KKworTWFuZXR0
ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigpCisgICAgOiBtX21vbml0
b3IobWFuZXR0ZV9tb25pdG9yX25ldygpKQorICAgICwgbV9jb25uZWN0aW9uRGVsYXlUaW1lcihS
dW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0
aW9uRGVsYXlUaW1lckZpcmVkKQoreworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9tb25pdG9yLmdl
dCgpLCAiZGV2aWNlLWNvbm5lY3RlZCIsIEdfQ0FMTEJBQ0sob25EZXZpY2VDb25uZWN0ZWQpLCB0
aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbW9uaXRvci5nZXQoKSwgImRldmljZS1kaXNj
b25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVjdGVkKSwgdGhpcyk7Cit9CisK
K3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2Ft
ZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBzaG91bGRPcGVuQW5kU2No
ZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisg
ICAgaWYgKCFzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fZ2Ft
ZXBhZE1hcC5pc0VtcHR5KCkpOworCisgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IGZh
bHNlOworICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RhcnRPbmVTaG90KGNvbm5lY3Rpb25E
ZWxheUludGVydmFsKTsKK30KKwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9u
aXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRDbG9z
ZUFuZFVuc2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBtX2Ns
aWVudHMuaXNFbXB0eSgpOworICAgIGlmIChzaG91bGRDbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2Vy
KSB7CisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5jbGVhcigpOworICAgICAgICBtX2dhbWVwYWRN
YXAuY2xlYXIoKTsKKyAgICAgICAgbV9jb25uZWN0aW9uRGVsYXlUaW1lci5zdG9wKCk7CisgICAg
fQorfQorCit2b2lkIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZUNvbm5lY3RlZChNYW5l
dHRlRGV2aWNlKiBkZXZpY2UpCit7CisgICAgQVNTRVJUKCFtX2dhbWVwYWRNYXAuZ2V0KGRldmlj
ZSkpOworCisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRldmljZSAl
cCBhZGRlZCIsIGRldmljZSk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPE1hbmV0dGVH
YW1lcGFkPihkZXZpY2UsIGluZGV4KTsKKworICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgp
IDw9IGluZGV4KQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOworCisg
ICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGdhbWVwYWQuZ2V0KCk7CisgICAgbV9nYW1lcGFk
TWFwLnNldChkZXZpY2UsIFdURk1vdmUoZ2FtZXBhZCkpOworCisgICAgaWYgKCFtX3Nob3VsZERp
c3BhdGNoQ2FsbGJhY2tzKSB7CisgICAgICAgIC8vIFRoaXMgYWRkZWQgZGV2aWNlIGlzIHRoZSBy
ZXN1bHQgb2YgdXMgc3RhcnRpbmcgdG8gbW9uaXRvciBnYW1lcGFkcy4KKyAgICAgICAgLy8gV2Un
bGwgZ2V0IG5vdGlmaWVkIG9mIGFsbCBjb25uZWN0ZWQgZGV2aWNlcyBkdXJpbmcgdGhpcyBjdXJy
ZW50IHNwaW4gb2YgdGhlIHJ1bmxvb3AKKyAgICAgICAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8g
dGVsbCB0aGUgY2xpZW50IGFib3V0IGFueSBvZiB0aGVtLgorICAgICAgICAvLyBUaGUgbV9jb25u
ZWN0aW9uRGVsYXlUaW1lciBmaXJlcyBpbiBhIHN1YnNlcXVlbnQgc3BpbiBvZiB0aGUgcnVubG9v
cCBhZnRlciB3aGljaAorICAgICAgICAvLyBhbnkgY29ubmVjdGlvbiBldmVudHMgYXJlIGFjdHVh
bCBuZXcgZGV2aWNlcy4KKyAgICAgICAgbV9jb25uZWN0aW9uRGVsYXlUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKKworICAgICAgICBMT0coR2FtZXBhZCwgIkRldmljZSAlcCB3YXMgYWRkZWQgd2hp
bGUgc3VwcHJlc3NpbmcgY2FsbGJhY2tzLCBzbyB0aGlzIHNob3VsZCBiZSBhbiAnYWxyZWFkeSBj
b25uZWN0ZWQnIGV2ZW50IiwgZGV2aWNlKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdKTsKK30KKwordm9pZCBN
YW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VEaXNjb25uZWN0ZWQoTWFuZXR0ZURldmljZSog
ZGV2aWNlKQoreworICAgIExPRyhHYW1lcGFkLCAiTWFuZXR0ZUdhbWVwYWRQcm92aWRlciBkZXZp
Y2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFuZXR0ZUdh
bWVwYWQ+IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwor
ICAgIEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICAvLyBBbnkgdGltZSB3ZSBnZXQgYSBk
ZXZpY2UgcmVtb3ZlZCBjYWxsYmFjayB3ZSBrbm93IGl0J3MgYSByZWFsIGV2ZW50IGFuZCBub3Qg
YW4gJ2FscmVhZHkgY29ubmVjdGVkJyBldmVudC4KKyAgICAvLyBXZSBzaG91bGQgYWx3YXlzIHN0
b3Agc3VwcHJlc3NpbmcgY2FsbGJhY2tzIHdoZW4gd2UgcmVjZWl2ZSBzdWNoIGFuIGV2ZW50Lgor
ICAgIG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOworCisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29u
bmVjdGVkKCpyZW1vdmVkR2FtZXBhZCk7Cit9CisKK3Vuc2lnbmVkIE1hbmV0dGVHYW1lcGFkUHJv
dmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1f
Z2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAgICByZXR1cm4gaW5k
ZXg7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlvbkRlbGF5VGlt
ZXJGaXJlZCgpCit7CisgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7CisKKyAg
ICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5zZXRJbml0
aWFsQ29ubmVjdGVkR2FtZXBhZHMobV9nYW1lcGFkVmVjdG9yKTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPE1hbmV0dGVHYW1lcGFkPiBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpyZW1vdmVHYW1lcGFk
Rm9yRGV2aWNlKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWFuZXR0ZUdhbWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7CisgICAg
QVNTRVJUKHJlc3VsdCk7CisKKyAgICBhdXRvIGluZGV4ID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQo
cmVzdWx0LmdldCgpKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisgICAgICAgIG1fZ2Ft
ZXBhZFZlY3RvcltpbmRleF0gPSBudWxscHRyOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdh
bWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRl
L01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzM2M2EzYjdlMjU4MjZlOGJj
MmQzZGNkZWRmMDAyOWY3OTMyZjVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCww
ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8bGlibWFuZXR0ZS5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYW5ldHRlR2FtZXBhZDsKK2NsYXNzIEdhbWVw
YWRQcm92aWRlckNsaWVudDsKKworY2xhc3MgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBHYW1lcGFkUHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmV0
dGVHYW1lcGFkUHJvdmlkZXIpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxNYW5l
dHRlR2FtZXBhZFByb3ZpZGVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWFuZXR0ZUdhbWVwYWRQ
cm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRz
KEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdH
YW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8
UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dh
bWVwYWRWZWN0b3I7IH0KKworICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVEZXZpY2Uq
KTsKKyAgICB2b2lkIGRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKik7CisKK3ByaXZh
dGU6CisgICAgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcigpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1hbmV0dGVHYW1lcGFkPiByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKE1hbmV0dGVEZXZpY2UqKTsK
KworICAgIHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAgICB2b2lk
IGNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQoKTsKKworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVw
YWQqPiBtX2dhbWVwYWRWZWN0b3I7CisgICAgSGFzaE1hcDxNYW5ldHRlRGV2aWNlKiwgc3RkOjp1
bmlxdWVfcHRyPE1hbmV0dGVHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAgIGJvb2wgbV9zaG91
bGREaXNwYXRjaENhbGxiYWNrcyB7IGZhbHNlIH07CisKKyAgICBHVW5pcXVlUHRyPE1hbmV0dGVN
b25pdG9yPiBtX21vbml0b3I7CisgICAgUnVuTG9vcDo6VGltZXI8TWFuZXR0ZUdhbWVwYWRQcm92
aWRlcj4gbV9jb25uZWN0aW9uRGVsYXlUaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggN2Q3
ODQ1MDNmZWRhNWE5YTVmOTJmMmEyYzY2ZWQ0MjAzMzYwYzJjNS4uMmQ1YWFjOTUzYWJlZjIzZWE1
ZDAyMzNhZDBhNWJlOWFhNTk4NWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0yMjIsNiArMjIy
LDkgQEAgVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNw
cAogCiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKIAorVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3Zp
ZGVyR3RrLmNwcAorVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1h
bmV0dGUuY3BwCisKIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVy
LmNwcAogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFBy
b3ZpZGVyLmNwcAppbmRleCBmNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBj
Li5jNmRkNGUwYjQyODY1NDAzZmU3ZTA2OTE5MTU2NTk4OWExMmRkZGY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIFZlY3RvcjxHYW1lcGFkRGF0YT4gVUlHYW1lcGFkUHJvdmlkZXI6
OnNuYXBzaG90R2FtZXBhZHMoKQogICAgIHJldHVybiBnYW1lcGFkRGF0YXM7CiB9CiAKLSNpZiAh
UExBVEZPUk0oQ09DT0EpCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE1BTkVUVEUpCiAK
IHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRl
cigpCiB7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCiB7CiB9CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
KQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShNQU5FVFRFKQogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFBy
b3ZpZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2Ft
ZXBhZFByb3ZpZGVyR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNlNDIzZGU5Y2Y0Y2VkMTA5Yjk4ZTZi
NzI4NjczOTcxMTA1N2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9ndGsvVUlHYW1lcGFkUHJvdmlkZXJHdGsuY3BwCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZFBy
b3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgV2ViUGFnZVByb3h5KiBnZXRXZWJQYWdlUHJv
eHkoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgaWYgKCF3aWRnZXQgfHwgIUdUS19JU19DT05U
QUlORVIod2lkZ2V0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoV0VCS0lU
X0lTX1dFQl9WSUVXKHdpZGdldCkpCisgICAgICAgIHJldHVybiBndGtfd2lkZ2V0X2lzX3Zpc2li
bGUod2lkZ2V0KSA/ICZ3ZWJraXRXZWJWaWV3R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0
KSkgOiBudWxscHRyOworCisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRh
aW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUih3aWRnZXQpKSk7CisgICAgZm9yIChHTGlz
dCogaXRlciA9IGNoaWxkcmVuLmdldCgpOyBpdGVyOyBpdGVyPSBnX2xpc3RfbmV4dChpdGVyKSkg
eworICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiBwcm94eSA9IGdldFdlYlBhZ2VQcm94eShHVEtf
V0lER0VUKGl0ZXItPmRhdGEpKSkKKyAgICAgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1dlYlBhZ2VQcm94eSogVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCkKK3sKKyAgICBHVW5pcXVlUHRy
PEdMaXN0PiB0b3BsZXZlbHMoZ3RrX3dpbmRvd19saXN0X3RvcGxldmVscygpKTsKKyAgICBmb3Ig
KEdMaXN0KiBpdGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQo
aXRlcikpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjp3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxX
aW5kb3coR1RLX1dJREdFVChpdGVyLT5kYXRhKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBHdGtXaW5kb3cqIHdpbmRvdyA9IEdUS19XSU5ET1coaXRlci0+ZGF0YSk7CisgICAg
ICAgIGlmICghZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMod2luZG93KSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHByb3h5ID0gZ2V0V2Vi
UGFnZVByb3h5KEdUS19XSURHRVQod2luZG93KSkpCisgICAgICAgICAgICByZXR1cm4gcHJveHk7
CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvbWFu
ZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFuZXR0ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWRkMmNhYjI4MGE2NWE1ODQ0ZDQ4NzJiYjY5NTIzYzZmNzczMDQ1NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQ
cm92aWRlck1hbmV0dGUuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFC
TEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3Zp
ZGVyKCkKK3sKKyAgICBpZiAoR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pc01vY2tHYW1l
cGFkUHJvdmlkZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR2FtZXBhZFByb3ZpZGVyOjpz
ZXRTaGFyZWRQcm92aWRlcihNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7Cit9
CisKKyNpZiAhUExBVEZPUk0oR1RLKQorV2ViUGFnZVByb3h5KiBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5wdXQoKQoreworICAgIHJldHVybiBudWxs
cHRyOworfQorI2VuZGlmCisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1v
bml0b3JpbmdJbnB1dCgpCit7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U3RhcnRNb25pdG9yaW5nSW5wdXQoKQoreworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FN
RVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kTWFuZXR0ZS5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9GaW5kTWFuZXR0ZS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODM0YzBhMjQ0MWE2YWEyMzlh
NjA0YjE5MWFjNjdiOWRlNzRmODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0Zp
bmRNYW5ldHRlLmNtYWtlCkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjWz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Wy5yc3Q6CitGaW5kTWFuZXR0ZQorLS0tLS0tLS0tLS0KKworRmluZCBNYW5l
dHRlIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KKworSW1wb3J0ZWQgVGFyZ2V0cworXl5eXl5eXl5e
Xl5eXl5eXgorCitgYE1hbmV0dGU6Ok1hbmV0dGVgYAorICBUaGUgTWFuZXR0ZSBsaWJyYXJ5LCBp
ZiBmb3VuZC4KKworUmVzdWx0IFZhcmlhYmxlcworXl5eXl5eXl5eXl5eXl5eXgorCitUaGlzIHdp
bGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIHlvdXIgcHJvamVjdDoKKworYGBN
YW5ldHRlX0ZPVU5EYGAKKyAgdHJ1ZSBpZiAodGhlIHJlcXVlc3RlZCB2ZXJzaW9uIG9mKSBNYW5l
dHRlIGlzIGF2YWlsYWJsZS4KK2BgTWFuZXR0ZV9WRVJTSU9OYGAKKyAgdGhlIHZlcnNpb24gb2Yg
TWFuZXR0ZS4KK2BgTWFuZXR0ZV9MSUJSQVJJRVNgYAorICB0aGUgbGlicmFyaWVzIHRvIGxpbmsg
YWdhaW5zdCB0byB1c2UgTWFuZXR0ZS4KK2BgTWFuZXR0ZV9JTkNMVURFX0RJUlNgYAorICB3aGVy
ZSB0byBmaW5kIHRoZSBNYW5ldHRlIGhlYWRlcnMuCitgYE1hbmV0dGVfQ09NUElMRV9PUFRJT05T
YGAKKyAgdGhpcyBzaG91bGQgYmUgcGFzc2VkIHRvIHRhcmdldF9jb21waWxlX29wdGlvbnMoKSwg
aWYgdGhlCisgIHRhcmdldCBpcyBub3QgdXNlZCBmb3IgbGlua2luZworCisjXT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09XQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNrX21vZHVsZXMoUENfTUFO
RVRURSBJTVBPUlRFRF9UQVJHRVQgbWFuZXR0ZS0wLjIpCisKK2luY2x1ZGUoRmluZFBhY2thZ2VI
YW5kbGVTdGFuZGFyZEFyZ3MpCitmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoTWFu
ZXR0ZQorICAgIEZPVU5EX1ZBUiBNYW5ldHRlX0ZPVU5ECisgICAgUkVRVUlSRURfVkFSUyBNYW5l
dHRlX0lOQ0xVREVfRElSIE1hbmV0dGVfTElCUkFSWQorICAgIFZFUlNJT05fVkFSIE1hbmV0dGVf
VkVSU0lPTgorKQorCitpZiAoVEFSR0VUIFBrZ0NvbmZpZzo6UENfTUFORVRURSBBTkQgTk9UIFRB
UkdFVCBNYW5ldHRlOjpNYW5ldHRlKQorICAgIGFkZF9saWJyYXJ5KE1hbmV0dGU6Ok1hbmV0dGUg
SU5URVJGQUNFIElNUE9SVEVEIEdMT0JBTCkKKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIE1hbmV0
dGU6Ok1hbmV0dGUgUFJPUEVSVFkKKyAgICAgICAgSU5URVJGQUNFX0xJTktfTElCUkFSSUVTIFBr
Z0NvbmZpZzo6UENfTUFORVRURQorICAgICkKK2VuZGlmICgpCisKK21hcmtfYXNfYWR2YW5jZWQo
TWFuZXR0ZV9JTkNMVURFX0RJUiBNYW5ldHRlX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmlu
ZGV4IDFiMGJiNTNjZDhjM2RmMDA0ZjE3OTlmZTI3MTlkNTI5YzJkOGRjOWEuLjM3NjlkOGQzN2Uy
YWU5NWUzNjk5ZTlmOTNkMzA4NTAzODM2NjVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0x
NzcsNiArMTc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FTkNSWVBURURfTUVESUEgUFJJVkFURSAke0VOQUJM
RV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9HQU1FUEFEIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0dQVV9QUk9DRVNTIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9J
TlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQkxFX0VY
UEVSSU1FTlRBTF9GRUFUVVJFU30pCkBAIC0yNDQsNiArMjQ1LDE0IEBAIGlmIChVU0VfV1BFX1JF
TkRFUkVSKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCitpZiAoRU5BQkxFX0dBTUVQQUQpCisg
ICAgZmluZF9wYWNrYWdlKE1hbmV0dGUgMC4yLjQgUkVRVUlSRUQpCisgICAgaWYgKE5PVCBNYW5l
dHRlX0ZPVU5EKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJtYW5ldHRlIGlzIHJl
cXVpcmVkIGZvciBFTkFCTEVfR0FNRVBBRCIpCisgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5EX0VY
UE9TRV9UT19CVUlMRChVU0VfTUFORVRURSBUUlVFKQorZW5kaWYgKCkKKwogaWYgKEVOQUJMRV9Y
U0xUKQogICAgIGZpbmRfcGFja2FnZShMaWJYc2x0IDEuMS43IFJFUVVJUkVEKQogZW5kaWYgKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMzUw
ODY5MGU4ODQxOTZmMDUxM2VkMTg5YTQyOWUzMjdkY2FhODVkLi4yZDRhMzE4NzljMWZmOTMwNzk4
NWMzZjk0YTVlY2Q2MzY2MmFjNDYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMjAgIENoYW5nU2VvayBP
aCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjb25u
ZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBBRCBBUEkgd2l0aCBsaWJtYW5l
dHRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGJyaW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJIHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0
LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAgICAgICAgYSBzaW1wbGUgR09iamVjdCBnYW1lIGNvbnRy
b2xsZXIgbGlicmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBjb25uZWN0aW9uIGFuZCBpbnB1dC4KKyAg
ICAgICAgSW4gcGFydGljdWxhciwgd2UgdXNlIGxpYm1hbmV0dGUtMC4yLjQgd2hpY2ggaXMgdGhl
IGxhdGVzdCB2ZXJzaW9uIGFuZCBtaW5pbXVtCisgICAgICAgIHZlcnNpb24gdG8gYnVpbGQgaW4g
YysrLgorCisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKwogMjAyMC0wNS0xOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1OTkz
MCk6IERpY3RhdGlvbiBtYXJrZXIgYXQgc3RhcnQgb2YgdGV4dCBpcyByZW1vdmVkIHdoZW4gYWRk
ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBjb2xsYXBzZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0
ay9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCmluZGV4IDdmY2Y3
MDZkNTVhY2U4NmFjNGQzODUzZGNjZmQ2OWZmYmEzMWE0YzguLmY0OTk1ZTA4MjkwYTBiNDQ0NzIx
ZmM0M2I1Mzg0M2VlODczYjkwYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVs
ZXMKKysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpAQCAtMjksNiArMjksNyBAQAogICAg
ICAgPGRlcCBwYWNrYWdlPSJsaWJzZWNyZXQiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGliZ3Bn
LWVycm9yIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmdjcnlwdCIvPgorICAgICAgPGRlcCBw
YWNrYWdlPSJtYW5ldHRlIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9Im9wZW5qcGVnIi8+CiAgICAg
ICA8ZGVwIHBhY2thZ2U9IndwZWJhY2tlbmQtZmRvIi8+CiAgICAgICA8aWYgY29uZGl0aW9uLXNl
dD0ibGludXgiPgpAQCAtNDQ1LDYgKzQ0NiwxNyBAQAogICAgIDwvZGVwZW5kZW5jaWVzPgogICA8
L2F1dG90b29scz4KIAorICA8bWVzb24gaWQ9Im1hbmV0dGUiIG1lc29uYXJncz0iLURpbnRyb3Nw
ZWN0aW9uPWZhbHNlIC1EdmFwaT1mYWxzZSI+CisgICAgPGJyYW5jaCByZXBvPSJmdHAuZ25vbWUu
b3JnIgorICAgICAgICAgICAgbW9kdWxlPSIvcHViL2dub21lL3NvdXJjZXMvbGlibWFuZXR0ZS8w
LjIvbGlibWFuZXR0ZS0wLjIuNC50YXIueHoiCisgICAgICAgICAgICB2ZXJzaW9uPSIwLjIuNCIK
KyAgICAgICAgICAgIGhhc2g9InNoYTI1Njo0ZmUwYTRiZWQ2YjRjM2FlNzI0OWQzNDEwMzFjMjdi
MzJmOGQ5ZTBmZmI1MzM3ZDcxY2JjZWM3MTYwMzYyY2Y3Ij4KKyAgICA8L2JyYW5jaD4KKyAgICA8
ZGVwZW5kZW5jaWVzPgorICAgICAgPGRlcCBwYWNrYWdlPSJnbGliIi8+CisgICAgPC9kZXBlbmRl
bmNpZXM+CisgIDwvbWVzb24+CisKICAgPGNtYWtlIGlkPSJvcGVuanBlZyI+CiAgICAgPGJyYW5j
aCByZXBvPSJnaXRodWItdGFyYmFsbCIKICAgICAgICAgICAgIG1vZHVsZT0idWNsb3V2YWluL29w
ZW5qcGVnL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDI2MjllMjVmNzVmYzViYTNjMDBiMDFjODVkN2ZiNmUwYmUxNTlk
YzYuLmViYWFhNjg5NWZmMjJlYzU5NTljYmM3ZWI4MGEwNzUyMWMxNGI4NDcgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNS0yMCAg
Q2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0dUS10gSW1w
bGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29ubmVjdGVkIGV2ZW50cyBvZiBHQU1FUEFEIEFQSSB3
aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0
aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5ldHRlLAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0
IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRvIGhhbmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5k
IGlucHV0LgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlOiBBZGRl
ZCB0byBkZXRlY3QgbGlibWFuZXR0ZSBoZWFkZXJzIGFuZCBsaWJzIGluc3RhbGxlZCBpbiBob3N0
IHN5c3RlbS4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogQWRkZWQg
YSBwcml2YXRlIGZsYWcsIEVOQUJMRV9HQU1FUEFELgorICAgICAgICAgIE9uY2UgbGlibWFuZXR0
ZSBpcyBmb3VuZCwgd2UgZXhwb3NlIGFub3RoZXIgYnVpbGQgZmxhZywgVVNFX01BTkVUVEUgZm9y
IG90aGVyIHBvcnRzLgorCiAyMDIwLTA1LTE4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIEFsbG93IGd0ay1kb2MgYW5kIGludHJvc3Bl
Y3Rpb24gaW4gY3Jvc3MgYnVpbGRzCg==
</data>
<flag name="review"
          id="415228"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399882</attachid>
            <date>2020-05-20 13:12:01 -0700</date>
            <delta_ts>2020-05-20 15:33:41 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>bug-133854-20200520161200.patch</filename>
            <type>text/plain</type>
            <size>35297</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmNDg5OWRhNThlYmFi
ZDliN2Q4YzljZGJhMDdlY2VlNTEyN2I0My4uZDk3OWU1NmI2NWNmYzMxZDYxZDI4OGYyYzNhY2Fj
YjAwNjg1NTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTA1LTIwICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRv
IHRoZSBndGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmpl
Y3QgZ2FtZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBh
bmQgaW5wdXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFpbXMgdG8gaW1wbGVtZW50IHR3byBHQU1F
UEFEIEFQSSBldmVudHM6ICdnYW1lcGFkY29ubmVjdGVkJyBhbmQgJ2dhbWVwYWRkaXNjb25uZWN0
ZWQnCisgICAgICAgIG9uIHRvcCBvZiBsaWJtYW5ldHRlLiBSZXN0IG9mIEFQSSB3aWxsIGJlIGlt
cGxlbWVudGVkIGJ5IGZvbGxvd2luZyBwYXRjaGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBz
aW5jZSBleGlzdGluZyB0ZXN0cyBjYW4gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZTogQWRkIGhlYWRlciAmIGxpYnJhcnkgcGF0aHMgZm9yIGxpYm1hbmV0
dGUuCisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmg6IEFkZGVkIHRvIGRlZmluZSBhIHNtYXJ0IHBv
aW50ZXIgZm9yIE1hbmV0dGVNb25pdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFu
ZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHA6IEFkZGVkLiBBIHdyYXBwZXIgY2xhc3MgZm9yIE1hbmV0
dGVEZXZpY2UuCisgICAgICAgICAgQSBNYW5ldHRlR2FtZXBhZCBpbnN0YW5jZSBpcyBjcmVhdGVk
IHBlciBhIHBoeXNpY2FsbHkgY29ubmVjdGVkIGdhbWVwYWQuIEN1cnJlbnRseSwKKyAgICAgICAg
ICBpdCBpcyBlbXB0eSBidXQgaW5wdXQgaGFuZGxpbmcgbG9naW4gd2lsbCBiZSBwbGFjZWQgaW4g
dGhpcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkOjpNYW5ldHRlR2Ft
ZXBhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFk
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2Ft
ZXBhZFByb3ZpZGVyLmNwcDogQWRkZWQuIEEgbWFuYWdlciBjbGFzcworICAgICAgICAgIGZvciBN
YW5ldHRlR2FtZXBhZCBpbnN0YW5jZXMuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBNYW5ldHRlTW9u
aXRvciB0aGF0CisgICAgICAgICAgaGFuZGxlcyBjb25uZWN0aW9uIGFuZCBkaXNjb25uZWN0aW9u
IG9mIGdhbWVwYWRzLiBNYW55IHBhcnRzIG9mIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgICBpcyBicm91Z2h0IGZyb20gSElER2FtZXBhZC5jcHAKKyAgICAgICAgKFdlYkNvcmU6
Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpv
bkRldmljZUNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpvbkRldmljZURpc2Nvbm5lY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpNYW5ldHRlR2Ft
ZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6
OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1l
cGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVk
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmNvbm5l
Y3Rpb25EZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFuZXR0ZUdhbWVwYWRQ
cm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2Ft
ZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisKIDIwMjAtMDUt
MjAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aVBhZE9TXSAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6cGVyY2VudGFnZSBkb2Vzbid0IHdvcmsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTM4OWM1YjE1Mzk3N2FhZWJkM2FiYWIwZGViMTY1OTM4ZWFlNzdiYy4uNGYz
NjdlOTE4OTFiNjE1ZTA3YzJiODY4YWVhMWJlNzA1MGQ3OTUxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAyMC0wNS0yMCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IGNvbm5lY3RlZCBhbmQgZGlzY29ubmVjdGVkIGV2
ZW50cyBvZiBHQU1FUEFEIEFQSSB3aXRoIGxpYm1hbmV0dGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRp
YWwgR0FNRVBBRCBBUEkgc3VwcG9ydCB0byB0aGUgZ3RrIHBvcnQuIFdlIHVzZSBsaWJtYW5ldHRl
LAorICAgICAgICBhIHNpbXBsZSBHT2JqZWN0IGdhbWUgY29udHJvbGxlciBsaWJyYXJ5IHRvIGhh
bmRsZSBnYW1lcGFkIGNvbm5lY3Rpb24gYW5kIGlucHV0LgorCisgICAgICAgICogU291cmNlc0dU
Sy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3Bw
OiBBZGQgYSBidWlsZCBmbGFnIHRvIHZvaWQgZGVmYXVsdCBpbnRlcmZhY2UKKyAgICAgICAgKiBV
SVByb2Nlc3MvR2FtZXBhZC9ndGsvVUlHYW1lcGFkUHJvdmlkZXJHdGsuY3BwOiBBZGRlZCB0byBy
ZXRyaWV2ZSBXZWJQYWdlUHJveHkgdG8gd2hpY2gKKyAgICAgICAgICBhIGdhbWVwYWQgY29ubmVj
dHMuIFRoZSByZXR1cm5lZCBXZWJQYWdlUHJveHkgaGFuZGxlcyBpbnB1dCBldmVudHMgZnJvbSB0
aGUgZ2FtZXBhZC4KKyAgICAgICAgKFdlYktpdDo6Z2V0V2ViUGFnZVByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBh
ZElucHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFBy
b3ZpZGVyTWFuZXR0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0
KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0
b3JpbmdJbnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bVN0YXJ0TW9uaXRvcmluZ0lucHV0KToKKwogMjAyMC0wNS0yMCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpUGFkT1NdIC13ZWJraXQtdGV4dC1z
aXplLWFkanVzdDpwZXJjZW50YWdlIGRvZXNuJ3Qgd29yayBpbiBuYXRpdmUgYXBwcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhZDdhZGE1Y2RlZmFhYzE1ODVkNTk5ZWEwNDc2NDFhYjU3
ZTlmOTA3Li4zYjEzYTMxYzZjNWRjYmY2NzQ5ZmQ5YTE0ZjE4NTU2MTUwNTg0MDRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTYyLDYgKzE2MiwxNSBAQCBpZiAoRU5BQkxFX1dBWUxB
TkRfVEFSR0VUKQogICAgICkKIGVuZGlmICgpCiAKK2lmIChFTkFCTEVfR0FNRVBBRCkKKyAgICBs
aXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKKyAgICAgICAgcGxh
dGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaAorICAgICkKKyAg
ICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgICBNYW5ldHRlOjpNYW5ldHRl
CisgICAgKQorZW5kaWYgKCkKKwogaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0KICAgICAke1dl
YkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IDRkY2ZmNzk5Zjg4ZDk1Yzk4OTY1OTY2NzNmNmMyODkxNmJkYjhiNDAuLjkzNmU2YTg1Y2I3
OWY5NGUzNjFhMjVlM2M2MzJkYzYxZjc2YjJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC02
Nyw2ICs2Nyw5IEBAIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIHBsYXRmb3JtL2Fkd2Fp
dGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2Fp
dGEuY3BwCiAKK3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKK3Bs
YXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcAorCiBwbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhp
Y3MvR0xDb250ZXh0LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9HVW5pcXVlUHRyTWFuZXR0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL0dVbmlxdWVQdHJNYW5ldHRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjAwMzdkNGUyMWJkMjA0OTRkMjk4ZTM4MzExYmMzNzlmY2VhNDYwNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9HVW5pcXVlUHRy
TWFuZXR0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIFVTRShNQU5FVFRFKQorCisjaW5jbHVkZSA8bGlibWFuZXR0ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9E
RUZJTkVfR1BUUl9ERUxFVEVSKE1hbmV0dGVNb25pdG9ySXRlciwgbWFuZXR0ZV9tb25pdG9yX2l0
ZXJfZnJlZSkKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoTUFORVRURSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5l
dHRlR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUv
TWFuZXR0ZUdhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MTc5NjNmZjk0MjgyNWY2MGQzMzRmYmEz
ZjAwMTZkOGMyZjAyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hbmV0dGVHYW1lcGFk
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNYW5l
dHRlR2FtZXBhZDo6TWFuZXR0ZUdhbWVwYWQoTWFuZXR0ZURldmljZSogZGV2aWNlLCB1bnNpZ25l
ZCBpbmRleCkKKyAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAsIG1fZGV2aWNlKGRl
dmljZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
bmV0dGUvTWFuZXR0ZUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MGE4NTljNmU2ODA0MTIxMjRl
YmYyNzViODczY2NhZGUxYjJkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuaApAQCAtMCwwICsxLDU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNp
bmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIKKworI2luY2x1ZGUgPGxpYm1hbmV0dGUuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYW5ldHRlR2FtZXBhZCBmaW5hbCA6IHB1Ymxp
YyBQbGF0Zm9ybUdhbWVwYWQgeworcHVibGljOgorICAgIE1hbmV0dGVHYW1lcGFkKE1hbmV0dGVE
ZXZpY2UqLCB1bnNpZ25lZCBpbmRleCk7CisKKyAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhp
c1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQorICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1
dHRvblZhbHVlczsgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8TWFuZXR0ZURldmljZT4gbV9k
ZXZpY2U7CisKKyAgICBWZWN0b3I8ZG91YmxlPiBtX2J1dHRvblZhbHVlczsKKyAgICBWZWN0b3I8
ZG91YmxlPiBtX2F4aXNWYWx1ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMmQ3YWExOTFlNDc0YjFkYmYzYmZlYWFiZmI0MWJkYWU0NjI5ZTc5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRl
L01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5o
IgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHVW5pcXVlUHRyTWFuZXR0ZS5o
IgorI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJNYW5ldHRlR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGNv
bm5lY3Rpb25EZWxheUludGVydmFsIHsgNTAwX21zIH07CisKK01hbmV0dGVHYW1lcGFkUHJvdmlk
ZXImIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAg
IHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30KKworc3RhdGljIHZvaWQgb25EZXZpY2VDb25uZWN0
ZWQoTWFuZXR0ZU1vbml0b3IqLCBNYW5ldHRlRGV2aWNlKiBkZXZpY2UsIE1hbmV0dGVHYW1lcGFk
UHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIHByb3ZpZGVyLT5kZXZpY2VDb25uZWN0ZWQoZGV2
aWNlKTsKK30KKworc3RhdGljIHZvaWQgb25EZXZpY2VEaXNjb25uZWN0ZWQoTWFuZXR0ZU1vbml0
b3IqLCBNYW5ldHRlRGV2aWNlKiBkZXZpY2UsIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXIqIHByb3Zp
ZGVyKQoreworICAgIHByb3ZpZGVyLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNlKTsKK30KKwor
TWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6TWFuZXR0ZUdhbWVwYWRQcm92aWRlcigpCisgICAgOiBt
X21vbml0b3IobWFuZXR0ZV9tb25pdG9yX25ldygpKQorICAgICwgbV9jb25uZWN0aW9uRGVsYXlU
aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpj
b25uZWN0aW9uRGVsYXlUaW1lckZpcmVkKQoreworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9tb25p
dG9yLmdldCgpLCAiZGV2aWNlLWNvbm5lY3RlZCIsIEdfQ0FMTEJBQ0sob25EZXZpY2VDb25uZWN0
ZWQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbW9uaXRvci5nZXQoKSwgImRldmlj
ZS1kaXNjb25uZWN0ZWQiLCBHX0NBTExCQUNLKG9uRGV2aWNlRGlzY29ubmVjdGVkKSwgdGhpcyk7
Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBzaG91bGRPcGVu
QW5kU2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCgh
bV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQp
OworCisgICAgaWYgKCFzaG91bGRPcGVuQW5kU2NoZWR1bGVNYW5hZ2VyKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLmlzRW1wdHkoKSk7CisgICAgQVNTRVJU
KG1fZ2FtZXBhZE1hcC5pc0VtcHR5KCkpOworCisgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNr
cyA9IGZhbHNlOworICAgIG1fY29ubmVjdGlvbkRlbGF5VGltZXIuc3RhcnRPbmVTaG90KGNvbm5l
Y3Rpb25EZWxheUludGVydmFsKTsKK30KKwordm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpz
dG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQorewor
ICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91
bGRDbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAm
JiBtX2NsaWVudHMuaXNFbXB0eSgpOworICAgIGlmIChzaG91bGRDbG9zZUFuZFVuc2NoZWR1bGVN
YW5hZ2VyKSB7CisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5jbGVhcigpOworICAgICAgICBtX2dh
bWVwYWRNYXAuY2xlYXIoKTsKKyAgICAgICAgbV9jb25uZWN0aW9uRGVsYXlUaW1lci5zdG9wKCk7
CisgICAgfQorfQorCit2b2lkIE1hbmV0dGVHYW1lcGFkUHJvdmlkZXI6OmRldmljZUNvbm5lY3Rl
ZChNYW5ldHRlRGV2aWNlKiBkZXZpY2UpCit7CisgICAgQVNTRVJUKCFtX2dhbWVwYWRNYXAuZ2V0
KGRldmljZSkpOworCisgICAgTE9HKEdhbWVwYWQsICJNYW5ldHRlR2FtZXBhZFByb3ZpZGVyIGRl
dmljZSAlcCBhZGRlZCIsIGRldmljZSk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9y
TmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPE1h
bmV0dGVHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKKworICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpIDw9IGluZGV4KQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEp
OworCisgICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGdhbWVwYWQuZ2V0KCk7CisgICAgbV9n
YW1lcGFkTWFwLnNldChkZXZpY2UsIFdURk1vdmUoZ2FtZXBhZCkpOworCisgICAgaWYgKCFtX3No
b3VsZERpc3BhdGNoQ2FsbGJhY2tzKSB7CisgICAgICAgIC8vIFRoaXMgYWRkZWQgZGV2aWNlIGlz
IHRoZSByZXN1bHQgb2YgdXMgc3RhcnRpbmcgdG8gbW9uaXRvciBnYW1lcGFkcy4KKyAgICAgICAg
Ly8gV2UnbGwgZ2V0IG5vdGlmaWVkIG9mIGFsbCBjb25uZWN0ZWQgZGV2aWNlcyBkdXJpbmcgdGhp
cyBjdXJyZW50IHNwaW4gb2YgdGhlIHJ1bmxvb3AKKyAgICAgICAgLy8gYW5kIHdlIGRvbid0IHdh
bnQgdG8gdGVsbCB0aGUgY2xpZW50IGFib3V0IGFueSBvZiB0aGVtLgorICAgICAgICAvLyBUaGUg
bV9jb25uZWN0aW9uRGVsYXlUaW1lciBmaXJlcyBpbiBhIHN1YnNlcXVlbnQgc3BpbiBvZiB0aGUg
cnVubG9vcCBhZnRlciB3aGljaAorICAgICAgICAvLyBhbnkgY29ubmVjdGlvbiBldmVudHMgYXJl
IGFjdHVhbCBuZXcgZGV2aWNlcy4KKyAgICAgICAgbV9jb25uZWN0aW9uRGVsYXlUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKKworICAgICAgICBMT0coR2FtZXBhZCwgIkRldmljZSAlcCB3YXMgYWRk
ZWQgd2hpbGUgc3VwcHJlc3NpbmcgY2FsbGJhY2tzLCBzbyB0aGlzIHNob3VsZCBiZSBhbiAnYWxy
ZWFkeSBjb25uZWN0ZWQnIGV2ZW50IiwgZGV2aWNlKTsKKworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdKTsKK30KKwor
dm9pZCBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VEaXNjb25uZWN0ZWQoTWFuZXR0ZURl
dmljZSogZGV2aWNlKQoreworICAgIExPRyhHYW1lcGFkLCAiTWFuZXR0ZUdhbWVwYWRQcm92aWRl
ciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFu
ZXR0ZUdhbWVwYWQ+IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZp
Y2UpOworICAgIEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICAvLyBBbnkgdGltZSB3ZSBn
ZXQgYSBkZXZpY2UgcmVtb3ZlZCBjYWxsYmFjayB3ZSBrbm93IGl0J3MgYSByZWFsIGV2ZW50IGFu
ZCBub3QgYW4gJ2FscmVhZHkgY29ubmVjdGVkJyBldmVudC4KKyAgICAvLyBXZSBzaG91bGQgYWx3
YXlzIHN0b3Agc3VwcHJlc3NpbmcgY2FsbGJhY2tzIHdoZW4gd2UgcmVjZWl2ZSBzdWNoIGFuIGV2
ZW50LgorICAgIG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOworCisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFk
RGlzY29ubmVjdGVkKCpyZW1vdmVkR2FtZXBhZCk7Cit9CisKK3Vuc2lnbmVkIE1hbmV0dGVHYW1l
cGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgp
ICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisKKyAgICByZXR1
cm4gaW5kZXg7Cit9CisKK3ZvaWQgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcjo6Y29ubmVjdGlvbkRl
bGF5VGltZXJGaXJlZCgpCit7CisgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyA9IHRydWU7
CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5z
ZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMobV9nYW1lcGFkVmVjdG9yKTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPE1hbmV0dGVHYW1lcGFkPiBNYW5ldHRlR2FtZXBhZFByb3ZpZGVyOjpyZW1vdmVH
YW1lcGFkRm9yRGV2aWNlKE1hbmV0dGVEZXZpY2UqIGRldmljZSkKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWFuZXR0ZUdhbWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7
CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICBhdXRvIGluZGV4ID0gbV9nYW1lcGFkVmVjdG9y
LmZpbmQocmVzdWx0LmdldCgpKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisgICAgICAg
IG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBudWxscHRyOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFu
ZXR0ZUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzM2M2EzYjdlMjU4
MjZlOGJjMmQzZGNkZWRmMDAyOWY3OTMyZjVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuaApA
QCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8bGlibWFu
ZXR0ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYW5ldHRlR2FtZXBhZDsKK2NsYXNz
IEdhbWVwYWRQcm92aWRlckNsaWVudDsKKworY2xhc3MgTWFuZXR0ZUdhbWVwYWRQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBHYW1lcGFkUHJvdmlkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1hbmV0dGVHYW1lcGFkUHJvdmlkZXIpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3ll
ZDxNYW5ldHRlR2FtZXBhZFByb3ZpZGVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWFuZXR0ZUdh
bWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dh
bWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0
b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBW
ZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVy
biBtX2dhbWVwYWRWZWN0b3I7IH0KKworICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKE1hbmV0dGVE
ZXZpY2UqKTsKKyAgICB2b2lkIGRldmljZURpc2Nvbm5lY3RlZChNYW5ldHRlRGV2aWNlKik7CisK
K3ByaXZhdGU6CisgICAgTWFuZXR0ZUdhbWVwYWRQcm92aWRlcigpOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPE1hbmV0dGVHYW1lcGFkPiByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKE1hbmV0dGVEZXZp
Y2UqKTsKKworICAgIHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKyAg
ICB2b2lkIGNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQoKTsKKworICAgIFZlY3RvcjxQbGF0Zm9y
bUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CisgICAgSGFzaE1hcDxNYW5ldHRlRGV2aWNlKiwg
c3RkOjp1bmlxdWVfcHRyPE1hbmV0dGVHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAgIGJvb2wg
bV9zaG91bGREaXNwYXRjaENhbGxiYWNrcyB7IGZhbHNlIH07CisKKyAgICBHVW5pcXVlUHRyPE1h
bmV0dGVNb25pdG9yPiBtX21vbml0b3I7CisgICAgUnVuTG9vcDo6VGltZXI8TWFuZXR0ZUdhbWVw
YWRQcm92aWRlcj4gbV9jb25uZWN0aW9uRGVsYXlUaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5k
ZXggN2Q3ODQ1MDNmZWRhNWE5YTVmOTJmMmEyYzY2ZWQ0MjAzMzYwYzJjNS4uMmQ1YWFjOTUzYWJl
ZjIzZWE1ZDAyMzNhZDBhNWJlOWFhNTk4NWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0yMjIs
NiArMjIyLDkgQEAgVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9u
R3RrLmNwcAogCiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAorVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBh
ZFByb3ZpZGVyR3RrLmNwcAorVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92
aWRlck1hbmV0dGUuY3BwCisKIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblBy
b3ZpZGVyLmNwcAogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdh
bWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcAppbmRleCBmNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFl
Y2ZkMTBjLi5jNmRkNGUwYjQyODY1NDAzZmU3ZTA2OTE5MTU2NTk4OWExMmRkZGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIFZlY3RvcjxHYW1lcGFkRGF0YT4gVUlHYW1lcGFkUHJv
dmlkZXI6OnNuYXBzaG90R2FtZXBhZHMoKQogICAgIHJldHVybiBnYW1lcGFkRGF0YXM7CiB9CiAK
LSNpZiAhUExBVEZPUk0oQ09DT0EpCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE1BTkVU
VEUpCiAKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQ
cm92aWRlcigpCiB7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1dCgpCiB7CiB9CiAKLSNlbmRpZiAvLyAhUExBVEZP
Uk0oTUFDKQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShNQU5FVFRFKQogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2Ft
ZXBhZFByb3ZpZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvZ3Rr
L1VJR2FtZXBhZFByb3ZpZGVyR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODc3NzQ3ZjBhOGIwZmJlNDli
Nzk4M2VmYmUwNjcwYmE5ZGFkMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9ndGsvVUlHYW1lcGFkUHJvdmlkZXJHdGsuY3BwCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2Ft
ZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIldlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIFdlYlBhZ2VQcm94eSogZ2V0
V2ViUGFnZVByb3h5KEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIGlmICghd2lkZ2V0IHx8ICFH
VEtfSVNfQ09OVEFJTkVSKHdpZGdldCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
aWYgKFdFQktJVF9JU19XRUJfVklFVyh3aWRnZXQpKQorICAgICAgICByZXR1cm4gZ3RrX3dpZGdl
dF9pc192aXNpYmxlKHdpZGdldCkgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2lkZ2V0KSkgOiBudWxscHRyOworCisgICAgR1VuaXF1ZVB0cjxHTGlzdD4g
Y2hpbGRyZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUih3aWRnZXQp
KSk7CisgICAgZm9yIChHTGlzdCogaXRlciA9IGNoaWxkcmVuLmdldCgpOyBpdGVyOyBpdGVyPSBn
X2xpc3RfbmV4dChpdGVyKSkgeworICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiBwcm94eSA9IGdl
dFdlYlBhZ2VQcm94eShHVEtfV0lER0VUKGl0ZXItPmRhdGEpKSkKKyAgICAgICAgICAgIHJldHVy
biBwcm94eTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1dlYlBhZ2VQcm94eSog
VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCkK
K3sKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiB0b3BsZXZlbHMoZ3RrX3dpbmRvd19saXN0X3RvcGxl
dmVscygpKTsKKyAgICBmb3IgKEdMaXN0KiBpdGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBp
dGVyID0gZ19saXN0X25leHQoaXRlcikpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjp3aWRnZXRJ
c09uc2NyZWVuVG9wbGV2ZWxXaW5kb3coR1RLX1dJREdFVChpdGVyLT5kYXRhKSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBHdGtXaW5kb3cqIHdpbmRvdyA9IEdUS19XSU5ET1co
aXRlci0+ZGF0YSk7CisgICAgICAgIGlmICghZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMo
d2luZG93KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChXZWJQYWdlUHJv
eHkqIHByb3h5ID0gZ2V0V2ViUGFnZVByb3h5KEdUS19XSURHRVQod2luZG93KSkpCisgICAgICAg
ICAgICByZXR1cm4gcHJveHk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9tYW5ldHRlL1VJR2FtZXBhZFByb3ZpZGVyTWFu
ZXR0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRkMmNhYjI4MGE2NWE1ODQ0ZDQ4NzJiYjY5NTIzYzZmNzcz
MDQ1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
bWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZFByb3Zp
ZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTWFuZXR0ZUdhbWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXRE
ZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkKK3sKKyAgICBpZiAoR2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5pc01vY2tHYW1lcGFkUHJvdmlkZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
R2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihNYW5ldHRlR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKSk7Cit9CisKKyNpZiAhUExBVEZPUk0oR1RLKQorV2ViUGFnZVByb3h5KiBV
SUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5wdXQoKQor
eworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlk
ZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCgpCit7Cit9CisKK3ZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKQoreworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kTWFu
ZXR0ZS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kTWFuZXR0ZS5jbWFrZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ODM0YzBhMjQ0MWE2YWEyMzlhNjA0YjE5MWFjNjdiOWRlNzRmODhlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL2NtYWtlL0ZpbmRNYW5ldHRlLmNtYWtlCkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjWz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Wy5yc3Q6CitGaW5kTWFuZXR0ZQorLS0tLS0t
LS0tLS0KKworRmluZCBNYW5ldHRlIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KKworSW1wb3J0ZWQg
VGFyZ2V0cworXl5eXl5eXl5eXl5eXl5eXgorCitgYE1hbmV0dGU6Ok1hbmV0dGVgYAorICBUaGUg
TWFuZXR0ZSBsaWJyYXJ5LCBpZiBmb3VuZC4KKworUmVzdWx0IFZhcmlhYmxlcworXl5eXl5eXl5e
Xl5eXl5eXgorCitUaGlzIHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIHlv
dXIgcHJvamVjdDoKKworYGBNYW5ldHRlX0ZPVU5EYGAKKyAgdHJ1ZSBpZiAodGhlIHJlcXVlc3Rl
ZCB2ZXJzaW9uIG9mKSBNYW5ldHRlIGlzIGF2YWlsYWJsZS4KK2BgTWFuZXR0ZV9WRVJTSU9OYGAK
KyAgdGhlIHZlcnNpb24gb2YgTWFuZXR0ZS4KK2BgTWFuZXR0ZV9MSUJSQVJJRVNgYAorICB0aGUg
bGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCB0byB1c2UgTWFuZXR0ZS4KK2BgTWFuZXR0ZV9JTkNM
VURFX0RJUlNgYAorICB3aGVyZSB0byBmaW5kIHRoZSBNYW5ldHRlIGhlYWRlcnMuCitgYE1hbmV0
dGVfQ09NUElMRV9PUFRJT05TYGAKKyAgdGhpcyBzaG91bGQgYmUgcGFzc2VkIHRvIHRhcmdldF9j
b21waWxlX29wdGlvbnMoKSwgaWYgdGhlCisgIHRhcmdldCBpcyBub3QgdXNlZCBmb3IgbGlua2lu
ZworCisjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09XQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2No
ZWNrX21vZHVsZXMoUENfTUFORVRURSBJTVBPUlRFRF9UQVJHRVQgbWFuZXR0ZS0wLjIpCisKK2lu
Y2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitmaW5kX3BhY2thZ2VfaGFuZGxl
X3N0YW5kYXJkX2FyZ3MoTWFuZXR0ZQorICAgIEZPVU5EX1ZBUiBNYW5ldHRlX0ZPVU5ECisgICAg
UkVRVUlSRURfVkFSUyBNYW5ldHRlX0lOQ0xVREVfRElSIE1hbmV0dGVfTElCUkFSWQorICAgIFZF
UlNJT05fVkFSIE1hbmV0dGVfVkVSU0lPTgorKQorCitpZiAoVEFSR0VUIFBrZ0NvbmZpZzo6UENf
TUFORVRURSBBTkQgTk9UIFRBUkdFVCBNYW5ldHRlOjpNYW5ldHRlKQorICAgIGFkZF9saWJyYXJ5
KE1hbmV0dGU6Ok1hbmV0dGUgSU5URVJGQUNFIElNUE9SVEVEIEdMT0JBTCkKKyAgICBzZXRfcHJv
cGVydHkoVEFSR0VUIE1hbmV0dGU6Ok1hbmV0dGUgUFJPUEVSVFkKKyAgICAgICAgSU5URVJGQUNF
X0xJTktfTElCUkFSSUVTIFBrZ0NvbmZpZzo6UENfTUFORVRURQorICAgICkKK2VuZGlmICgpCisK
K21hcmtfYXNfYWR2YW5jZWQoTWFuZXR0ZV9JTkNMVURFX0RJUiBNYW5ldHRlX0xJQlJBUlkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCmluZGV4IDE3YTRhYWQyOWRlMTkyMjNkOWY3ZjkzOTM5ZDk5MWViOTA4
NDg5ZGEuLjc1NzBmYmNkZWQzNjQ2ZDFhYzcyZDNiNjhiZGRjMjkyYTg3NTNmMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCkBAIC0xNzcsNiArMTc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FTkNSWVBURURfTUVE
SUEgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9GRikKK1dFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9HQU1FUEFEIFBSSVZBVEUgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dQVV9QUk9DRVNTIFBSSVZBVEUg
JHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQ
UklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCkBAIC0yNDQsNiArMjQ1LDE0
IEBAIGlmIChVU0VfV1BFX1JFTkRFUkVSKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCitpZiAo
RU5BQkxFX0dBTUVQQUQpCisgICAgZmluZF9wYWNrYWdlKE1hbmV0dGUgMC4yLjQgUkVRVUlSRUQp
CisgICAgaWYgKE5PVCBNYW5ldHRlX0ZPVU5EKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9S
ICJsaWJtYW5ldHRlIGlzIHJlcXVpcmVkIGZvciBFTkFCTEVfR0FNRVBBRCIpCisgICAgZW5kaWYg
KCkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUFORVRURSBUUlVFKQorZW5kaWYg
KCkKKwogaWYgKEVOQUJMRV9YU0xUKQogICAgIGZpbmRfcGFja2FnZShMaWJYc2x0IDEuMS43IFJF
UVVJUkVEKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAzYWNhMzkwZTkzNzM1ZTE2Y2Y2Zjg2MTE3YjNkZjE4Nzk1NGY4ZDM0Li40
ZDg0ZDBhNGFmNGIxZmQ1YjVmY2Y0N2ViYWNkZjUxZThmODIxZTBmIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAt
MDUtMjAgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgorCisgICAgICAgIFtH
VEtdIEltcGxlbWVudCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBldmVudHMgb2YgR0FNRVBB
RCBBUEkgd2l0aCBsaWJtYW5ldHRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBpbml0aWFsIEdBTUVQQUQgQVBJ
IHN1cHBvcnQgdG8gdGhlIGd0ayBwb3J0LiBXZSB1c2UgbGlibWFuZXR0ZSwKKyAgICAgICAgYSBz
aW1wbGUgR09iamVjdCBnYW1lIGNvbnRyb2xsZXIgbGlicmFyeSB0byBoYW5kbGUgZ2FtZXBhZCBj
b25uZWN0aW9uIGFuZCBpbnB1dC4KKyAgICAgICAgSW4gcGFydGljdWxhciwgd2UgdXNlIGxpYm1h
bmV0dGUtMC4yLjQgd2hpY2ggaXMgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCBtaW5pbXVtCisgICAg
ICAgIHZlcnNpb24gdG8gYnVpbGQgaW4gYysrLgorCisgICAgICAgICogZ3RrL2poYnVpbGQubW9k
dWxlczoKKwogMjAyMC0wNS0yMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpUGFkT1NdIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDpwZXJjZW50
YWdlIGRvZXNuJ3Qgd29yayBpbiBuYXRpdmUgYXBwcwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2po
YnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggN2ZjZjcwNmQ1
NWFjZTg2YWM0ZDM4NTNkY2NmZDY5ZmZiYTMxYTRjOC4uZjQ5OTVlMDgyOTBhMGI0NDQ3MjFmYzQz
YjUzODQzZWU4NzNiOTBiNiAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwor
KysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgICA8
ZGVwIHBhY2thZ2U9ImxpYnNlY3JldCIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJncGctZXJy
b3IiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGliZ2NyeXB0Ii8+CisgICAgICA8ZGVwIHBhY2th
Z2U9Im1hbmV0dGUiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ib3BlbmpwZWciLz4KICAgICAgIDxk
ZXAgcGFja2FnZT0id3BlYmFja2VuZC1mZG8iLz4KICAgICAgIDxpZiBjb25kaXRpb24tc2V0PSJs
aW51eCI+CkBAIC00NDUsNiArNDQ2LDE3IEBACiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgIDwvYXV0
b3Rvb2xzPgogCisgIDxtZXNvbiBpZD0ibWFuZXR0ZSIgbWVzb25hcmdzPSItRGludHJvc3BlY3Rp
b249ZmFsc2UgLUR2YXBpPWZhbHNlIj4KKyAgICA8YnJhbmNoIHJlcG89ImZ0cC5nbm9tZS5vcmci
CisgICAgICAgICAgICBtb2R1bGU9Ii9wdWIvZ25vbWUvc291cmNlcy9saWJtYW5ldHRlLzAuMi9s
aWJtYW5ldHRlLTAuMi40LnRhci54eiIKKyAgICAgICAgICAgIHZlcnNpb249IjAuMi40IgorICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OjRmZTBhNGJlZDZiNGMzYWU3MjQ5ZDM0MTAzMWMyN2IzMmY4
ZDllMGZmYjUzMzdkNzFjYmNlYzcxNjAzNjJjZjciPgorICAgIDwvYnJhbmNoPgorICAgIDxkZXBl
bmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWIiLz4KKyAgICA8L2RlcGVuZGVuY2ll
cz4KKyAgPC9tZXNvbj4KKwogICA8Y21ha2UgaWQ9Im9wZW5qcGVnIj4KICAgICA8YnJhbmNoIHJl
cG89ImdpdGh1Yi10YXJiYWxsIgogICAgICAgICAgICAgbW9kdWxlPSJ1Y2xvdXZhaW4vb3Blbmpw
ZWcvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggZTBjZjc2NGNhYmZlZDcwODMxMTYwZTUwYjdkYzhlMTBkOGRhNzNiZS4u
OTQ4MzA1NGM2Nzg1M2Y3MTlhMzMyMDEzOTdkZDNkM2ZkNDNlMWJmNyAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA1LTIwICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgZXZlbnRzIG9mIEdBTUVQQUQgQVBJIHdpdGgg
bGlibWFuZXR0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBHQU1FUEFEIEFQSSBzdXBwb3J0IHRv
IHRoZSBndGsgcG9ydC4gV2UgdXNlIGxpYm1hbmV0dGUsCisgICAgICAgIGEgc2ltcGxlIEdPYmpl
Y3QgZ2FtZSBjb250cm9sbGVyIGxpYnJhcnkgdG8gaGFuZGxlIGdhbWVwYWQgY29ubmVjdGlvbiBh
bmQgaW5wdXQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZE1hbmV0dGUuY21ha2U6IEFk
ZGVkIHRvIGRldGVjdCBsaWJtYW5ldHRlIGhlYWRlcnMgYW5kIGxpYnMgaW5zdGFsbGVkIGluIGhv
c3Qgc3lzdGVtLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBBZGRl
ZCBhIHByaXZhdGUgZmxhZywgRU5BQkxFX0dBTUVQQUQuCisgICAgICAgICAgT25jZSBsaWJtYW5l
dHRlIGlzIGZvdW5kLCB3ZSBleHBvc2UgYW5vdGhlciBidWlsZCBmbGFnLCBVU0VfTUFORVRURSBm
b3Igb3RoZXIgcG9ydHMuCisKIDIwMjAtMDUtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEs0IGJ1aWxkIHdp
dGggR1RLIDMuOTguNAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>